1. SOA (Service Oriented Architecture)란?

 
기존의 애플리케이션들의 기능들을 비즈니스적인 의미를 가지는 기능 단위로 묶어서 표준화된
호출 인터페이스를 통해서 서비스라는 소프트웨어 컴포넌트 단위로 재조합한 후, 이 서비스들을
서로 조합(Orchestration)하여 업무 기능을 구현한 애플리케이션을 만들어내는 소프트웨어 아키텍처.
 
 - 기존의 시스템이 각각의 독립된 업무 시스템으로 개발되었던 반면 SOA는 기업의 전체 업무가
 하나의 거대한 SOA시스템으로 구성이 된다.
 
  => 각각의 시스템의 기능들을 업무 기준으로 주요 기능들로 묶어서 플랫폼에 독립적인
  인터페이스(예를 들어 XML/HTTP, CORBA, SOAP)를 구현하여 외부로 서비스를 제공한다.
 
 

 2. SOA의 기본적인 개념

 
  새로운 업무를 구현할 때 새롭게 시스템을 신규 개발하는 것이 아니라 이미 제공되어 있는
  기존의 서비스들을 조합하여 하나의 업무를 구현할 수 있다.
 
  소프트웨어의 재사용성과 레고웨어 의 연장선..
 
  급격한 비즈니스 환경의 변화에 따라 비즈니스 요구를 민첩하게 IT시스템에 반영해야 하는
  필요성이 생겼고, 각 업무별로 독립된 시스템의 형태로 개발되어 있는 업무 시스템들을
  통합하기 위해 SOA가 대두되었다.
 
  SOA는 "서비스와 이를 조합하여 애플리케이션을 구성하는 것"
 
 
 
  * "서비스"와 서비스를 구성하는 방법"?
  - 서비스란?
    플랫폼에 종속되지 않는 표준 인터페이스(CORBA나 웹서비스)를 통해서 기업의 업무를 표현한
    Loosely Coupled하고 상호 조합 가능한 소프트웨어!
 
    현대의 SOA에서 서비스의 플랫폼 종속성은 SOAP 기반의 웹서비스 또는 XML을 통해서 구현된다.
    서비스를 표현하는데 있어서 가장 중요한 특징은 "기업의 업무를 표현한다"는 것.
 
  - 서비스 구성
    . 서비스 인터페이스 : EJB나 Java Object의 비즈니스 메서드
    . 서비스 규약 : 서비스를 사용하기 위한 규약, 데이터 포맷, 변수형 서비스를 호출하기 위한 인자,
                         인터페이스 이름 등의 정의되는 Contract
    . 서비스의 구현체 : Implementation
 
    현대의 SOA에서는 대부분이 웹서비스를 표준 인터페이스로 사용하기 때문에 서비스 Contract는
    WSDL로 정의된다.
 
  - Application frontend
   최종 사용자에게 보이는 곳. 일반적인 웹사이트, 기업 포탈, X-인터넷 클라이언트, 4GL클라이언트, ajax, flex 등
 
 
 
 
 
  * SOA 아키텍처
  - Fundamental SOA : 가장 큰 목적은 시스템을 각각 서비스화 하는 것과 독립되었던 시스템을
   통합하여 하나의 시스템으로 운영한다는데 목적.
 
   . 서비스화 : 서비스 인터페이스로 대부분 SOAP기반의 웹서비스를 사용. 솔루션 중에는 이러한 웹서비스를 제공하는
 
     서비스 아답터가 제공된다. (SAP, Siebel아답터, SALT 등)
 
  - Networked SOA (유연성과 통제 추가) : 서비스화해서 통합한 SOA시스템은 시간이 지날수록 덩치가 커진다.
 
   그에 따라 서비스간 호출 관계는 더 복잡해지게 되며, 서비스 내용이 변경됨에 따라 서로 간의 의존성에 의해서
 
   서비스 간의 수정이 필요하게 된다. 이렇게 되면서 서비스의 변화가 더 어려워지게 되는데 결과적으로 업무에 대해
 
   "경직성"을 유발하게 된다. 이것을 해결하기 위해서 모든 서비스들을 중앙에 하나의 버스를 두고 그를 통해 관리함으로써
 
   서비스간 연결의 복잡도를 해소한다. 이 버스가 바로 ESB(Enterprise Service Bus)! ESB는 서비스에 대한 모니터링과
 
   Intermediary 서비스 기능의 제공, 위치에 대한 투명성을 제공한다.
 
 
 
  - Process Oriented SOA (민첩성 추가) : 복잡한 업무 프로세스들을 BPM 기반으로 구현하는 SOA.
 
    각 서비스를 조합하는 하는 것을 BPM으로 구현함으로써 업무의 조합이 별도 코딩 없이 BPM 툴로 이루어지고,
 
    업무프로세스가 바뀌었을 때 BPM 툴에서 업무프로세스를 조정하는 것만으로도 빠르게 비즈니스 요구사항에 대응할 수 있다.
 
 
 
 
 
  * 서비스 구현
 
  - EAI : 시스템 간의 통합을 목적으로 하는 솔루션. SOA와는 다르게 Tightly Coupled되고, IT시스템 간의 통합을 지원한다.
 
    SOA 통합에서 다루기 힘든 트랜잭션이나 보안에 대한 내용을 해결해 준다.
 
    EAI 솔루션에도 IT시스템 간의 연계 흐름을 정의하게 위해서 BPM이 사용된다. (IC-BPM, HC-BPM)
 
 
 
  - UDDI : SOA시스템에서 이미 개발된 서비스를 재사용하기 위해서 서비스를 검색할 수 있어야 하는데 웹서비스에서는 UDDI로 구현한다.