닷넷(.NET)출현 이후 많은 개발자들은 WCF(Window Communication Foundation)
를 단순히 웹서비스의 일종(ASMX[ASP.NET WEB SERVICE] 나 WSE[WEB SERVICE ENHANCEMENT]) 이나 확장형으로 인식을 했습니다.
물론 본인 또한 단순히 그렇게 생각을 했습니다.
그러나 조금씩 무슨말인지 잘 이해가 안되는 책을 조금씩 읽어나가면서, 역시나 라는 생각을
했습니다.
무엇보다 서비스란 말에 대해서 정의를 새로 내려야겠다는 생각이 들었습니다.
SOA 정의에 대해서 한번 알아봐야겠습니다.
SOA는 분산된 컴퓨터들을 이용한 분산(Distributed Computing)이 등장하고 객제지향이나
컴포넌트 기반(Object-Oriented – Component-Based) 의 한계를 극복하기 위해서 각종 이질적인
(Heterogeneous)인 환경 위에 서비스 계층을 만들고 모든 것을 서비스로 추상화함으로서
각종 컴퓨팅을 넘나 들며 통합이 가능하게 한 개념입니다.
SOC: Service Oriented Computing
그 개념을 아키텍쳐로 구체화 한것중 하나가 SOA입니다.
이처럼 SOC와 SOA는 구분되는 용어이며, 기술발전과 기업발전에 따라 그의미가 변하고 있습니다.
SOA : Service Objected Architecture [서비스지향아키텍쳐] 라고 합니다.
대규모 컴퓨터 시스템을 구축할때의 개념으로 업무상에 SoftWare기능을 서비스로 판단하여
그 서비스를 네트워크상에 연동하여 전체를 구축하는 방법론입니다.
업무처리를 빠르게 대처하고 시스템에 반영하고, 많은 클라이언트(수요)에 대응하기 위해서
나온 아키텍쳐입니다.
토마스 얼(Thomas Erl)의 저서 SOA 서비스 지향 아키텍쳐에서 다음과 같이 정의 하고 있다고 하네요.
“SOA는 공개, 기민성, 확장, 연합, 자립성 요소들로 구성된 조합가능한 아키텍쳐, 서비스 품질, 다양한 벤더, 상호운영성, 서비스 발견, 잠재적으로 재사용 가능한 서비스들이 웹서비스로 구현된다”
“SOA는 비즈니스 로직과 기술을 추상화하여, 이 도메인간에 느슨한 결합을 유도한다.”
“SOA는 과거 플랫폼의 진행물로서 전통적인 아키텍처의 특징들을 고스란히 가지고 있으며 명확한 원칙을 가지고 SOE를 지원, 서비스 지향을 촉진한다.”
“SOA는 이상적인 표준화를 지향하며 과거/미래 지향적인 기술지원의 목적을 추구한다.”
서비스 지향 아키텍처의 구성요소
-
서비스
- 명확한 기능적 의미를 지닌 소프트웨어 컴포넌트, 고차원적 비즈니스 개념의 캡슐화이다.
- SOA에서 서비스는 인터페이스를 통해 자신이 가진 프로세스를 가진 컴포넌트로 정의된다.
- 서비스는 인터페이스와 구현부분으로 구성된다.
- 서비스의 특징
- 서비스의 인터페이스는 플랫폼에 독립적이다.
- 서비스는 동적으로 검색될 수 있으며, 호출될 수 있다.
- 서비스는 Self-Contained하다(자신의 상태를 스스로 유지한다)
-
메시지
- SOA 를 이루는 두번째 개념이자, 서비스 제공자와 사용자는 메시지를 통해 통신한다.
- 제공자는 서비스 명세를 통해 자신의 가진 서비스의 인터페이스를 공개한다.
- 이 명세에는 서비스가 제공하는 기능을 이용하기 위한 사용자와 주고 받아야 하는 메시지의 형식이 정의되어 있다.
- SOA관점에서는 서비스는 플랫폼 독립적으므로 SOA에서 정의 되는 메시지는 특정기술에 독립적이어야 한다.
-
서비스 지향 아키텍쳐(SOA)의 특징
- 서비스는 발견이 가능하고 동적으로 바인딩된다.
- 서비스는 컴포넌트와 같이 독립된 모듈이다.
- 서비스의 플랫폼간 상호 운영이 가능하다.
- 서비스는 느슨하게 연결된다.
- 서비스는 네트워크 주소로 접근 가능한 인터페이스를 갖는다.
- 서비스의 위치 투명성을 제공한다.
- 서비스의 조립이 가능하다.
- 서비스는 자기 치유(Self-healing)를 지원한다.