[1편] SOA와 Service의 정의
[2편] BPM을 통한 서비스 분류하기(계획)
[3편] ESB를 이용하여 Service Enabling 하기(계획)
[4편] SOA 잘 돌리기(계획)
IT 세상은 "SOA"라는 세글자를 외치는 벤더들로 북적이고 있다.

요즘하는 프로젝트는 왠만하면 SOA 기반이다.

어떤것이 SOA 기반인가?

1. Service Oriented 해야한다.
  
2. 비즈니스에 대한 민첩성을 가져야 한다.

3. 재사용성을 가지고 있어야 한다.

등등.....  많은 의미들을 담고 있다.

그럼 여기서 잠깐 SOA의 정의 대해서 정리를 해보자.
관점: SOA란..
비즈니스 경영자 또는 비즈니스 분석가 IT 자산들(기능들)을 구성하고 솔루션을 구현하고 이들을 고객과 파트너에게 노출하는데 사용될 수 있는 서비스 세트이다.
엔터프라이즈 아키텍트 모듈성, 캡슐화, 약결합, 영역의 분리, 재사용, 구성 등, 솔루션의 전체적인 특성을 다루는 아키텍처 원리와 패턴이다.
프로젝트 매니저 거대한 병렬 개발을 지원하는 개발 방식이다.
테스터 또는 품질 보증 엔지니어 전체적인 시스템 테스팅을 모듈화 하고 단순화 하는 방식이다.
소프트웨어 개발자 웹 서비스 같은 표준, 툴, 기술들을 겸비한 프로그래밍 모델이다.

[출처]: SOA를 아키텍처 스타일로서 정의하기

위의 정의 처럼 SOA는 어떤 Role에서 바라보느냐에 따라 각각 다르다.

위에서 나열한 1,2,3 번의 의미는 광범위한 정의라 해야 하겠다.

SOA가 목적하는 바 또는 화두로 떠오르는 된 것은 비즈니스의 변화( 시대의 변화, 사용자의 변화, 소비 구조의 변화등..) 에 IT가 적절하게 대응하지 못하는 데 있다.

이렇게 민첩하지 못한 IT에 날개를 달고자 SOA가 등장한 것이다.

그 의도는 IT의 매래와 발전에 활력소를 제공하지만, 그것을 구체화 시켜야 하는 입장에서는 쉽게 손이 가지 않는다.
첫째, Service 가 무엇인가?
사용자 삽입 이미지

조삼모사



한참 SOA에 대한 고민하던 시절 (지난해로 기억된다.) 필자가 유행하던 조삼모사를 패러디한것이다.

개발자 커뮤니티인 okjsp에도 올렸지만, 별 호응은 없었다..(내심 재미있어서 올렸건만)

이렇듯, 고객도 IT 업체도 무엇이 서비스 인지 확실하게 언급을 못했다.

따라서 Service Oriented가 가능 할 수 있으랴?

그럼 서비스의 특징에 대해서 알아 보자.

서비스는 

"플랫폼에 종속되지 않는 표준 인터페이스를 통해서 기업의 업무를 표현한 Loosely Coupled 하고 상호 조합 가능한 소프트웨어 컴포넌트"

출처 : 조대협님의 JCO 발표자료

[서비스의 특징]
1. Re-usable (재사용성)
   -  Business에 대한 민첩성을 높이기 위해서 Business Process가 추가 또는 변경되었을 때 기존 자원을 활용할 수 있도록 하기 위함.

2. Contract-Based(계약 기반)
   - 서비스 Repository 사용시에 어떤 서비스가 어떤 내용을 가지는에 대한 정보를 알수 있도록 한다.

3. Self Contained and Modular (자급자족해야하고, 모듈화 되어야한다.)
   - 독립성을 확보하기위해 다른 서비스에 의존성을 배제하고, 가용성을 높이기 위해 모듈화 되어야한다.

4. Loosely Coupled (약결합)
   - 기존의 어플리케이션이 강결합(Tightly Coupled) 을 가짐으로 민첩성을 발휘할 수 없었다. 따라서 Service는 조합이 가능하도록 약결합되어야 한다.
  - 구현체에 독립적인 인터페이스를 가져야 한다.

5. Discoverable ( 발견할 수 있어야 한다)
   - Registry에 metadata/ semantic 을 가지고 등록되어야 한다.
   - 위치에 상관없이 찾을 수 있어야 한다.

참으로 까탈스러운 서비스라 하지 않을 수 없다.

하지만, 이 조건을 만족하지 못한다면.... SOA 기반이란 이름으로 구축하더라도.. 그 효능을 찾을 수 없을 것이다.

단, 이러한 서비스는 예전에 CBD 에서 이야기 하는 Component 와는 그 성격과 정의가 다른 것이다.

"WORA(Write once, run anywhere)"라는 개념을 탑재하지 않고 있다는 것이다.

서비스는 각 업무 도메인 별로 그 의미가 다르다는 것이다.


[P.S] 본 내용은 필자의 개인적인 사상에 입각하여 정리한 내용이니, 내용에 대해서 지적해 주시거나,
         태클을 거실분들은 확실히 걸어주시면 감사하겠습니다.
      Service Oriented  |  2007. 3. 14. 17:22



archidream's Blog is powered by Daum