Akashic Records

SOA(Service-Oriented Architecture) 본문

오래된글/소프트웨어공학

SOA(Service-Oriented Architecture)

Andrew's Akashic Records 2018. 4. 19. 13:57
728x90

PLT 12 SOA(Service-Oriented Architecture)

SOA의 정의

서비스란 생산된 재화를 운반, 배급하거나 생산이나 소비에 필요한 노무를 제공하는 것을 의미하며, SOA에서는 하나의 컴포넌트가 다른 컴포넌트와 인터페이스 계약을 통해 제공되는 행동으로 정의한다. SOA란 이 서비스들을 기반으로 하는 소프트웨어 아키텍처로 ‘애플리케이션의 기능들을 사용자에 적합한 크기로 공개한 서비스들의 집합으로 이의 제공, 사용에 관한 정책이나 적용 또는 프레임워크’로 정의할 수 있다. 또한 SOA에서의 서비스는 아래의 추가적인 요구사항을 만족해야만 한다.


- 플랫폼 독립적: SOA에서의 서비스는 표준화된 방법을 통해 모든 환경에서 호출이 가능해야 한다. 이는 서비스 호출 메커니즘이 널리 채택된 표준에 근거해야 함을 의미한다.


- 약 결합 방식: 서비스는 그 이용에 있어 내부 자료 구조나 지식을 필요로 해서는 안 된다.


- 위치 투명성: 서비스는 그들의 정의와 위치 정보를 UDDI와 같은 저장소에 저장하고 여러 클라이언트를 통해 그들의 위치와 상관없이 등록, 호출될 수 있어야 한다.


SOA란 서비스라 불리는 분할된 애플리케이션 조각들을 단위로 약 결합으로 연결하여 하나의 완성된 애플리케이션을 개발하기 위한 소프트웨어 아키텍처라 할 수 있다.


SOA의 구성 요소

논리적으로 SOA에서의 서비스는 서비스 인터페이스구현(implementation)으로 구성된다. 서비스는 일반적으로 소프트웨어에서 구현된 비즈니스 함수이며, 잘 구성된 인터페이스를 통해 외부에 노출된다. 이 서비스 인터페이스는 서비스 요청자가 호출할 수 있는 연산들에 대한 설명이며, 서비스 명세에는 서비스 요청자가 호출할 수 있는 모든 인터페이스가 명시적으로 기술되어야 한다.



  • 서비스 요청자(Service Client): ‘서비스 제공자’에 의해 제공되는 하나 이상의 서비스를 이용

  • 서비스 제공자(Service Provider): ‘서비스 요청자’가 호출 시 입력하는 값을 가공하여, 그에 해당하는 결과를 제공한다. 경우에 따라 ‘서비스 제공자’는 또 다른 ‘서비스 제공자’의 서비스를 사용하는 ‘서비스 사용자’가 될 수 있다.

  • 서비스 레지스트리: 서비스에 대한 기술 정보(description)를 저장, 검색할 수 있게 한다. ‘서비스 제공자’는 자신이 제공하는 서비스를 등록하고, ‘서비스 요청자’는 자신이 원하는 서비스를 검색, 호출할 수 있다.


확장된 서비스 지향 아키텍처

SOA의 기본 아키텍처는 SOAP, WSDL, UDDI 표준을 기반으로 하는 웹 서비스 아키텍처와 일치한다. 하지만, 위의 SOA의 기본 구성 요소는 실세계에서 필요한 서비스 조합과, 트랜잭션 관리, 조정, 보안등과 같은 소프트웨어 개발 시 취급해야 하는 다른 문제들을 충분히 고려하지 않고 있다.

SOA를 하위 계층으로 하여 두 개의 계층을 추가시킨다.


  • 서비스 통합 계층(service composition layer)은 복수의 기존 서비스를 하나의 서비스로 통합하고자 할 때 필요한 역할과 기능들을 포함한다. 이러한 기능에는 조정 기능과, 적합성, 모니터링, QoS 보장이 존재한다. 통합 서비스는 서비스 통합자(service aggregator)에 의해 하나의 컴포넌트로써 이용된다. 또한 서비스 통합자는 하나로 통합한 서비스를 제공함으로써 서비스 제공자가 될 수 있다.

  • 관리 계층으로 서비스의 실제 이용에 필요한 인증과 권한, SLA(Service-Level Agreement)과 서비스 연산에 대한 보증과 지원 기능


