기술과 감성, 그리고.  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
[SOA] #7. SOA의 특징

SOA는 다음과 같은 주요 특징을 가진다.

  • 서비스는 발견이 가능하고 동적으로 바인딩 된다.
  • 서비스는 컴포넌트와 같이 독립된 모듈이다.
  • 서비스의 플랫폼간 상호 운용이 가능하다.
  • 서비스는 느슨하게 연결된다.
  • 서비스는 네트워크 주소로 접근 가능한 인터페이스를 갖는다.
  • 서비스는 위치 투명성을 제공한다.
  • 서비스의 조립이 가능하다.
  • 서비스는 자기 치유(self-healing)를 지원한다.


발견과 동적 바인딩

SOA는 “서비스의 발견과 동적 바인딩”이라는 개념을 지원한다.
어떤 서비스를 필요로 하는 사용자는 작업 수행 중(runtime)에 필요로 하는 서비스를 찾고, 그것을 사용할 수 있는 것이다.
예를 들어 금융관련 애플리케이션에서 신용카드 기능을 포함시키고자 한다고 하면, 금융 애플리케이션은 레지스트리에서 신용카드 기능을 지원하는 서비스를 조회한 후, 자신에게 맞는 서비스를 골라 동적으로 바인딩하게 된다.


모듈 독립성

SOA에서 사용하는 서비스는 컴포넌트에서와 마찬가지로 독립적인 모듈이다. 각각의 서비스는 독립적으로 개발, 유지, 관리되며, 서로의 작동 자체에 큰 영향을 미치지 않는다.
이런 점은 특정 서비스를 수정했을 때 발생하는 파문 효과(ripple effect)를 최소화 시켜 결합도를 낮추는 중요한 특성이 된다.


상호 운용성

SOA에서의 서비스는 플랫폼에 관계없이 상호운용이 가능하다.
각 서비스는 자신을 호출할 수 있는 인터페이스를 제공하고 있다. 이때 호출이 이루어지는 프로토콜과 호출 메시지의 포맷만 이해 할 수 있다면 서로 다른 플랫폼 위에서 개발, 운영 되는 서비스끼리도 통신이 가능한 것이다.


느슨한 연결

각 모듈을 연결하는 방법에는 밀접한 연결(tightly coupling)과 느슨한 연결(loose coupling)이라는 두 가지 방법이 있다. 뒤에 다시 언급하겠지만 느슨한 연결 방법은 단단한 연결 방법에 비해 모듈간의 결합도를 낮춘다.
결합도가 높을수록 한 모듈의 변화가 다른 모듈에도 영향을 주어 파문 효과(ripple effect)를 일으키게 되는데, 파문 효과가 클수록 시스템을 유지보수는 어려워진다. 파문 효과는 하나에 영향이 생겼을 때 다른 것들에 많은 영향을 끼치는 것이다.
대개의 소프트웨어 구조는 결합도가 낮은 것을 지향하는데, SOA에서는 서비스 사용자와 제공자를 느슨하게 연결해 결합도를 낮출 수 있도록 하고 있다.


네트워크 주소로 접근 가능한 인터페이스

네트워크는 SOA의 개념상 그 핵심에 위치하고 있다.
각 서비스는 네트워크 주소를 통해 접근할 수 있는 인터페이스를 제공 하는데, 서비스 사용자는 서비스를 연결하고 있는 네트워크를 통해 그 서비스를 호출하게 된다.
이렇게 네트워크를 통해 사용자가 서비스를 사용할 수 있게 됨에 따라 각각의 서비스는 불특정한 다수의 사용자에 의해 재사용될 수 있게 되는 것이다.


위치 투명성

위치 투명성은 SOA의 핵심 특징 가운데 하나이다.
서비스 사용자는 레지스트리에서 서비스를 찾아 바인딩 하기 전까지는 자신이 사용할 서비스의 정확한 위치를 알지 못한다. 같은 이유로 서비스 제공자가 임의의 이유로 자신의 서비스 위치를 바꾸게 되더라도, 사용자는 쉽게 바뀐 위치의 서비스를 이용할 수 있게 되는 것이다.
또, 서비스를 제공하는 물리적인 위치가 변경 되더라도 DNS의 유지 보수를 통해, 서비스의 제공과 사용에는 큰 영향을 주지 않게 할 수도 있다.


