SOA
태그 :
- 개념
- SOA(Service Oriented Architecture)의 정의 - 다양한 비즈니스 환경에서 이 기종 통합 및 loosely coupled 하게 서비스단위를 재사용, 재조립을 가능하게 하는 서비스 지향 아키텍처
I. 비즈니스 관점의 소프트웨어 서비스화, SOA의 개요
가. SOA(Service Oriented Architecture)의 정의
- 다양한 비즈니스 환경에서 이 기종 통합 및 loosely coupled 하게 서비스단위를 재사용, 재조립을 가능하게 하는 서비스 지향 아키텍처
나. SOA의 특징
특징 |
내용 |
약결합 |
서비스간 종속성을 줄이고 프로세스를 단순화 |
상호 운용성 |
약결합 방식이므로 기존의 컴포넌트보다 이기종간 상호운용성이 높음 |
위치 투명성 |
서비스의 물리적인 위치와 무관한 서비스 접근 |
프로세스 중심 |
- 프로세스 서비스를 별도의 구성요소로 두어 통합에 필요한 메시지처리 담당 - 각 애플리케이션 진입 지점을 프로세스 서비스로 단일화하고 업무 프로세스 추적을 가능하게 해줌 |
II. SOA 구성도 및 구성요소
가. SOA의 구성도
- WSDL(Web Service Description Language), UDDI(Universal Description, Discovery and Integration)등의 기술을 통해 인터넷상의 공용 Registry에 등록하고 호출하여 서비스를 이용하는 서비스 기반 아키텍처
나. SOA의 구성요소
구성요소 |
설명 |
Service Broker |
- 서비스 저장 및 관리를 담당하는 중재자 - 서비스에 대한 설명정보 저장 및 검색 엔진 제공 |
Service Provider |
- 서비스 제공자 - 서비스 사용자가 호출시 입력값을 이용하여 그에 해당하는 결과 제공 |
Service Consumer |
- 서비스 제공자에 의해 제공되는 하나 이상의 서비스를 사용 |
다. SOA 핵심기술
구분 |
기술요소 |
설명 |
데이터교환 |
XML |
- 인터넷 데이터 교환기술 |
미들웨어 |
ESB |
- 메시징을 통한 다수의 시스템에 Loosely Coupled한 방식으로 연결 |
서비스호출 |
SOAP |
- Simple Object Access Protocol |
서비스기록 |
WSDL |
- Web Services Description Language |
서비스등록 |
UDDI |
- Universal Description, Discovery and Integration |
III. SOA의 애플리케이션 아키텍처와 구축방안
가. SOA 기술 아키텍처 Layer
Layer |
설명 |
대표기술 |
Presentation |
표현 계층 |
X-Internet, Portal 솔루션 |
Biz-Process |
업무 프로세스 계층 |
BPM |
Service Intermediary |
서비스 중간 계층 |
ESB, Web Service |
Application |
어플리케이션 계층 |
EAI(Adapter) |
Persistency |
데이터 저장 계층 |
|
나. SOA 구성형태에 따른 분류
구성형태 |
설명 |
Primitive SOA |
- Point-to-Point 형태 - 모든 연결이 Node가 증가 할 때 마다 증가되어 복잡한 형태 |
Networked SOA |
- 유연성과 복잡함을 해결하기 위해 Intermediary를 두고 공통된 Bus 형태의 통합을 지원하는 형태 |
Process-Enabled SOA |
- Process Orchestration기반 위에서 동작하는 형태 - SOA-BPM이 결합된 환경 |
다. SOA 구축방안
- SOA의 공정도
구분 |
설명 |
SOA 도입방안수립 |
전반적인 SOA 도입 전략을 수립하고, IT 과제 도출, 과제의 구체적인 구현 방안을 정의 |
요구사항 정의 |
구축될 시스템의 이해관계자로부터 시스템에 대한 요구사항을 도출하여 정리하고 유스케이스 명세서를 도출 |
요구사항 분석 |
유스케이스를 분석하고 실현(Realization)을 토대로 개념적인 도메인 객체모델을 생성 |
아키텍처 수립 |
유스케이스 모델로부터 구현하고자 하는 시스템에 대한 기능,비기능적 요구사항과 품질속성을 식별해서 소프트웨어 아키텍처 후보를 도출하고 각각에 대한 제약사항 및 평가를 실시 |
서비스 식별 |
정련된 후보서비스로부터 서비스를 식별하고 명세하는 단계 |
서비스 설계 |
서비스 명세를 물리 아키텍처에 맞추어 상세 설계하며 서비스 Flow는 ESB로 구현됨 |
구현 |
설계서를 바탕으로 컴포넌트 구현 |
Ⅳ. SOA 연관 기술
가. SOA를 실현하는, ESB의 개요
1)ESB(Enterprise Service Bus)의 정의
- 메시징과 웹서비스, 데이터변형 인텔리전트 라우팅을 결합하여 다양한 어플리케이션의 상호작용을 트랜잭션 무결성으로 연결 및 조절하는 표준기반의 통합 플랫폼
2)ESB의 특징
- 다양한 시스템과 연동하기 위한 멀티프로토콜 지원
- 느슨한 결합(Loosely Coupled)
- 소프트웨어 컴포넌트를 조합하여 서비스를 조립하는 BPM지원
- 이벤트지향적, 표준지향적
3) ESB의 구성도
4) ESB의 구성요소
구분 |
설명 |
어댑터 형태의 레거시 연동 컴포넌트 |
- ESB는 기본적으로 다양한 표준 프로토콜을 어댑터형태로 지원해야 한다. - 통합 개발 환경에서 Pluggable 할 수 있도록 간단한 형태여야 한다. |
메시지의 변환, 가공 |
- 데이터 포맷과 형태 등을 통합 개발 환경 등을 통해 자유롭게 변화하고 가공한다. |
BPM(Business Process Management) |
- 다양한 시스템의 데이터와 애플리케이션과의 연동을 통해 하나의 서비스를 이용한다. |
컨트롤과 모니터링 |
- 여러 과정들은 통합적인 조작과 모니터링이 가능해야 한다. - 모니터링의 대상 : 어댑터 단에서의 진행되고 있는 프로세스의 상태 및 데이터 값 |
통합개발환경 |
- 통합개발환경은 ESB에서 필요한 요소 중 하나이다. |
나. 이기종 간 상호운용성 구현 기술, 웹 서비스(Web Service)의 개요
1) 웹 서비스(Web Service)의 정의
- SOAP, WSDL, UDDI 등의 표준 기술을 이용하여 네트워크에 연결된 다른 컴퓨터간의 분산 컴퓨팅을 지원하는 소프트웨어 및 기술
2) 웹 서비스의 특징
특징 |
설명 |
단순성 |
XML 기반으로 기존의 분산 컴퓨팅 모델에 비해 보다 단순하고 확장이 용이한 모델을 제공 |
상호운영성 |
교환 메시지를 포함한 모든 정보 표현에 잇어 XML을 이용하여, 기존의 웹 환경위에 바로 구현 |
시스템 구조의 유연성 |
메인프레임 또는 서버-클라이언트 방식과 달리 유연한 소프트웨어 구조를 통해 이질적인 데이터 표준을 유연하게 통합/운영 |
사용의 편리성 |
사용자는 소프트웨어를 설치한 후 자연스럽게 서비스를 제공받게 되며, 인터넷을 연결할 수 있는 유/무선 단말기를 통해 장소에 관계없는 접근이 가능 |
통합 환경 제공 |
이질적인 어플리케이션간의 통합 서비스를 제공받을 수 있고 새로운 시스템과의 통합도 자동적으로 이루어진다 |
비용 효율적 |
분산 시스템의 소프트웨어 간 통합을 자동화적으로 이행해줌으로써 IT개발 및 운영비용을 절감 |
3) 웹 서비스의 구성도
- 웹 서비스(Web Services)는 3가지 역할(Service Provider, Service Broker, Service Consumer)에 따른 아키텍처 모델에 따라 구현된 기술
4) 웹 서비스의 구성요소
구성요소 |
설명 |
Service Provider |
특정 서비스 스펙을 구현하여 서비스를 제공한다 |
Service Broker (Service Registry) |
서비스 등록 및 검색, 저장, 관리를 통해 Service Provider가 제공하는 서비스를 Service Consumer에게 연결한다.. |
Service Consumer (Service Requester) |
Service Broker를 통해 특정 서비스를 찾아서 Service Provider의 서비스를 요청하고 사용한다. |
5) 웹 서비스의 주요 기술 요소
기술 요소 |
설명 |
UDDI
|
- Universal Description, Discover and Integration - 필요한 서비스를 찾을 수 있는 웹 서비스 레지스트리 (서비스 등록, 검색) - 웹 서비스와 비즈니스를 발행(publish)/검색(Find)하기 위한 기술적인 스펙 - UDDI데이터 범주
|
WSDL |
- Web Services Description Language - 웹 서비스를 표현하고 기술하는 언어 (서비스 표현) - 웹 서비스의 공개 인터페이스를 설명하기 위한 XML문법 - 공개 인터페이스
- WSDL은 XML 메시지 시스템에 꼭 필요한 것은 아니지만 SOAP 메시지를 기술하기 위한 빌드인 익스텐션(built-in extensions)을 포함하고 있다. |
SOAP |
- Simple Object Access Protocol - 웹 서비스에서 사용되는 보편적이며 확장성 있는 메시지 프로토콜 (데이터 통신 프로토콜) - 분산 컴퓨터 환경에서 정보를 교환하기 XML 기반 프로토콜 - 객체의 수요자와 제공자 사이의 메시징 프로토콜을 정의 - 플랫폼에 독립적인 단순한 XML 기반 포맷 - SOAP 메시지는 웹의 기본 프로토콜인 HTTP 를 통하여 전송되는데, 웹 서버의 default port 인 80 포트를 이용하여 모든 서버에 접근이 가능 |
다. REST의 개요
1) REST(Representational State Transfer)의 정의
- 인터넷상에 존재하는 리소스와 이에 대한 주소를 지정하는 HTTP와 XML 기반의 웹 통신기술
- 도메인 지향 데이터를 HTTP위에서 SOAP이나 쿠키기를 통한 세션 트래킹 같은 부가적인 전송 레이어 없이 전송하기 위한 간단한 인터페이스
2) REST의 특징
- 무상태(statelessness) : 웹서비스 제공 서버측에서 클라이언트의 상태정보를 저장, 관리하지 않는 것을 의미
- 리소스 중심의 표현, 전달, 접근방식의 특성으로 인해 리소스기반 아키텍처(ROA)라고 함
3)REST의 구성도
라. 시맨틱 웹서비스
1) 시맨틱 웹서비스의 정의
- 인터넷에 개발된 수많은 웹서비스를 보다 의미적으로 활용하기 위하혀 시맨틱 기술을 도입한 웹서비스
2) 시맨틱 웹서비스 기술
- 웹 서비스에 다양한 의미 정보를 부가하여 궁극적으로 의미적 검색을 통한 동적 서비스 조합을 실현하는데 필요한 요소 기술
마. 매쉬업
1) 매쉬업(Mashup)의 정의
- 웹(Web)으로 제공하고 있는 정보(information)와 서비스(service)를 융합하여 새로운 소프트웨어나 서비스, 데이터베이스 등을 만드는 것을 의미
2) 매쉬업의 특징
- 자료구축의 비용이나 개발비가 거의 들지 않음
3) 자사의 기술을 웹 서비스로서 API를 공개하는 경우가 많아짐에 따라 여기에 독자적 사용자 인터페이스(User Interface)를 융합하여 새로운 서비스를 제공함
바. Web 2.0과 SOA의 융합체, WOA의 개요
1) WOA(Web-Oriented Architecture)의 정의
- 월드와이드웹을 이루는 HTTP를 사용하면서도 SOAP보다 간단한 REST 프로토콜을 사용하여 URI 형태로 참조되면서 웹 서비스를 구현하는 개념
2) WOA의 특징
- 상태정보가 없는 C/S 구조
- 캐시 활용 옵션 : 정보의 반복적인 요청을 캐시에서 직접 응답 처리함
- 클라이언트에서 실행될 수 있는 코드 : 서버의 부하를 줄임
Ⅴ. SOA 2.0
가. Advanced SOA, SOA 2.0의 개요
- SOA에 이벤트기반아키텍처(EDA, Event Driven Architecture) 개념을 추가
나. EDA의 개요
1) EDA(Event Driven Architecture)의 정의
- 분산된 시스템 간에 이벤트를 생성, 발행하고 발행된 이벤트를 필요로 하는 수신자에게 전송, 필요에 따라 처리하는 시스템 아키텍처
2) EDA의 구성요소
- Event generator : 시스템 내,외부의 상태 변화를 감지하여 표준화된 형식의 이벤트를 생성
- Event channel : 이벤트를 필요로 하는 시스템까지 발송
- Event processing engine : 수신한 이벤트를 식별, 적절한 처리를 함. 때에 따라 이벤트 처리의 결과로 또 다른 이벤트를 발생시킬 수 있음.
3) EDA와 SOA의 차이점
- SOA : 동기화된 요청/응답 방식
- EDA : 비동기화된 배포/구독 방식
Ⅵ. 서비스간의 인터랙션을 진작하는 대표적 SOA기술, OSGi 의 개요
가.OSGi(Open Service Gateway Initiative)의 정의
- 가정 정보 기기 및 보안 시스템과 같은 인터넷 장비의 표준 연결 방법을 위해 OSGi 단체가 제안한 산업체 표준안
나. OSGi의 특징
1) SW Component Management : 자바 기반의 컴포넌트 구조로서 J2ME, J2SE, J2EE에서 작동이 가능한 환경
2)Remote Component Management : 번들을 업데이트하거나 업그레이드를 원격에서 관리하고 제어할 수 있음(번들: 배포, 관리의 기본단위로 OSGi에서 수행되는 SW 컴포넌트의 리소스)
다. OSGi의 구성도
라. OSGi의 구성요소
구성요소 |
설명 |
Class Loading |
OSGi의 근간이 되는 번들을 정의하는 레이어 |
Life Cycle |
번들이 어떻게 동적으로 설치되고 관리될 수 있는지 정의하는 레이어 |
Service |
서비스 레지스트리를 통해 서비스를 등록하고 찾을 수 있도록 지원하는 레이어 |
Security Layer |
자바의 보안 구조에 기반하고 있으며 패키지나 서비스에 대한 권한을 관리하거나 Digitally Signed JAR파일에 대한 지원을 해주는 레이어 |
JVM(Execution Environment) |
번들이 실행될 수 있는 환경을 말하는 것으로 J2ME, J2SE등과 같은 환경 |
Bundles |
왼쪽 위에 있는 Bundles는 레이어 개념이 아닌 OSGi의 레이어를 통하여 작성되고, 프레임워크에 올려진 실제 번들을 의미 |
Ⅶ. SOA 연관 기술 비교
가. SOA와 Web 2.0
구분 |
SOA |
Web 2.0 |
서비스모델 |
웹 서비스 |
웹 서비스 |
서비스 개념 |
협의의 웹 서비스 |
관의의 웹 서비스 |
표준 기술 |
WSDL, UDDI, SOAP, BPEL |
HTTP, XML, RSS, REST |
메시지 교환 프로토콜 |
SOAP기반에 국한 XML을 통한 메시지 교환 |
프로토콜이나 교환 포맷에 독립적 |
재사용성 |
약간 높음 |
매우 높음 |
유용성/순응성 |
조합과 통합 서비스 지향의 원칙 |
단순한 데이터 포멧 간결한 프로그래밍 모델 |
비즈니스 모델 |
BPM(Business Process Management) 자산통합(Asset Integration) 데이터 퓨전(Data Fusion) Legacy자산의 생명주기연장 비즈니스 활동 모니터링 |
롱테일 효과 네트워크 효과 집단 지능 활용 고객 셀프 서비스 |
설계플랫폼 |
Service Layer Service Bus |
AJAX 신디케이션 |
핵심역량 |
기능의 재정비 자산으로서의 데이터 접근 가능성 시스템/데이터 통합 비용절감 비즈니스 기민성(Agility) 온톨로지 소비자 중심의 비즈니스 프로세스 |
서비스로서의 SW(SaaS) 데이터 소스에 대한 통제 공동개발자로서의 사용자 신뢰 플랫폼 독립적 가벼운 UI, 개발모델, 비즈니스 채용 |
나. SOA와 CBD
구분 |
SOA |
CBD |
시스템 관점 |
기업 내 외부 통합관점 |
기업내부 특정시스템 관점 |
프로세스 |
컴포넌트를 연결하는 프로세스에 대한 고려 비중이 큼 |
프로세스보다는 개별 컴포넌트에 집중 |
컴포넌트 특성 |
서비스 컴포넌트 중심 |
기능 컴포넌트 중심 |
추상화 |
상대적으로 높음 |
상대적으로 낮음 |
모델링 기법 |
컨설팅기법, UML, EA |
UML |
목표 |
비즈니스 목표와 연결시키는 것이 목적, 성과 측정과 연계 |
시스템 관점에서 컴포넌트 구축 |
플랫폼 |
이 기종 통합 연계 |
J2EE, .NET 개별적 연계 |
연계방식 |
Loosely Coupling(SOAP) |
Tightly Coupling(Serialization) |
인터페이스 |
공개적인 인터페이스(WSDL활용) |
개별 인터페이스 활용 |
응용기술 |
EAI, Web Service, BPM, 웹 기술 |
WAS 기반 웹 기술 |
다. SOA와 SW Architecture
구분 |
SOA |
SW Architecture |
방식 |
서비스 중심 |
기능 중심 |
특성 |
웹기반의 이기종 플랫폼 간 통합 서비스 제공 |
프로젝트 중심적인 기능 모듈 상호 연동 및 시스템 통합 |
활용사례 |
SOA기반의 웹 서비스 |
SW개발에 활용 |