소프트웨어 아키텍처 - 25(SOA
&
XML-based
Web Service)
SOA & XML-based Web Service
SOA Implementation in Web Services(웹 서비스에서의 SOA)
- 웹 서비스는 SOAP, XML및 HTTP와 같은 표준 프로토콜과 기술을 사용하여 다른 서비스나 클라이언트와 통신
- 웹 서비스는 메시지 중심 서비스
- XML 기반 메시지는 반정형 구조로 되어 있기 때문에 웹 서비스 아키텍처를 보편적으로 접근 가능하게 만듬
Web Service 아키텍처의 기반이 되는 특성
- SOAP (Simple Object Access Protocol)
- 웹 서비스 간 통신을 위한 프로토콜로 사용
- 서버와 클라이언트간의 상호 작용을 가능하게 함
- UDDI (Universal Description and Discovery Protocol)
- 웹 서비스 및 설명 및 섬색을 위한 프로토콜
- 웹 서비스의 위치와 특성을 검색하고 찾을 수 있으며 서비스 검색 및 발견에 사용
- WSDL (Web Services Description Language)
- 웹 서비스의 기능, 메시지 형식, 프로토콜 및 기타 세부 정보를 정의(XML 기반)
- 클라이언트는 WSDL을 통해 웹 서비스의 사용법을 이해하고 상호 작용 가능
Web Service
- 웹 서비스는 네트워크를 통해 상호 운용 가능한 기계 간 상호 작용을 지원하기 위해 설계된 소프트웨어 시스템이다
- 일반적으로 WSDL과 같은 기계 처리 가능한 형식으로 설명된 인터페이스를 가짐
- 다른 시스템은 이 웹 서비스의 설명에 따라 SOAP메시지를 사용하여 상호 작용
- 이 메시지들은 다른 웹 관련 표준과 함께 XML 직렬화를 사용해 HTTP로 전달
Conversion RPC - SOAP
WS Semantics
- 웹 서비스의 의미론적 측면
- 서비스가 어떻게 작동해야 하는지 공유하고 이해해야한다
- 요청자와 제공자 엔티티 간의 상호 작용의 목적 및 결과에 관한 계약이 있어야 함
- 법적 계약 또는 비 공식적 계약이 있어야 함
일반적인 웹 서비스 사용 과정
SOAP
- SOAP의 두 가지 확장, 해석 방식
- Service Oriented Architecture Protocol (SOA Protocol):
- SOAP가 서비스를 호출하거나 서비스 호출 결과를 반영하기 위한 정보를 나타냄
- SOAP 메시지를 통해 서비스를 호출하고 그 결과를 표현
- Simple Object Access Protocol (SOAP Protocol)
- 선택적인 SOAP RPC표현을 사용할때
- SOAP 메시지는 원격 개체에서 메서드 호출을 나타내고 메서드의 인수 목록의 직렬화를 나타내고 로컬 환경에서 원격 환경으로 이동해야 하는 것을 나타냄
- 객체 지향 프로그래밍에서 원격 메서드 호출을 구현하고 객체 간 통신을 가능하게 하는 데 사용
SOAP message
- SOAP 헤더
- SOAP 메시지는 헤더의 보안 정보, 송신자와 수신자의 위치 같은 요소를 포함 이 정보를 중간 서비스에서 사용
- SOAP 본문
- SOAP 메시지의 주요 부분을 포함
- SOAP 메시지의 최종 수신자를 위해 의도된 내용을 포함(실제로 원하는 데이터나 작업의 내용)
- XML 기반 독집적인 포맷
- SOAP 메시지는 XML기반 문서
- 어떤 플랫폼에서든 독립적으로 작동, 다양한 프로토콜을 통해 전송 가능
- HTTP OR SMTP같은 다양한 통신 프로토콜을 사용하여 전송 가능
SOAP message requesting
- SOAP 프로토콜을 사용하여 서비스를 요청하는 SOAP 메시지의 예시
Web Service Description Language (WSDL)
- Web service are self-describing
- 웹 서비스의 자체 설명
- 웹 서비스는 자신의 인터페이스 및 사용 가능한 작업과 메서드에 대한 설명을 포함하고 있어 클라이언트가 해당 서비스와 상호 작용하기 위해 필요한 정보를 제공
- A WSDL document is an interface document that describes the interface of a web service
- WSDL 문서는 웹 서비스의 인터페이스를 설명하는 인터페이스 문서
- 서비스의 사용 가능한 작업, 메서드, 메시지 형식등을 포함하여 설명하는 문서
- 클라이언트가 웹 서비스에 접근하기 위해서 웹 서비스의 위치 또는 엔드포인트를 알아야 함, 이 정보는 직접적으로 제공되거나 웹 서비스 레지스트리 리포지토리를 통해 알아낼 수 있음
- WSDL 문서에 포함된 인터페이스 정보는 클라이언트 애플리케이션이 웹 서비스와 상호 작용하기 위해 필요한 프로그램 호출을 생성하는 데 사용됨
- 클라이언트가 서비스에 대한 요청을 만들고 이해할 수 있게 도와줌
- 주식 가격 검색 웹 서비스로 예를 들면
- WSDL문서로 getStock과 같은 메서드가 선언되어 있을 수 있음
- WSDL문서를 통해 클라이언트는 이 작업을 호출 가능
Business Process Execution Language (BPEL)
- BPEL은 웹 서비스 간의 협업 및 프로세스 관리를 위해 사용되는 XML 기반 언어로 다양한 웹 서비스를 조직하고 협업시키는 데 사용
- BPEL은 비즈니스 프로세스를 구성하는 웹 서비스들을 기술, 서비스 간의 작업 흐름 및 상호작용을 설명
- BPEL을 사용한 구매 주문 프로세스의 일부
- purchaseOrder를 통해 구매 주문을 수신, 이 작업에 대한 입,출력 메시지 형식을 purchaseOrder포트 유형을 통해 정의
- 구매 주문 수신 후 BPEL은 makeinvoice와 scheduleShipping이라는 2개의 동시 플로우로 작업 흐름을 나눔
- 이를 통해 구매 주문 프로세스의 다양한 작업이 동시에 수행될 수 있음
분산 아키텍처 요약
- 멀티티어 아키텍처
- 데이터 및 처리 업무를 서로 다른 계층으로 분산
- 각 계층이 고유한 역할과 책임을 가짐
- 프래픽 감소 및 신뢰성 증가
- 클라이언트 서버 아키텍처
- 현재 기업, 산업에서 널리 사용
- 웹 서버, 데이터 서버 응용 프로그램 서버는 모두 서버 계층의 예시
- 브로커 아키텍처
- 브로커는 원격 구성 요소 또는 다른 브로커 간의 메시지를 전달
- CORBA
- 원시 브로커 아키텍처
- CORBA는 초기 브로커 아키텍처 구현 중 하나이며 구성 요소 중심의 아키텍처
- 서비스 지향 아키텍처
- 비즈니스 간 기업 애플이케이션에서 널리 사용
- 각 서비스가 구성요소가 되며 다른 서비스 구성요소나 비즈니스 프로세스 애플리케이션에서 재사용될 수 있음