본문 바로가기

Archived(IT)/MSA

SOA(Service Oriented Architecture)

개요

 

SOA vs MSA

 

MSA에 대한 이야기를 할 때, 함께 언급되는 것이 SOA이다.

SOA는 Service Oriented Architecture의 약자로, 가장 큰 핵심은 ESB(Enterprise Service Bus)라는 미들웨어를 통해 서비스들을 호출하여 조합해서 제공하는 것이다.

예를 들어, 쇼핑몰이라는 새로운 서비스를 구축한다고 가정하자. 이 때, 결제 서비스, 상품 검색 서비스, 등록 서비스 등등 기존에 구축해둔 서비스가 존재한다면 이러한 서비스들을 하나의 블록 단위로 보고 재조합(ESB)하여 쇼핑몰이라는 서비스를 고객에게 제공하는 것이다.

 

SOA 개념과 구현된 프로젝트는 이미 1990년대부터 구현되어 왔었다. 그러나 SW의 급격한 변동성과 관련되어 2000년대에 들어서 더욱 주목을 받은 개념이다. 이전 서비스 구축을 위한 표준 인터페이스에 대한 방안으로 제시되었던 CORBA등의 기술의 난이도가 높은 점이 문제가 되어 왔으나 현재에는 XML/HTTP나 SOAP 기반의 웹서비스 기술등의 등장으로 서비스의 구현의 기술 난이도 문제가 해결되었다.

그리고 e비즈니스 환경에서 기존 업무 환경을 전산화 하는데에만 목적이 맞춰져 있어서 각각의 업무별로 독립된 시스템의 형태로 개발이 되어, 이에 대한 통합이 필요하게 되었다. 급격한 비즈니스 환경의 변화에 따라 비즈니스의 요구를 민첩하게 IT시스템에 반영되어야할 필요성이 대두됨에 따라 이에 대한 대안으로 SOA가 대두 되었다.

 

그러나, 최근에는 서비스 조합에 대한 비용이 과도하게 드는 점, 핵심적인 기술인 미들웨어 ESB의 한계점 등과 함께 성능적인 한계점(XML 변환 등)이 드러나면서 조금은 관심도가 줄어든 기술이다.

 

구성요소
  • 서비스 사용자(Service Consumer): '서비스 제공자'에 의해 제공되고 있는 하나 이상의 서비스를 사용.
  • 서비스 제공자(Service Provider): '서비스 사용자'가 호출 시 입력하는 값을 가공하여, 그게 해당되는 결과를 제공. 경우에 따라 '서비스 제공자'는 또 다른 '서비스 제공자'의 서비스를 사용하는 '서비스 사용자'가 될 수 있음.
  • 서비스 레지스트리(Service Registry): 서비스에 대한 설명정보(description)를 저장. '서비스 제공자'는 자신이 제공하고 있는 서비스를 등록하고, '서비스 사용자'는 자신의 원하는 서비스를 발견하여 사용함.

 

서비스
  • 명확한 기능적인 의미를 지닌 소프트웨어 컴포넌트로, 고차원의 비즈니스 개념을 캡슐화 하고 있는 것을 말한다.

 

메시지

SOA를 이루는 두 번째 중요한 개념은 메시지이다. 서비스 제공자와 서비스 사용자는 메시지를 통해 서로 통신한다. 서비스 제공자는 서비스 명세를 통해 자신이 가진 서비스의 인터페이스를 공개하는데, 이 명세 내에는 서비스가 제공하는 기능과 이를 이용하기 위해 사용자와 주고 받아야 하는 메시지의 형식이 정의되어 있다. SOA 관점에서 서비스는 플랫폼 독립적이어야 하므로, SOA에서 정의되는 메시지는 특정 기술에 독립적이어야 한다.

 

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

조대협님의 블로그, 위키백과