1. SOA (Service Oriented Architecture)란?
2. SOA에서의 서비스
플랫폼에 종속되지 않는 표준 인터페이스를 통해서 기업의 업무를 표현한 '느슨하게 연결되고(Loosly coupled) 상호 조합 가능한 소프트웨어'이다.
A .서비스 인터페이스
서비스 인터페이스는 서비스 내의 하나의 업무 기능을 이야기한다. 예를 들어 주문 서비스라는 서비스가 있을 때, 이 서비스는 '상품 주문'과 '주문 내용 조회'라는 인터페이스를 가진다.
B. 서비스의 특징
- 수직적 분할
애플리케이션을 개발할 때 전체 애플리케이션을 여러 개의 서비스로 나누고 각각의 서비스를 독립적으로 개발하는 것을 말한다. 이전에는 애플리케이션을 각 데이터계층, 비즈니스 계층, 뷰 계층과 같이 수평적으로 분리하였지만 SOA에서는 다음과 같이 각각의 서비스가 데이터 계층, 비즈니스 로직, 뷰에 대한 모듈을 모두 가지고 있고, 각 서비스 간의 의존성이 최소화 된다.
- 표준 인터페이스 기반
서비스가 제공하는 인터페잇스는 표준 기술로 구현되어야 하며, 서비스를 사용하고자 하는 사람이 '서비스 규약'만을 가지고도 해당 서비스를 호출할 수 있어야한다. 이는 해당 SOA 시스템 내에서 플랫폼이나 기술에 종속되지 않아야 한다.
느슨한 결합 : 의존성의 최소화.
조합 가능 : 서비스 컴포넌트들은 서로 하나의 조합된 형태의 애플리케이션을 구성해야 하기 때문에 서비스 간에 연결 및 조합이 가능해야 한다.
큰 단위의 서비스 분류 : 서비스의 구성 단위나 인터페이스의 단위는 업무 단위를 기본으로 한다.
검색 가능
서비스에 대한 정보를 검색 가능해야 한다. SOA 시스템의 규모가 증가함에 따라 서비스의 중복이 발생할 수 있고, 이를 방지하기 위해 이미 구현된 서비스가 있는지를 검색할 수 있어야 한다.
C. 서비스의 종류
비즈니스 서비스 : 비즈니스적인 의미가 있는 서비스.
중재 서비스 : 업무적인 기능을 가지는 것이 아니라 서비스들을 연결하는 데서 발생하는 차이점을 보완해주는 서비스.
프로세스 지향 서비스 : 비즈니스 서비스들을 조합하여 하나의 업무 프로세스를 구현해내는 서비스로 유저가 필요한 기능을 구현하는데 이용 된다.
애플리케이션 서비스 : 기술적인 서비스로 지극히 예외적인 서비스. 잘 설계된 SOA에서는 애플리케이션 서비스가 존재하지 않는다.
퍼블릭 엔터프라이즈 서비스 : 다른 회사나 외부 SOA 시스템으로 제공되는 서비스이다. 외부로 제공되는 서비스인 만큼 성능, 트랜잭션, 보안에 대한 깊은 고려가 필요하다.
3. SOA 아키텍처 모델
A. Fundamental SOA (펀더멘털 SOA) [통합]
가장 기본적인 형태의 SOA. 비즈니스 서비스와 애플리케이션 서비스만 존재하며 이 서비스들의 조합들은 애플리케이션 프론트엔드에서 이루어진다. 가장 큰 목적은 기존의 시스템을 각각 서비스화 하는 것과 독립되었던 시스템들을 통합하여 하나의 시스템으로 운영한다는 데 있다.
B. Networked SOA (네트워크 SOA) [유연성과 통제 추가]
서비스화하여 통합된 SOA 시스템은 시간이 갈수록 크기가 커지게 되고 서비스 간의 호출 관계는 날이 갈수록 복잡해진다. 또한 서비스의 내용이 변경 또는 보완되어 의존성에 의해 서비스 간의 수정이 필요한 경우가 발생한다. 이러한 문제들로 모든 서비스를 하나의 중앙 버스를 통해 관리하여 서비스 간 연결의 복잡도를 해결하고 중재 서비스를 추가함으로써 서비스의 내용이 변경되었을 때 그 차이를 보강해줄 수 있어야 한다. 다음의 그림에서 중앙 버스 역할을 하는 것이 Enterprise Service Bus(ESB)이다.
C. Process Oriented SOA (프로세스 지향 SOA) [민첩성의 추가]
기업의 업무 프로세스가 자주 변화하고 IT 시스템이 이에 민첩하게 반응해야 하거나 SOA로 구현해야 하는 기업 업무들에 복잡한 업무 플로가 있을 때 이 업무 프로세스들을 BPM(Business Process Management : 비즈니스 프로세스 관리) 기반으로 구현하는 SOA로 고려해 볼 수 있다.
BPM과 함께 생각할 수 있는 것이 BPA(Business Process Analysis : 비즈니스 프로세스 분석)과 BAM(Business Activity Monitoring : 비즈니스 행태 모니터링)이다. BPA는 실제 업무 플로를 BPM으로 구현하기 전에 업무팀엣서 해당 업무 플로에 대한 설계를 하고 이에 대해 시뮬레이션을 할 수 있는 비즈니스 프로세스 분석 설계 도구이다. BPA를 통해서 더욱 완성된 업무 프로세스를 얻을 수 있으며, IT 개발팀에 의해 BPM으로 변환된다.
BPM으로 변환된 업무는 SOA 시스템에 반영되어 실제 운영이 되고 BAM이라는 비즈니스 프로세스 모니터링 도구를 이용하여 반영된 BPM에 대한 평가가 이루어지게 된다. 이 평가를 기반으로 다시 BPA를 이용하여 해당 업무의 최적화를 수행하고 이는 다시 BPM으로 구현된다. 이러한 반복을 통해 업무의 개선과 SOA 시스템이 최적화를 이룰 수 있다.
참조 저서 : 조병욱(조대협), 대용량 아키텍처와 성능 튜닝, 프리렉 출판, 73쪽