서비스 지향 아키텍처(Service-Oriented Architecture, SOA)는 여러 어플리케이션들에서 사용될 수 있는 범용적인 서비스를 개발하여 배포(Publish)하고 동적으로 발견(Discover), 조립(Composition)하여 어플리케이션을 만드는 기술이다. 따라서 SOA는 Publish-Discover-Invoke 형태의 컴퓨팅 방식을 사용하고 있으며, 이는 기존의 객체지향, CBD의 컴퓨팅 방식과 상당한 차이를 보인다. SOA의 서비스는 절차적 프로그래밍의 함수, 객체지향의 객체, CBD의 컴포넌트와는 다른 구성 단위(Unit)이며, 재사용성과 보편성이 서비스의 기본적인 요구사항이 된다. 또한 서비스 제공자와 소비자 간의 사전 상호인지나 정보의 공유없이, 서비스 제공자가 재사용을 고려하여 서비스를 개발하고, 서비스 사용자는 이를 검색한 후 사용하는 방식이므로 제공자와 소비자 간의 결합도가 매우 낮은 특징을 가지고 있다. SOA에서 필요한 서비스를 실행시간에 검색, 선택하여 사용하는 방식도 기존 컴퓨팅 방식에는 적용되지 않은 개념이다. 따라서, 객체지향 프로그래밍에서처럼 사용자 인터페이스를 만들고 서버의 기능을 JSP, RMI 등을 사용하여 호출하는 방식은 SOA 서비스 클라이언트 프로그램을 설계 하는데 잘 적용될 수 없다. SOA 서비스 클라이언트 개발을 위해서는 서비스의 특징과 SOA의 서비스 사용 절차를 설계 단계에서 적용할 수 있어야 하며, 이를 위하여 서비스 클라이언트 개발을 위한 실용적이고 체계적인 개발 프로세스가 정의되어야 한다. 그러나 아직까지 서비스 제공자 측면의 SOA 서비스 개발을 위한 프로세스조차 정의가 부족하고, 서비스 사용자 측면의 클라이언트 개발 프로세스는 소수의 가이드라인을 제외하고는 전무한 실정이다. 따라서 본 논문에서는 효율적인 서비스 검색과 실행을 위한 실용적이고 체계적인 개발 프로세스와 각 단계별 지침을 정의하고, 호텔 검색 및 예약 서비스 시스템을 통하여 제시된 개발 프로세스를 적용한다. Service-Oriented Architecture(SOA) is an method to develop applications by developing and publishing reusable services which potentially be used in various applications, and discovering and composing right services dynamically. SOA adopts a paradigm of publish-discover-invoke, which is considerably different from object-oriented and component-based development(CBD) approaches. The service in SOA is different from function in procedural programming, object in object-oriented programming, and component in CBD, and its fundamental requirement is a high level of reusability and applicability. In SOA, service providers and service consumers are loosely coupled since the providers try to develop reusable services and the consumers try to locate right services without knowing much about the providers and their published services. Moreover, the process of searching, choosing and invoking right services is not presented in conventional programming paradigms. Therefore, conventional approaches to developing user interfaces and invoking the functionality on servers through JSP, and RMI in object-oriented programming cannot well be applicable to designing clients’ programs in SOA. Therefore, there is a high demand for a practical and systematic process for developing clients’ applications, and the such a process should be devised by considering key characteristics of services and SOA. However, little work on this area is known to date, and there has not a process for client side just except few guide lines for developing service client. In this paper, we propose a practical and systematic development process for developing clients' applications in SOA. Then, we define instructions for carrying out each activity in the process. To show the applicability of the proposed work, we show the result of applying our process in developing a services application for searching and booking hotels.
Read full abstract