SOA의 특징

상호운용성

모듈 간 결합도가 높을수록 한 모듈의 변화가 다른 모듈에 영향을 미치는 파문 효과(ripple effect)를 발생하게 되며, 파문 효과가 클수록 시스템의 유지 보수는 어려워진다. SOA는 표준화된 메시지를 이용하여 서비스를 호출, 이용하는 약결합 방식이므로, 기존의 컴포넌트에서보다 운용 플랫폼에 대한 상호운용성이 높은 특징을 가진다.


위치 투명성

SOA의 서비스는 네트워크 주소로 접근 가능한 인터페이스를 가지고 있으며, 이 네트워크 주소는 서비스 레지스트리를 통해 발견되어진다. 서비스의 이용은 해당 프로세스가 실행 중에 동적으로 발견, 호출될 수가 있다.


프로세스 중심

한 시스템에서 서비스 또는 애플리케이션 통합에 관한 요구는 비즈니스 프로세스의 자동화라는 요구에 의해 발생된다. 실제로 비즈니스 서비스는 타인에게 자신의 서비스를 제공하는 반면 프로세스 서비스는 이들 간의 통합을 위한 공통 인프라를 제공한다. SOA에서는 프로세스 서비스를 별도의 구성 요소로 두어 통합에 필요한 메시지 처리와 서비스 오케스트레이션을 담당하게 하고 있다. 그렇게 함으로써 통합에 참여하는 애플리케이션이 자신의 고유 기능에만 집중할 수 있도록 한다. 이런 구조는 각 애플리케이션들의 서비스 진입 지점을 프로세스 서비스로 단일화하고, 업무 프로세스 추적을 가능하게 해준다. 이를 통해 비즈니스 외적인 예외 사항을 보다 쉽게 처리하게 할 수도 있고, 각 애플리케이션들은 업무 프로세스 변경에 독립적일 수 있게 된다. 프로세스 서비스는 서비스 조합과 관리를 위해 메시지 처리, 메시지 연계(Correlation), 비즈니스 트랜잭션 처리, 영속적 프로세스 관리 기능 지원해야만 한다.


SOA는 컴포넌트 간 상호운용성을 보장함으로써 모듈의 재사용성을 높인다는 면에서는 컴포넌트기반 개발 방법론의 연장선상에 위치하며, ROI(Return of Investment)의 증대와 플랫폼간의 독립성을 보장한다는 면에서 MDA(Model Driven Architecture)[5]와 밀접한 관련을 맺는다.


SOA와 웹 서비스

SOA는 웹 서비스 개념보다 먼저 출현하였으며, 웹서비스보다 포괄적인 개념이다. SOA는 소프트웨어 아키텍처에 가깝고, 웹 서비스는 이러한 아키텍처를 실현하기 위한 기술들의 모음이라고 할 수 있다. SOA는 소프트웨어 아키텍처로, 특정 기술의 집합이 아니며 기술로부터 독립적이다. 비즈니스 환경에서 SOA의 순수한 정의는 “호출 가능한 잘 정의된 인터페이스를 갖는 독립된 기능의 서비스로 정의한 애플리케이션 아키텍처”이다. 반면, 웹 서비스는 기술의 집

합체이며 SOA의 개념을 구체화 한 것이다


SOA의 Best Practice는 Web Service

웹 서비스는 단순한 SOA의 구현만은 아니다. 웹 서비스는 SOA 구현의 Best Practice라 할 수 있다. SOA의 근본적인 개념을 고스란히 실현할 수 있도록 플랫폼 독립적인 프로토콜과 기술을 채택하였기 때문이다.


웹 서비스는 HTTP, XML, SOAP, WSDL, UDDI 등의 표준을 기본 구조로 이용할 하고 있으며 이들 기술은 특정 플랫폼에 독립적이며, 표준화된 기반을 가지 고 있으며, 또한 상호운용성을 충분히 보장하고 있다.


