📌 Service
SOA를 알기 전, 서비스란 무엇인지 간단하게 설명해보자면,
우리가 컴퓨터에서 실행하는 프로그램, 애플리케이션을 소프트웨어라 한다. 이러한 소프트웨어를 다운로드하여 컴퓨터, 모바일에서 사용을 하곤 하는데,
서비스라는 것은 인터넷, 네트워크를 통해 제공되는 정보 및 기술을 의미한다. 소프트웨어와 함께 제공되어 설치하지 않고도 인터넷을 통해 서비스에 접속하여 이용할 수 있다.
✅ 구조
Service Interface
: 서비스 인터페이스는 서비스를 호출하기 위한 통신 방법이 정의된다. 이용자는 이를 제공받아 서비스를 이용한다.
Service Implementation
: 실질적으로 서비스가 구현되어 있는 곳이다. 서비스 이용자들은 서비스 구현이 어떻게 이루어져있는 지에 대해서는 몰라도 인터페이스만으로도 서비스를 이용할 수 있다.
📌 SOA (Service Oriented Architecture)
서비스 지향 아키텍처란, 비지니스 기능을 서비스로 판단하여, 서비스를 네크워크 상에 연동하여 시스템 전체를 구축해나가는 소프트웨어 개발 방식이다.
구성 요소로는 Service Customer(Requester), Service Provider, Service Registry가 있다.
✅ 구성 요소
Service Customer(Requester)
: 웹 서비스를 이용하는 소비자로, Service Provider에게 특정 서비스를 요청한다.
Service Provider
: 서비스를 생성 및 운영하는 공급자로, Service Customer에게 서비스를 제공한다.
Service Registry
: 서비스를 등록 및 검색하는 중개자로, 서비스에 대한 정보 및 통신 방법을 저장하는 일종의 DB 검색 엔진이다.
SOA에서 서비스는 네트워크 상에서 검색(discover)이 가능해야 하며, 동적으로 바인딩된다.
동적 바인딩(Dynamic Binding)은 컴파일 타임이 아닌 런타임에 실행되는 것을 의미한다. 즉, Service Customer는 서비스를 요청하면, Service Provider와 연결되어 원하는 서비스를 바로 사용할 수 있도록 하는 것을 의미한다.
플랫폼이나 프로그래밍 언어에 상관없이 서비스를 실행할 수 있으므로 상호 운용성이 높다.
서비스는 네트워크 상으로 연결이 가능한 인터페이스를 제공하며, 서비스 이용자들은 이를 통해 서비스를 사용할 수 있다. 따라서 서비스의 위치와 구현 방법에 대해선 알 필요가 없으므로 위치 투명성을 제공받는다.
서비스는 컴포넌트와 같이 독립적인 모듈이며, 조립이 가능하다. 이는 재사용성이 좋다는 뜻으로, 개발 비용을 절감시킬 수 있으며 개발 생산성을 향상시킨다. 또한 각 서비스가 독립적이므로, 문제가 발생하더라도, 해당 문제를 일으킨 서비스만 관리하면 된다.
✅ 특징
- 서비스는 검색 및 발견이 가능하며, 동적으로 바인딩된다.
- 플랫폼 간 상호 운용성이 높다.
- 서비스는 연결이 가능한 인터페이스를 제공한다.
- 서비스는 위치 투명성을 제공한다.
- 서비스는 독립적인 모듈이며, 조립이 가능하다.
- 서비스는 느슨하게 연결된다.
✅ 장점
- 재사용성이 뛰어나 개발 비용 절감 및 개발 생산성 향상
- 위험 관리 용이
이렇게 SOA를 이용한 Web Service에는 XML Web Services와 REST Web Services가 있다.