Home SOA(Service Oriented Architecture)
Post
Cancel

SOA(Service Oriented Architecture)

SOA(Service Oriented Architecture)

업무상의 일 처리에 해당하는 소프트웨어 기능을 서비스로 판단하여 그 서비스를 네트워크상에 연동하여 시스템 전체를 구축해 나가는 방법론 [출처 : 위키피디아]

assets/images/SOA/SOA.png

SOA가 주목받는 이유

  • CORBA등의 기술의 난이도가 높은 문제가 되어 왔으나 현재에는 XML, HTTP나 SOAP 기반의 웹 서비스 기술의 등장으로 서비스 구현의 기술 난이도가 낮아졌기 때문에
  • 점점 확장되어가는 독립적인 업무 시스템으로 인해 통합에 대한 요구가 증가
  • 급격하게 변해가는 비즈니스 환경의 변화에 따라 요구사항을 민첩하게 반영해야할 필요성이 증가

SOA Architecture Model

  1. Fondamental SOA [통합]

    • 가장 기본적인 형태의 SOA로, 비즈니스 서비스와 애플리케이션 서비스만 존재하며 이 서비스들의 조합들은 application front end에서 이루어 진다.
  2. Networked SOA [유연성과 통제 추가]
    • 통합된 SOA 시스템이 시간이 지날수록 크기가 커지고 복잡해지면서 의존성에 의해 서비스간에 수정이 필요한 경우가 발생할 수 있다. 이는 서비스의 변경이 어렵게 되는 원인이 된다. 이를 해결하기 위해서 모든 서비스들의 중앙에 하나의 버스를 통해서 서비스간의 연결 복잡도를 해소하고 서비스의 내용이 변경되었을 때 그 차리를 보강할 수 있게 한다.
    • 중아의 버스 역할을 하는것이 Enterprise Service Bus(ESB) 이고, 여기에는 서비스에 대한 모니터링, Intermediary 서비스 기능 제공, 위치에 대한 투명성 제공을 통해 기본적인 통제와 유연성을 제공한다.

    assets/images/SOA/SOA2.png

  3. Process Oriented SOA [민첩성의 추가]
    • 기업의 업무프로세스가 자주 변화하고 IT 시스템이 민첩하게 반응해야 할 경우 혹은 SOA로 구현해야 하는 기업 업무들에 복잡한 업무플로우가 존재할 경우 이 업무 프로세스들을 BPM(Business Process Management) 기반으로 구현하는 SOA

서비스(Service)

플랫폼에 종속되지 않는 표준 인터페이스를 통해서 기업의 업무를 표현한 Losely coupled하고 상호 조합이 가능한 소프트웨어

서비스의 구성요소

  • 서비스 인터페이스
    • 서비스내의 하나의 업무 기능
  • 서비스 규약
    • 서비스를 사용하기 위한 여러가지 규약을 데이터 포맷이나 변수형 서비스를 호출하기 정
  • 서비스 구현체
    • 서비스에 대한 실제 구현체

서비스의 특징

  1. 수직적 분할 (Vertical Slicing)
    • 애플리케이션을 개발할 때 전체 애플리케이션을 여러 개의 서비스로 나누고 각각의 서비스를 독립적으로 개발하는 것
    • 각각의 서비스가 Data Layer, Business Logic, View에 대한 모듈을 모두 가지고 있음. → 의존성이 최소화
  2. Has standard interface
    • 서비스가 제공하는 인터페이스는 표준 기술로 구현이 되어야 한다.
    • 서비스를 사용하는 사용자가 서비스 규약만을 가지고도 해당 서비스를 호출할 수 있어야 하며, 이는 해당 SOA시스템 안에서 플랫폼이나 기술에 종속되지 않아야 한다.
  3. Loosely Coupled
    • 서로 다른 서비스에 대한 의존성이 최소화 되어야 한다.
  4. Composable
    • 서비스간에 연결 및 조합이 가능해야한다.
  5. Coarse grainned
    • 서비스의 구성단위나 인터페이스의 단위는 업무 단위를 기본으로 해야한다.
  6. Discoverable
    • 서비스에 대한 정보가 검색 가능해야한다.

Reference