웹 서비스는 XML 표준을 기반으로 개발된 표준화된 XML 메시지를 통해 네트워크 상에서 접근 가능한 연산들의 집합을 기술한 인터페이스로 기존의 웹과는 분명한 차이를 보인다.

  • 단순성: 웹 서비스는 XML 기반이므로 기존의 분산 컴퓨팅 모델에 비해 보다 단순하고 확장이 용이한 모델을 제공한다.

  • 상호운용성: 웹 서비스는 교환 메시지를 포함한 모든 정보 표현에 있어 XML을 이용하며, 기존의 웹 환경 위에 바로 구현할 수 있는 이점을 제공함으로써 이기종 시스템 간의 상호운용성을 극대화하였다.

  • 표준 기반: 웹 서비스는 XML 기술을 기반으로 한 개방형 표준들의 지원을 받는다.

  • 빠른 발전 및 업계의 지원: 웹 서비스는 Microsoft, IBM, SAP, HP, Oracle을 비롯한 주요 IT 업체들이 지원을 받으며, 빠른 발전 속도와 함께 다양한 개발 도구의 지원을 받고 있다.


웹 서비스의 진화

웹 기술의 발전단계로 구분해 볼 때 웹 서비스 기술의 출현 이전을 제 1세대 웹으로, 웹 서비스의 출현 이후를 제 2세대 웹으로 분류할 수 있다


제 1세대 웹

서비스를 이용하기 위해 사용자가 브라우저에 해당 서비스를 제공하는 사이트의 URL을 입력하거나 검색 엔진 등을 이용하여 컨텐츠 또는 웹 어플리케이션에 접근한다. 1세대의 웹은 서비스 지향 이라기보다는 컨텐츠, 애플리케이션 지향적이며, 사용자만이 서비스를 이용한다는 점에 있어 사용자 중심적인 특징을 가진다.


제 2세대의 웹

서비스 지향적인 특징을 보이며, 또한 사용자뿐만 아니라 애플리케이션 간의 통신이 가능하며, 서비스 레지스트리를 이용한 서비스의 검색과 동적 바인딩이 가능하다. 최근에는 온톨로지를 이용한 시맨틱 웹의 구축을 통하여 에이전트 기반의 지능형 검색과 통합을 구현하기 위한 노력이 이루어지고 있다.

1세대 웹

(웹 서비스의 출현 이전)

2세대 웹

(현재의 웹 서비스)

3세대 웹

(시맨틱 웹 서비스)

브라우저 기반의 이용

사용자 중심

컨텐츠,애플리케이션 지향

URL 만을 이용한 수동적 접근

애플리케이션 기반의 이용

사용자,애플리케이션 중심

서비스 지향적

레지스트리를 이용한 검색, 동적 바인딩

에이전트 기반의 이용

사용자,애플리케이션 중심

목적 지향적

온톨로지 기반의 서비스 검색, 관리, 통합


SOA와 웹 서비스의 도입 효과 및 전망

엔터프라이즈 애플리케이션의 개발을 위해서는 기 구축된 애플리케이션들을 필요에 따라 통합하거나 시스템의 변경이 용이해야 한다. 즉, 비즈니스 유연성(agility)을 보장하기 위한 소프트웨어 개발 방법이 요구된다.


SOA는 비즈니스 유연성을 적은 비용으로 보장받으면서 엔터프라이즈 애플리케이션을 구현하기 위해 고안된 아키텍처로 빠른 시장 접근과, 개발 비용의 절감, 끊임없이 변화하는 비즈니스 프로세스에의 용이한 시스템 변경이 가능하다는 점에서 기존의 소프트웨어 아키텍처에 비해 우수한 특징을 가지고 있다. 웹 서비스는 이러한 SOA가 실현 가능하도록 필요한 기반 기술들을 가지는 통합 방법을 제공함으로써 엔터프라이즈 환경에서의 시스템 개발과 통합에 적합하다. 또한 웹 서비스는 최근의 그리드 컴퓨팅의 기반 기술로 활용되면서 그 영역이 플랫폼으로까지 확산되는 경향을 보이고 있으며, 시맨틱 웹과의 연동을 통한 지능형 서비스 검색과 통합 또한 가능할 것으로 기대된다.


728x90
Comments