SoaML
SOMA 방법론은 서비스를 식별하고 명세하고 구현하는 전반적인 틀과 절차를 정의합니다. SoaML은 이러한 서비스 모델링 과정에서 사용할 수 있는 구체적인 언어 그리고 표현 방법을 제공합니다. SoaML은 Object Management Group, 즉 OMG에서 개발한 오픈소스 서비스 Specification 방법입니다.
SoaML은 소프트웨어 모델링에 널리 사용되고 있는 Unified Modeling Language(UML)을 기반으로 합니다. SOA 구축을 위한 서비스 모델링과 디자인을 위한 여러 방법을 제공합니다. SoaML의 공식 웹사이트는 www.soaml.org입니다. SoaML을 위한 다양한 도구가 개발되었습니다.
Modeling Capabilities of SoaML
SoaML을 통해서 SOMA 방법론과 유사하게 서비스를 Identify하고 Specify하는 것입니다. 즉, SoaML에서는 서비스 Consumer와 Provider를 명확하게 정의합니다. 그들 간에 서비스를 주고받는 관계를 점진적으로 구체화함으로써 서비스를 식별하고 명세하는 방법을 제공합니다.
SoaML에서 사용하는 표현 방법들의 개요는 다음과 같습니다. 먼저 개념적인 서비스 아키텍처를 표현하는 방법과 서비스 Consumer와 Provider간의 관계를 표현하는 방법이 있습니다. 그리고 이러한 Consumer와 Provider간의 Interaction을 표현하는 방법과 서비스 Consumer와 Provider의 인터페이스를 명세하는 방법이 있습니다.
SOMA 방법론과 유사하게 SoaML에서도 Service Identification, Specification, Realization 과정을 반복합니다. 점진적으로 SOA 아키텍처를 설계하는 프로세스를 제시합니다. 그리고 각 단계에서 사용될 수 있는 다양한 모델과 표현법을 제공합니다.
SoaML Example
이 예에서는 자동차 부품을 공급하는 Dealer Network에서 Business-to-Business, 즉 B2B SOA를 구축하는 상황을 고려합니다. 이 비즈니스 도메인에서는 자동차 수리를 담당하는 자동차 Dealer가 주문을 넣으면 그 주문을 담당하는 Manufacturer, 그 이름이 Acme라고 정의되됩니다.
그러한 Manufacturer가 주문을 받고, 그 주문에 따라서 주문한 부품을 Shipment, Shipping을 담당하는 회사를 통해서 실제 Dealer한테 배송을 하게 되는 관계가 됩니다. 또한 Dealer는 현재 배송 상황들을 Shipper를 통해서 확인합니다. 그럼 이러한 비즈니스 도메인에서 SOA를 구축하기 위해서는 사례를 통해 설명 드렸던 것과 같이 SOA를 도입해서 달성하고자 하는 목표를 먼저 정의합니다.
이 Acme라는 부품공급업체에서 SOA를 도입하려는 그런 목표는 절감된 비용으로 고객에 대한 서비스를 보다 잘 제공합니다. 그러면 이러한 SOA Goal을 달성하기 위해 어떠한 SOA 분석과 모델링 작업을 해야 합니다. 우선 Acme 주변의 Supply Chain을 우리가 잘 이해하기 위해 주요한 비즈니스 파트너들을 파악합니다.
Acme가 과연 이러한 파트너들과 어떠한 서비스를 주고받는를 식별해내는 것이 필요합니다. 또한 이러한 파트너 외에도 Acme 내에 여러 부서들이 있습니다. 그러한 부서들의 구성을 이해하고, 이런 부서들이 Supply Chain에 어떠한 기여를 하는지도 파악합니다.
또한 비즈니스 파트너와 구체적으로 어떠한 정보를 교환하는지도 파악해서 모델링할 필요가 있습니다. 이러한 Acme의 SOA Goal을 달성하기 위해서 서비스와 Interaction 하는 모델을 만들고 SoaML을 사용해서 이러한 것들을 표현합니다.
Define the Community
먼저 Acme가 파트너들과 어떠한 서비스를 주고받으면서 커뮤니티 관계를 맺어 비즈니스를 하는지를 이해하고 표현합니다. 이를 위해서 커뮤니티 서비스 아키텍처라는 것을 모델링합니다. 커뮤니티 서비스 아키텍처는 비즈니스 커뮤니티 참여자, 즉 Participant들이 서비스를 제공하고 소비하는 관점에서 어떠한 역할을 수행하는지 그리고 그러한 역할 수행을 위해 어떠한 요구사항과 서비스를 필요로 하는지를 일반화해서 표현합니다.
그리고 이러한 표현을 통해서 비즈니스 커뮤니티에 어떠한 Participant들이 참여해서 어떠한 서비스를 주고받으면서 어떻게 함께 일하는지를 이해할 수 있습니다. 커뮤니티 서비스 아키텍처는 그림에서 보시는 것처럼 UML의 Collaboration Diagram을 통해서 표현이 됩니다. 이 Collaboration Diagram에서 Stereotype으로는 보시는 것처럼 ServiceArchitecture라고 명시가 됩니다.
이 예에서는 Acme를 중심으로 해서 Dealer Network의 서비스 아키텍처를 보여줍니다. 이 커뮤니티에는 Manufacturer, Dealer, Shipper 등의 세 개의 참여자가 있고, Manufacturer는 Seller로서의 역할, Dealer는 Buyer로서의 역할을 수행합니다. 즉, 이러한 참여자들과 그들의 역할이 서비스 아키텍처에 표현됩니다.
그리고 Dealer와 Manufacturer 사이에는 부품을 주문하고 공급하는 Purchasing Service라는 서비스를 서로 주고받습니다. Manufacturer와 Shipper 사이에는 부품의 배송을 의뢰하고 실제 배송을 하는 Ship이라는 서비스를 주고받는 관계가 있습니다. 또한 Dealer와 Shipper 사이에는 배송 상황을 조회하고 알려주는 Ship Status라는 서비스를 주고받는 관계가 표현됩니다.
그리고 커뮤니티 서비스 아키텍처에는 Comment라는 요소를 추가해서 전체 커뮤니티에 대한 설명을 텍스트로 넣어서 이해하기 쉽게 표현합니다. 이 커뮤니티 서비스 아키텍처에 포함된 서비스들을 더 상세하게 모델링하고 명세하는 과정이 있습니다.
Identify Services to Support the Community
먼저 Dealer와 Manufacturer가 주고받는 Purchasing Service에 대해서 살펴봅니다. 커뮤니티 아키텍처에 포함된 Purchasing Service는 Buyer와 Seller 역할을 수행하는 참여자 간의 Service Contract입니다. 이러한 관계는 보시는 그림에서 Purchasing Service 상세 아키텍처 모델로 표현됩니다.
이 모델에서는 Buyer와 Seller의 역할이 표시되어 있습니다. 이 둘 사이에 어떠한 상세한 서비스가 더 필요한지 표현이 되어 있습니다. 즉, 이 둘 사이에는 주문을 실제로 수행되는 Ordering Service 그리고 주문에 대한 송장을 발부하는 Invoicing Service가 함께 명시됩니다.
이러한 상세한 서비스 모델도 역시 UML Collaboration Diagram으로 표현됩니다. 또한 Purchasing Service가 나누어져서 식별된 Ordering Service를 더 과연 나눌 수 있는지, Decompose할 수 있는지를 분석할 수 있습니다. 이 서비스의 경우에는 주문을 하는 Order의 역할과 주문을 처리하는 Order Processor라는 역할 사이에 추가적인 서비스는 필요 없음을 파악합니다.
이러한 Service 분할을 반복적으로 수행함으로써 점진적으로 이 비즈니스 커뮤니티에 필요로 하는 핵심적인 서비스를 모두 식별해서 도출할 수 있습니다. 그리고 더 이상 Decompose가 되지 않는 서비스의 경우에는 관련된 역할 간의 상세한 Interaction과 정보의 흐름을 UML Sequence Diagram을 사용해서 명세하게 됩니다.
Orderer가 상품주문 정보를 Order Processor에게 보내면 Order Processor는 송장, Invoice를 발부하고, Orderer는 그것에 대해서 확인을 하는 과정이 표현됩니다. 또한 Order Processor는 재고가 있을 경우는 그러한 송장을 보내고요. 재고가 없을 경우에는 주문을 거절하는 그런 절차도 이 Sequence Diagram에 표현되어 있습니다.
Define the inside of each Participant
이러한 서비스의 분할 및 구체화뿐만 아니라 커뮤니티 서비스 아키텍처에 들어있는 Participant들, 참여자들도 분할이 돼서 구체화된 후에 모델링됩니다. 참여자는 그림에서 보시는 것처럼 Participant Architecture라는 것으로 모델링되어서 표현됩니다.
서비스 아키텍처, 커뮤니티 아키텍처와는 다르게 사각형의 모양으로 표현이 되어 있습니다. 그리고 이 Participant Architecture에는 앞서서 도출했던 Invoicing 서비스, Ordering 서비스가 함께 들어있어서 이 Participant가 두 개의 서비스를 제공함이 표현이 되어 있습니다.
또한 이러한 두 개의 서비스를 제공하는 데 있어서 이 Participant의 내부적인 참여자, 즉 Accounting과 Order Processing이라는 참여자가 두 서비스의 제공을 담당함이 명시됩니다. 이 참여자 사이에서도 주문 처리가 완료되어서 송장 발부가 필요하다는 것을 알리는 Order Complete Service가 도출되어 표현됩니다.
이렇게 Participant Architecture가 파악되면 해당 Participant가 사용하는 비즈니스 프로세스들이 함께 명세가 됩니다. Manufacturer가 도출된 서비스들을 통해 부품 주문을 받습니다. 주문을 검토해서 배송하거나 거절하는 과정이 전체적인 비즈니스 프로세스로 명세되어 있습니다.
Define Components From Services Architectures and Contracts
모델링된 Participant Architecture로부터는 서비스 제공을 위해서 구체적으로 어떠한 컴포넌트가 필요한지 도출해서 정의합니다. 여기 그림에 나타난 예에서는 Manufacturer의 내부 참여자인 Accounting의 역할을 수행하기 위해서 Accounting 컴포넌트가 도출돼서 표현됩니다.
이 컴포넌트에서는 주문처리가 끝난 것에 대한 정보를 받기 위한 서비스 인터페이스와 송장을 발부를 위해서 필요로 하는 서비스 인터페이스가 표현되어 있는 것을 확인합니다. 그리고 이러한 과정을 통해서 기업에서 보유하고 있는 레거시 컴포넌트가 활용돼서 서비스 제공이 가능한지에 대한 분석도 가능합니다.
Define Service Interfaces
앞서서 설명 드린 서비스 Decomposition 과정을 반복적으로 수행하면 더 이상 분할되지 않는 서비스가 파악이 됩니다. 이러한 서비스는 실제 레거시 컴포넌트를 활용해서 제공하거나 다른 파트너로부터 제공을 받아야 합니다. 따라서 상세한 명세가 이러한 컴포넌트에 대해서 필요하게 됩니다.
Ordering Service를 제공하는 Oder Processor와 Orderer의 역할을 수행하는 서비스의 인터페이스가 명세되어 있습니다. 즉, OrderProcessorInterface를 통해서는 실제 주문 정보가 전달됩니다. OrderInterface를 통해서는 주문한 부품의 배송 정보나 주문 거절에 대한 정보가 전달됨이 명시됩니다.
Relate Services Architecture to Service Contracts
SoaML을 사용해서 추상적인 커뮤니티 서비스 아키텍처를 모델링 합니다. 그 커뮤니티 내의 서비스와 참여자를 분할해서 구체화하는 과정을 반복함으로써 서비스 Identification, Specification을 점진적으로 이룹니다. 그리고 식별된 서비스와 참여자들을 서로 Associate 함으로써 해당 커뮤니티에서 실제로 필요로 하는 SOA의 모델링을 완결합니다.
그리고 모델링된 서비스와 참여자들을 바탕으로 해당 비즈니스를 위한 전체적인 비즈니스 프로세스를 명세합니다. 이 비즈니스 프로세스에서는 Acme Manufacturer의 파트너인 Dealer와 Shipper 그리고 Acme 내부의 참여자들 간에 어떠한 서비스 호출이 어떠한 절차로 이루어지는지 표현됩니다. SoaML을 사용해서 어떻게 서비스를 식별하고 명세해서 SOA를 모델링합니다.
'SW > 클라우드 서비스 아키텍처' 카테고리의 다른 글
REST API 아키텍처 : 개념, 방법, 개요, 설명 (0) | 2020.06.03 |
---|---|
서비스 기반 아키텍처 스타일 : 방법, 종류, 정의, 개요, 개념 (0) | 2020.06.02 |
서비스 아키텍처 : 서비스 모델의 필요성 : 개념, 정의, 개요 (0) | 2020.05.31 |
서비스 기반 어플리케이션 기반 : 웹 서비스 코디네이션 모델 : 개요, 개념, 정의 (0) | 2020.05.21 |
WSDL : Web Services Desription Language : 개요, 개념, 정의, 예제 (0) | 2020.05.20 |