서비스의 요소
각 서비스에는 서비스 구현, 기본적인 액세스 세부사항 및 규약이 있습니다.
서비스 구현
서비스 구현은 다른 프로그래밍 언어로도 작성할 수 있는 코어 비즈니스 로직입니다. 용어 "서비스" 및 "서비스 구현"은 종종 같은 의미로 사용됩니다. "서비스 구현"이라는 단어는 비즈니스 로직의 세부사항에 초점을 맞출 때 사용됩니다.
기본적인 액세스 세부사항
기본적인 액세스 세부사항은 서비스 구현의 주소 및 바인딩을 포함합니다. 바인딩은 전송 시작 시에 메시지를 형식화하고 전송 종료 시에 메시지의 형식을 해제하는 프로토콜을 식별합니다. 웹 서비스의 프로토콜은 HTTP(Hypertext Transfer Protocol)입니다. 형식화는 요청자로부터 호출 메시지가 발신될 때 수행됩니다. 형식 해제는 메시지가 서비스 위치에 도착하면 수행됩니다. 서비스가 응답을 발행할 때도 형식화가 수행됩니다. 이 경우 형식 해제는 응답이 요청자에게 도착하면 수행됩니다.
- 서비스 위치의 세부사항을 요청자의 비즈니스 로직에 임베드할 수도 있으나 이 사용법에는 유연성이 없습니다. 서비스 위치가 변경되는 경우에는 요청자를 재컴파일하고 다시 배치해야 합니다.
- 대부분의 경우 서비스 위치 세부사항은 요청자가 배치된 사이트의 구성 파일에 의해 제공됩니다. 요청자가 사용 중인 경우에도 구성 파일을 변경할 수 있으며 서비스가 새 위치에 배치되어도 요청자가 서비스에 액세스할 수 있으므로 이 사용법은 더 큰 유연성을 제공합니다.
- 일부 경우에는 위치 세부사항이 런타임 시에 요청자에게 전달되거나 메시지가 SOA 런타임 소프트웨어에 의해 경로 재지정됩니다. 이러한 사용법은 유연하지만 대부분의 목표를 달성하는 데 필요하지 않은 복잡도를 추가합니다.
규약
규약은 서비스의 의도된 동작을 나타내며 이는 구현 세부사항으로부터 독립적입니다. 규약에는 서비스 인터페이스와 서비스 품질(QoS)의 두 가지 요소가 있습니다.
서비스 인터페이스는 요청자와 서비스 간에 전달될 수 있는 데이터에 대한 설명과 서비스가 제공하는 각 조작에 대한 세부사항을 포함합니다. 이 인터페이스는 메시지에 대한 정보, 그리고 "메시지의 형식은 무엇인가?" 및 "컨텐츠에 대한 제한사항은 무엇인가?"와 같은 질문에 대한 답을 포함합니다. 또한 여기에는 요청자와 서비스가 상호작용하는 방식을 나타내는 메시지 교환 패턴에 대한 세부사항 또한 포함되어 있습니다. 이 인터페이스는 서비스가 요청자에게 항상 응답할지를 나타냅니다.
서비스 인터페이스의 일부 요소는 서비스 인터페이스에 명시되어 있지 않습니다. 예를 들어, 주식 시세를 제공하는 특정 서비스는 제출된 주식 기호가 올바르지 않은 경우 오류 메시지를 리턴할 수 있습니다.
인터페이스는 서비스의 요소일 뿐만 아니라 서비스에 대한 상위 레벨 디자인의 요소이기도 합니다. 일반적으로 인터페이스는 구현에 우선하며 인터페이스를 구현한다고 표현됩니다.
- 신뢰성: 예: 서비스를 사용 가능한 시간의 백분율은 얼마인가?
- 보안: 예: 지정된 요청자가 지정된 서비스에 액세스할 수 있도록 권한을 부여받았는지 무엇으로 확인하는가?
- 조정: 예: 요청자가 변경했으나 커미트되지 않았거나, 요청자가 영구적으로 변경한 데이터 변경사항을 서비스가 수정할 수 있는가?
- 메시지 컨텐츠 또는 대상의 런타임 업데이트: 예: 다른 프로토콜을 사용하는 컴퓨터에 전송할 수 있도록 런타임 시에 메시지를 다시 형식화할 수 있는가?
알림
앞서 제시된 자료의 일부는 Enterprise Web 2.0 with EGL(MC Press, 2009; http://www.mc-store.com/5107.html)의 자료입니다.