서비스 지향 아키텍쳐는 무엇일까?
토마스 얼에 의해 정의된 SOA의 몇 가지 원리를 이해하고 간략하게 서비스 지향 아키텍쳐에 대해서 이해하자.
서비스는 언제나 상호 운용성(interoperable)이 있다.
그 외 서비스의 설계 원리를 살펴보면
서비스 설계 원리 | 내용 |
1. 서비스 계약 | 서비스는 그 목적과 기능을 하나 이상의 설명 문서에 계약으로써 표현한다. |
2. 서비스의 느슨한 결합(Serivce Loose Coupling) | 서비스는 의존성을 최소화하고 오직 서로에 대해서만 알고 있다. |
3. 서비스 추상화(Serivce Abstraction) | 서비스는 그들의 계약만을 게시하고, 클라이언트로부터 내부 로직을 숨긴다. |
4. 서비스 재사용성(Service Reusability) | 서비스는 좀 더 대단위(coarse-grained)의 큰 서비스를 만들기 위해 다른 사람에게 재사용될 수 있다. |
5. 서비스 자율성(Serivce Autonomy) | 서비스는 하위 환경과 자원을 제어하며 독립적으로 유지되고, 이로부터 서비스는 일관서와 신뢰성을 유지한다. |
6. 서비스 무상태(Serivce Statelessness) | 서비스는 상태 관리의 책임을 소비자(consumer)에게 두며, 이는 서비스 자율성을 위한 제어 과정과 충돌하지 않도록 하기 위해서다. |
7. 서비스 발견성(Service Discoverablity) | 메타데이터로 서비스를 기술함으로써 검색이 가능해지고 서비스 계약을 이애할 수 있는데, 이를 통해 서비스는 (재)사용 가능한 자산이 된다. |
8. 서비스 구성성(Serivce Composability) | 서비스는 크기나 컴포지션의 복잡성과 무관하게, 더 대단위의 서비스를 구성하는 일부가 될 수 있다. |
왼쪽에 서비스의 경계면과 도메인 모델을 핵심에 두고, 설계 원리를 헥사고날 아키텍쳐와 결합한다.
소비자는 REST와 SOAP와 메시징을 이용해 서비스에 접근한다. 하나의 헥사고날 기반 시스템이 다수의 기술적 서비스 엔드포인트를 지원한다는 점을 주의하자.
[참고자료]
'아키텍쳐를 고민하기' 카테고리의 다른 글
JVM 이해하기 - 2 (자바의 바이트 코드) (0) | 2020.11.24 |
---|---|
JVM 이해하기 - 1 (JVM 특징 이해하기) (0) | 2020.11.24 |
안정성:패키지 결합도의 원칙 (0) | 2020.09.05 |
단위 크기:패키지 응집도의 원칙 (0) | 2020.09.05 |
패키지 설계의 원칙 이란 무엇일까? (0) | 2020.09.05 |
댓글