SOA (Service Oriented Architecture)
- 표준 인터페이스의 개념으로 전체 애플리케이션을 구측하는 소프트웨어 아키텍쳐


1. 정의
- 서로 다른 운영체제와 프로그래밍 언어에 상관없이 애플리케이션 간에 데이터와 프로세스를 교환할 수 있는 소프트웨어 아키텍쳐
- 분산 객체의 형태로 존재하는 컴포넌트들간에 Message 통신을 통해 정보를 교환하는 느슨하게 결합된(Loosely Coupling) 형태의 SW Achitecture.
- Function 단위의 컴포넌트를 확장하여 단위 서비스 수행이 가능한 서비스 컴포넌트를 구축하고 이들 서비스 컴포넌트를 Bus로 연결하여 복합 서비스를 구현하는 Architecture.

2. SOA 의 구성 요소
   가. 서비스 (Service)
      1) 명확한 기능적인 의미를 지닌 소프트웨어 컴포넌트로 고차원의 비즈니스 개념을 캡슐화 하고 있는 것을 말한다.
      2) SOA 관점에서 서비스는 인터페이스를 통해 자신이 가진 비즈니스 프로세스를 처리할 수 있는 컴포넌트로 정의된다. 서비스는 인터페이스와 구현 부분으로 구성된다.
      3) 서비스의 특징
         - 서비스의 인터페이스는 플랫폼에 독립적이다.
         - 서비스는 동적으로 검색될 수 있으며 호출될 수 있다.
         - 서비스는 self-contained 하다. 즉, 자신의 상태를 스스로 유지한다.
   나. 메시지
      1) 서비스 제공자와 서비스 사용자는 메시지를 통해 서로 통신한다.
      2) 메시지는 특정 기술에 독립적이다.

3. SOA model
                                    SOA Model

   가. 서비스 중개자 (Service Registry)
      - 서비스에 대한 설명, 정보를 저장, 검색할 수 있게 한다.
      - 서비스 제공자가 자신이 제공하고 있는 서비스를 등록한다.
      - 서비스 사용자가 원하는 서비스를 검색, 사용할 수 있도록 한다.
   나. 서비스 제공자 (Service Provider)
      - 서비스 사용자가 호출시 입력하는 값을 가공하여 그에 해당하는 결과를 제공한다.
   다. 서비스 사용자 (Service Consumer)
      - 서비스 제공자가 제공하는 하나 이상의 서비스를 사용한다.

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



---------------------------------------------------------------------------
참고 : 
SOA 가 바꿔놓을 세상 (지은희, 소프트웨어정책연구센터@KIPA)