
서비스 지향 아키텍처(SOA)는 대규모 컴퓨터 시스템을 구축할 때 백엔드에서 사용되는 아키텍처 중 하나이다. SOA는 애플리케이션의 기능을 비즈니스적 의미를 가지는 기능 단위로 묶어서 표준화된 호출 인터페이스(Rest API 등)를 통해 서비스로 구현하고, 이 서비스들을 기업의 업무에 따라 어플리케이션으로 구성하는 소프트웨어 개발 아키텍처를 의미한다.
서비스(Service)란 플랫폼에 종속되지 않은 표준 인터페이스를 통해 기업의 업무를 표현하는, 느슨하게 결합되고 상호 조합 가능한 독립적인 소프트웨어 컴포넌트를 말한다. 서비스의 주요 특징은 다음과 같다.
수직적 분할은 전체 애플리케이션을 여러 개의 서비스로 나누고 각각의 서비스를 독립적으로 개발하는 것을 의미한다. 이전에는 데이터 계층, 비즈니스 계층, 뷰 계층과 같이 수평적으로 분리했지만, SOA에서는 각각의 서비스가 데이터 계층, 비즈니스 로직, 뷰 모듈을 모두 포함하며, 각 서비스 간의 의존성을 최소화한다.
// 대략적인 구조 예시
├── 정보조회
│ ├── EJB (Enterprise JavaBeans)
│ ├── DAO
│ └── MODEL
├── 신용조회
│ ├── EJB
│ ├── DAO
│ └── MODEL
└── 포인트조회
├── EJB
├── DAO
└── MODEL
서비스가 제공하는 인터페이스는 표준 기술로 구현되어야 하며, 사용자는 서비스 규약만 알면 해당 서비스를 호출할 수 있어야 한다.
서비스 간의 의존성을 최소화하여 독립성을 유지한다.
서비스 컴포넌트들은 서로 연결되고 조합되어 하나의 애플리케이션을 구성할 수 있어야 한다.
서비스의 구성 단위나 인터페이스는 비즈니스 업무 단위를 기준으로 한다.