산업별 공통 정보 모델(CIM)을 결합하는 SOA 기반 아키텍처 스타일을 사용하여 서비스를 작성할 때, CIM을 확장할 필요가 있다. 이는 CIM이 추상적이고 대부분의 경우 직접 구현에 적합하지 않아 속성, 오브젝트, 관계, 운영, 인터페이스 레벨 등에서 확장이 필요하기 때문이다. 이는 곧 일반적인 SOA 기반 환경에는 핵심 CIM과 확장된 CIM이 있다는 뜻이다. 확장된 CIM은 차례대로 더 약한 CIM과 가장 약한 CIM으로 양분될 수 있다. 각 계층은 시작점의 자체적인 카테고리를 소유하고, 고유한 특성이 있으며, 따로 유지 관리되어야 한다. 서비스에는 일반적으로 이들 세 계층 모두의 엔티티가 포함될 수 있다.
아래의 그림 1은 CIM 기반 SOA 환경 내부의 다양한 계층을 나타낸 것이다. 각 계층에 묘사된 거품은 그 계층으로의 시작점이다. 시작점을 통해 이전 계층 중 어떤 계층에든 액세스할 수 있지만, 해당 계층은 특정 카테고리로 한정되고 위에 있는 다음 계층에만 얽매이지 않는다. 이후 섹션에서는 각각의 시작점을 자세히 설명한다.
그림 1. CIM 계층
핵심 CIM(CORE CIM) 계층은 통신 산업에서는 TeleManagement Forum의 공유 정보 데이터(SID) 모델, 금융 산업에서는 속성 및 관계와 함께 추상 엔티티를 포함하는 IFW라는 IBM 금융 서비스 모델과 같이 업계에서 처음 발표한 모델로 구성된다.
- 이 계층은 다소 정적이지만, 디자이너가 차이를 거의 식별할 수 없는 상황에서 이 계층을 사용자 정의할 수도 있다.
- 데이터 정의 누락, 고유한 이름 ID가 누락된 것이 차이일 수 있다.
- CIM 모델과 같은 모델에서 서비스 스펙의 생성을 지원하는 도구는 이것을 별개의 기본 계층에서 유지 관리함으로써 확장 계층/서비스 운영 계층에 대한 시작점을 허용해야 하지만, 향후 버전의 기본 계층을 바꿀 수 있도록 이 계층을 분리해야 한다.
- 시작점은 핵심 CIM 오브젝트, 오브젝트의 속성, 관계, 오브젝트의 인터페이스를 통해 액세스 권한을 제공한다. 더 약한 CIM은 이런 모든 카테고리에 대한
액세스 권한을 얻을 수 있지만, 가장 약한 CIM 및 서비스 계층은 고유의 인터페이스가 있거나 없는 상태에서 핵심 CIM 오브젝트/관련 인터페이스에 대해서만
액세스 권한을 얻을 수 있다. 핵심 CIM 오브젝트에 대한 액세스 권한을 얻는 전형적인 예로 다음과 같은 것들이 있다.
- TMF 지정 SID에서 더 약한 CIM가
GeographicAddress오브젝트(핵심 CIM)의 "AddressDetails" 속성을 통해 구조화되지 않은 주소 사용(아래의 그림 2 참조) - 아래의 그림 3에 나타낸 것처럼
RetrieveAddressDetailsRequest에서 서비스 운영 액세스 또는 주소(핵심 CIM) 오브젝트에 대한 응답 사용 - 예를 들어, 그림 4에 나타낸 것처럼 TransactionIdentifier 및 System 세부사항 등을 포함하지만 서비스 운영을 통해 연결되는
TransactionDefinition오브젝트와 같은 통합을 위한 요소(가장 약한 CIM)에 대한 액세스 사용. (주: 위 예에서 설명한 것처럼 복잡한 요소가 아닌 경우 가장 약한 CIM에는 기본 요소가 포함될 수 있음)
- TMF 지정 SID에서 더 약한 CIM가
그림 2. GeographicAddress
그림 3. RetrieveAddressDetailsRequest
그림 4. TransactionDefinition
이 계층에는 존재에 대한 순수한 비즈니스적 의미를 전달하는 확장된 CIM 엔티티가 포함된다. 모델러는 항상 서비스 인터페이스에서 이들 요소의 표현을 시각화하고 비즈니스 관점에서 달리 보증하지 않는 한 포함하지 않고 잘 추상화된 용어를 통해 이들을 더욱 명확히 표현할 필요가 있기 때문에, "비즈니스적 의미"라는 말을 강조한다.
더 약한 CIM은 다음 엔티티를 포함할 수 있다.
- 속성
- 오브젝트
- 관계
- IFW와 같은 모델의 인터페이스 및 메소드 레벨
- 이 계층은 동적이며 대부분의 확장된 비즈니스 관련 엔티티를 포함한다.
- 지원 도구는 이 계층을 따로 유지 관리해야 하지만, 서비스 운영 계층을 위한 시작점을 허용해야 한다.
- 시작점은 오브젝트, 메소드, 서비스 운영을 위한 인터페이스를 통해 액세스 권한을 제공한다.
다음은 액세스 권한을 얻기 위한 일반적인 예제다.
- 아래의 그림 5에 나타낸 것처럼 서비스 운영 "SearchPhoneNumberRequest"에서
TelephoneNumber오브젝트에 대한 액세스 사용.
- 아래의 그림 5에 나타낸 것처럼 서비스 운영 "SearchPhoneNumberRequest"에서
그림 5. SearchPhoneNumberRequest
- 서비스 운영을 위한 메소드를 통한 액세스 사용은 아래 그림 6에 표시되어 있다.
이것은 IFW 모델에서 선택한 예제이며, 여기서
InvolvedPartyInformationMaintenance서비스는 더 약한 CIM 계층에서getPassportRegistrationInformation메소드가 필요하다.
그림 6. getPassportRegistrationInformation 메소드
이 최종 계층에는 순수하게 통합 목적으로만 필요한 오브젝트, 속성, 인터페이스 및 메소드가 포함된다. 예를 들면, 메시지 헤더 관련 엔티티, 결과를 제어하기 위해 필요한 엔티티, 서비스 운영 연결 및 더 약한 CIM/핵심 CIM 계층이 있다. 이 최종 계층은 항상 하부의 더 약한 CIM 계층 및 핵심 CIM 계층과 공존해야 하지만, 서비스 운영을 통해 연결된다.
- 이 계층 역시 동적이지만, 더 약한 CIM에 비해 성장률은 매우 낮다.
- 이 계층의 목적은 순수하게 통합 및 제어 함수를 승격하는 엔티티를 보류하는 것이다.
- 하부 계층을 추출하도록 하려면 도구를 통해 이 계층을 따로 유지 관리해야 한다.
- 다음 예제에서와 같이, 시작점에서는 독립형 기본 요소, 오브젝트 또는 인터페이스와 메소드를 통해 서비스 운영에 대한 액세스를 허용한다.
- 그림 7에 나타낸 것처럼
RetrieveAddressResponse서비스 운영에서 컨트롤러 기본 요소인 "returnResult"를 통해 리턴할 결과 개수를 지정하여 액세스 사용.
- 그림 7에 나타낸 것처럼
그림 7. RetrieveAddressResponse
- 아래 그림 8에 나타낸 것처럼 서비스 운영을 위해
TransactionDefinition(가장 약한 CIM 오브젝트)에 액세스할 수 있도록ITransactionDefinition(인터페이스)을 지정하여 액세스 사용. (앞에서 설명한 바와 같이, 가장 약한 CIM은 그 자체로 존재할 수 없고 항상 하부 계층에 따라 존재 여부가 결정되지만, 서비스 운영을 통해 연결됨)
그림 8. ITransactionDefinition
CIM 계층의 논리적 및 물리적 분리는 상위 계층에 의해 정의되는 시작점과 느슨한 결합을 통해 공격에 쉽게 견딜 수 있는 주 엔터프라이즈 에코시스템을 만들기 위한 SOA 기반 환경의 핵심 요소다.
교육
- Bracing
Techniques when Common Information Model Meets the Message Layer in a
Service Oriented Architecture (SOA)(developerWorks, 2009년 4월)를 읽어보면 관련 기술을 살펴볼 수 있다.
- TM Forum's Information Framework (SID)에 대해 살펴보자.
- Common
Information Model에 대해 살펴보자.
- SOA와 웹서비스에서 스킬의 진일보에
필요한 참고자료를 읽을 수 있다.
- developerWorks
기술 행사 및 웹 캐스트를 통해 다양한 IBM 제품 및 IT 산업 주제에 대한 최신 정보를 얻을 수 있다.
- 무료 developerWorks Live!
briefing을 통해 최신 IBM 제품 및 도구에 대한 정보뿐만 아니라 IT 업계의 최신 경향까지도 빠르게 확인할 수 있다.
- Twitter의 developerWorks 페이지를 살펴보자.
- developerWorks
on-demand demos에서는 입문자를 위한 제품 설치 및 설정부터 숙련된 개발자를 위한 고급 기능까지 망라된 다양한 데모를 제공한다.
제품 및 기술 얻기
-
자신에게 가장한 적합한 방법으로 IBM
제품을 평가해 보자. 시험판 제품을 다운로드하거나, 온라인으로 제품을 사용해 보거나, 클라우드 환경에서 제품을 사용하거나,
SOA Sandbox에서
SOA(Service Oriented Architecture)를 효과적으로 구현하는 방법을 배울 수 있다.
토론
- My developerWorks 커뮤니티에 참여하자.
개발자가 운영하고 있는 블로그, 포럼, 그룹 및 위키를 살펴보면서 다른 developerWorks 사용자와 의견을 나눌 수 있다.