조립

SOA에서의 각 서비스는 재사용성을 높이기 위해 각각의 기능별로 모듈화 되어 있다.
이렇게 모듈화 된 서비스들은 하나의 완성된 기능을 제공하기 위해 조립되는데, 그 방법에는 다음과 같이 크게 세 가지가 있다.

  • 애플리케이션에서의 조립
  • 서비스 연합(service federation)
  • 서비스 오케스트레이션(service ochestration)

애플리케이션에서 서비스를 조립하는 것은 가장 전통적인 방법으로 서비스와 컴포넌트, 애플리케이션의 로직을 기능에 맞게 작성하는 방법이다. 또, 서비스 연합은 보다 큰 범주의 서비스 안에 관련된 서비스들을 모아 관리하는 방법이다. ‘계좌 조회’, ‘입금’, ‘출금’이라는 서비스는 ‘은행 계좌’라는 서비스에 의해 관리되는 것이 그 예이다.
마지막으로 서비스 오케스트레이션은 비즈니스 프로세스를 사용해 각 서비스의 호출 순서와, 에러처리 등을 제어하는 방법이다.


자기 치유(self-healing)

SOA는 자기 치유를 지원한다. 앞에서도 언급했다시피 SOA에 의해 개발된 소프트웨어는 자신이 사용하고 있는 서비스를 발견하고, 동적으로 바인딩 할 수 있다. 만약 SOA에 의해 개발된 소프트웨어가 사용하고 있는 특정 서비스가 임의의 원인에 의해 정상적인 기능을 할 수 없는 경우, 소프트웨어는 그와 같은 기능을 하는 서비스를 새로 찾아 바인딩 하므로서 자신의 내부에 있는 오류의 원인을 제거할 수 있는 것이다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Tag : , ,


BLOG main image
아직 산을 오르는 이유는 산 만한 사람을 만나지 못했기 때문이고 산 만한 사람이 되지 못했기 때문이다.
 Notice
 Category
분류 전체보기 (163)
일상을 늘어놓다 (43)
나를 찾아 떠나다 (53)
마음을 데우다 (18)
최고를 꿈꾸다 (32)
Resume (16)
 TAGS
FA저널 기고문 FA Jurnal MVC패턴 MVC NGF 프레임워크 Pattern MVVM 잡지
 Calendar
«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
 Recent Entries
동료애, 팀웍(teamwork) 그리고 파트너쉽(P.. (2)
MVC패턴과 그 가계(家系) (4)
[리쿠르트] Trust yourself? or Trust only..
[오감도] S1. His Concern
[패턴] 정의와 의의
[소설] 신의 축복이 있기를, 로즈워터씨
[잡지 기고문] NGF 그리고 프레임워크
이정표
항구
하늘, 초보의 습작품.
 Recent Comments
좋은글 감사합니다...
lee - 14:34
MVVM에서 모델하고..
lee - 13:59
감사합니다 ^^ 정말..
좡이 - 01/12
감사합니다 좋은 글..
디키썬 - 2011
잘 보았습니다~ 페..
김영훈 - 2011
잘보았습니다. 멋진..
주연 - 2011
고맙습니다 ^^
쎄미 - 2011
멋진 글이네요.
dd - 2010
김영하! 아, 정말 말..
Bailar - 2008
어릴때 단양에 다녀..
짱구눈썹 - 2008
 Recent Trackbacks
 Archive
2011/01
2010/08
2010/04
2010/02
2009/03
 Link Site
OnOffMix
전병선, ENSOA
이건복, .NETXPERT
안재우, .NETXPERT
김유철, .NETXPERT
이동범, .NETXPERT
강성재, Microsoft
SmartPlace
류한석, SoftBank
황재선, SoftBank
황순영, Feelanet
정용주, Miracom Inc.
노현종, Miracom Inc.
 Visitor Statistics
Total : 69,392
Today : 11
Yesterday : 38
rss