SOA(Service Oriented Architecture)
SOA(Service Oriented Architecture)는 소프트웨어를 구성하는 방법입니다. SOA에 대해 알아보려면 다음 절을 참조하십시오.
SOA 소개
- 보험 견적 계산 또는 이메일 분배와 같은 비즈니스 프로세스, 또는 데이터베이스 액세스와 같은 기술 태스크를 처리합니다. 그래픽 인터페이스를 구성하는 데 필요한 비즈니스 데이터 및 기술 세부사항을 제공하기도 합니다.
- 다른 서비스에 액세스할 수 있습니다. 적절한 런타임 기술을 사용하면 기존 프로그램에 액세스하여 웹 애플리케이션과 같은 다양한 유형의 요청자에게 응답할 수 있습니다.
- 다른 소프트웨어로부터 독립적입니다. 요청자가 변경되어도 이로 인해 서비스가 변경되어야 하는 부분은 매우 적거나 없습니다. 서비스의 내부 로직이 변경되어도 이로 인해 요청자가 변경되어야 하는 부분은 매우 적거나 거의 없습니다. 서비스와 기타 소프트웨어의 상호 독립성을 느슨한 결합이라고 합니다.
서비스는 회사 내의 상호작용, 그리고 회사와 공급자, 파트너 및 고객과의 상호작용을 처리할 수 있습니다.
- 애플리케이션이 사용자 인터페이스, 비즈니스 처리 및 데이터 액세스 로직을 결합해 놓은 단일체 형식이어서 한 유형의 로직을 업데이트하면 회사에서 여러 유형의 동작을 테스트해야 합니다.
- 로직이 단일체 형식이며 요구사항 변경에 따라 다시 작성되지 않고 반복적으로 패치되어 애플리케이션을 이해하기 어렵습니다. 이러한 경우 업데이트 시에는 개발자가 로직을 해석해야 하므로 시간이 추가로 소요되며, 복잡도가 증가함에 따라 업데이트로 인한 추가 오류가 발생합니다.
- 애플리케이션 인벤토리에 중복 로직이 있습니다. 변경 요청이 혼란을 초래하며 여러 부분의 변경을 필요로 합니다.
개발자의 관점에서, 서비스 지향으로의 변경은 주안점의 변경이며 많은 개발 태스크 요소는 이에 영향을 받지 않습니다.
서비스 지향 애플리케이션

최상위 레벨에는 하나 이상의 통합 서비스가 포함되어 있으며, 이러한 각 서비스는 보험 보상 범위에 대한 신청자의 요청을 처리하는 것과 같은 활동의 플로우를 제어합니다. 각 통합 서비스는 하나 이상의 비즈니스 서비스를 호출합니다.
두 번째 레벨은 각각 비교적 하위 레벨의 비즈니스 태스크를 처리하는 서비스로 구성되어 있습니다. 예를 들어, 한 통합 서비스는 보험 정책 에이전트가 제공한 세부사항을 확인하는 일련의 비즈니스 서비스를 호출할 수 있습니다. 이 비즈니스 서비스가 "정책 발행"을 의미하는 값을 리턴하는 경우 해당 통합 서비스는 또 다른 비즈니스 서비스를 호출합니다. 두 번째 비즈니스 서비스는 견적을 계산하고 이를 서비스 지향 애플리케이션을 호출한 소프트웨어(웹 애플리케이션 등)에 리턴합니다.
세 번째 레벨은 각각 데이터 스토리지 영역(데이터베이스 및 메시지 큐 등)의 읽기 및 쓰기와 같은 비교적 기술적인 태스크를 처리하는 데이터 액세스 서비스로 구성되어 있습니다. 데이터 액세스 서비스는 보통 비즈니스 계층에서 가장 많이 호출되지만, 서비스에 액세스하기 쉬운 경우에는 다른 사용법이 사용되기도 합니다. 예를 들면, 웹 애플리케이션과 같은 요청자는 양식의 초기값을 지정하기 위해 데이터 액세스 서비스에 액세스할 수도 있습니다.
핵심은 유연성입니다. 어떤 통합 서비스는 다른 요청자에게 다른 조작을 제공할 수도 있고, 어떤 통합 서비스는 다른 통합 서비스를 호출할 수도 있습니다. 또한 요청자가 서비스 지향 애플리케이션 내에서 다른 유형의 서비스에 액세스할 수도 있습니다. 이 요청자는 어떤 시점에는 통합 서비스에 액세스하고, 다른 시점에는 비즈니스 서비스에 액세스할 수도 있습니다.
웹 및 2진 교환 서비스
웹 서비스를 정의하는 특성은 무엇일까요? 어떤 사람들은 데이터를 SOAP라는 텍스트 기반 형식으로 교환하는 것을 해답으로 생각할 수 있습니다. 통신 소프트웨어 HTTP(Hypertext Transfer Protocol)를 통해 월드 와이드 웹(WWW)에서 데이터를 교환하는 것을 웹 서비스를 정의하는 특성이라 주장하는 사람도 있을 수 있습니다.
웹 서비스의 다양한 스타일을 이해하려면 브라우저에서 웹 서버로 전송되는 데이터인 HTTP 요청 메시지의 구조, 그리고 리턴되는 HTTP 응답 메시지의 구조를 이해해야 합니다.
- 이 메시지는 수신자가 메시지에 어떠한 작업을 수행해야 하는지 식별하는 HTTP 메소드로 시작됩니다.
- 몇 가지 후속 항목은 사용자의 비즈니스 데이터에 고유하지 않은 정보를 제공하는 헤더입니다. 예를 들면, 이러한 정보는 사용자 에이전트(즉, 요청하는 브라우저)에 대한 세부사항이 될 수 있습니다.
각 헤더는 이름 및 값 쌍입니다.
User-Agent: Mozilla/4.0 ... - 엔티티 본문은 요청 데이터이며 없을 수도 있습니다. HTTP 메소드가 GET(데이터에 대한 요청)인 경우에는 대부분의 경우 엔티티 본문이 비어 있습니다.
- 이 메시지는 요청 데이터의 처리 여부를 표시하는 HTTP 응답 코드로 시작됩니다.
- 여러 후속 항목은 헤더이며, 여기에는 응답의 엔티티 본문에 있는 데이터의 형식을 식별하는 Content-Type 등이 포함됩니다. 이 형식은 고유합니다. 예를 들면, 이 중 한 가지는 유형이 JPEG인 그림을 위한 형식입니다. 형식이 HTML(Hypertext Markup Language)인 경우 응답은 웹 페이지입니다. 그 외 세 가지(XML(Extensible Markup Language), XML의 통용어인 SOAP, 그리고 JavaScript에서 쉽게 처리할 수 있는 데이터인 JSON(JavaScript Object Notation)) 이상의 컨텐츠 유형이 웹 애플리케이션 및 다른 요청자에서 사용할 수 있는 비즈니스 데이터를 제공합니다.
- 엔티티 본문은 응답 데이터이며 없을 수도 있습니다.
용어 웹 서비스는 텍스트 기반 형식으로 데이터를 전송한다는 의미를 내포하고 있습니다. 이와 반대로 2진 교환 서비스는 데이터를 특정 컴퓨터 언어 또는 특정 공급업체와 연관된 형식으로 교환합니다.
- 웹 서비스보다 런타임 응답이 더 빠름
- 구성 파일을 유지보수할 필요가 없음
- 기존 웹 서비스와 관련된 기술을 익힐 필요가 없음
2진 교환 서비스 사용의 단점은 접근성이 떨어진다는 것입니다. 2진 교환 서비스는 서비스에서 예상하는 2진 형식의 데이터를 전송하는 소프트웨어에만 직접 액세스할 수 있습니다.
비즈니스에 대한 SOA의 영향
SOA는 비즈니스에 몇 가지 중요한 영향을 미칩니다. 우선, 각 컴포넌트가 상호 독립형 단위인 경우 회사에서는 비즈니스 또는 기술적 변화에 더 빠르게 대응하면서 이로 인한 비용과 혼란은 줄일 수 있습니다.
회사가 변화에 빠르고 무난하게 대응하는 능력을 기민성이라고 합니다. 적절하게 구성된 SOA는 시간 경과에 따라 기민성을 증가시킵니다.
SOA는 사람들이 협업하는 방식에도 영향을 줍니다. 대부분의 기술적 서비스를 제외한, 훌륭히 작성된 서비스를 코스 그레인드라고 합니다. 코스 그레인드 서비스에서, 주요 영역의 범위는 소프트웨어에 대해 잘 모르는 비즈니스 관계자도 서비스의 용도에 대해 잘 이해할 수 있을 정도로 넓습니다. 코스 그레인드 서비스의 집합이 회사의 비즈니스 프로시저를 처리하게 되면 비즈니스 분석가와 소프트웨어 전문가가 정보를 충분히 이해하며 공유할 수 있고, 각 서비스의 용도와 범위에 대한 초기 논의에 사용자를 포함시킬 수 있으며, 비즈니스 프로시저에 대한 변경이 미치는 영향을 파악할 수 있습니다. SOA의 중요한 이점은 사람 간의 의사소통이 용이하다는 점입니다. 이는 이 아키텍처가 비즈니스 처리에 대한 기본 구성 원칙이 될 수 있음을 의미합니다.
잘 디자인된 서비스는 재사용할 수 있는 가능성이 높습니다. 회사는 재사용을 통해 최소 두 가지 부분에서 이득을 얻을 수 있습니다. 한 가지는 새 소프트웨어를 개발하는 비용을 절감하는 것이며, 다른 하나는 시간 경과에 따라 소프트웨어 인벤토리의 신뢰성을 증가시키는 것입니다. 새 애플리케이션에 기존 서비스를 배치하는 경우에는 새로 작성된 소프트웨어를 배치하는 데 필요한 테스트와 비교하여 테스트에 소요되는 노력을 줄일 수 있습니다.
SOA를 사용하여 비즈니스 프로세스 및 데이터의 가용성을 증가시킬 수 있습니다. 예를 들면, 워크스테이션에서 특정 고객의 보험 가격에 대한 견적을 계산하기 위해 메인프레임 프로세스를 호출하고 있는 보험 회사의 에이전트가 있다고 가정해 보십시오. 경쟁으로 인한 압력에 따라, 회사는 메인프레임에 대한 링크가 없는 웹에서 고객이 견적을 요청할 수 있도록 허용하려 합니다. 회사가 브라우저로부터 개인 데이터를 수락하고, 메인프레임의 분석 소프트웨어를 통해 이 데이터를 처리하고 고객에게 응답하기 위해 필요한 것은 무엇일까요? 솔루션은 브라우저와 분석 소프트웨어 간의 상호작용을 처리하기 위해 새 서비스를 개발하는 작업을 포함합니다. 이 솔루션은 프로세스가 더 발전하면서 더 넓은 시장을 차지하는 방향으로 비즈니스에 영향을 미칩니다.
알림
앞서 제시된 자료의 일부는 Enterprise Web 2.0 with EGL(MC Press, 2009; http://www.mc-store.com/5107.html)의 자료입니다.