 |  |
|
난이도 : 초급 Matthias Kloppmann, Senior Technical Staff Member, IBM Software Group Donald Ferguson, Ph.D., Fellow, IBM Marcia Stockton, Senior Technical Staff Member and Master Inventor, IBM Software Group
2005 년 7 월 12 일 서비스 구성에 대한 접근방식 중에는 Business Process Execution Language(BPEL)을 사용하여
비즈니스 프로세스로서 서비스를 정의하거나 비즈니스 상태 머신으로 나타내는 것이 있다.
그와 같은 일련의 서비스들의 호출을 조정하는 코드는 프로세스 구성 엔진이라고 하는 특별한 컨테이너에서 실행된다.
컨테이너가 제공하는 함수로 장기적인 프로세스를 실행하고 심지어 엔터프라이즈 영역까지 확장시켜 B2B 협업에 까지 이른다.
IBM의 서비스 지향 아키텍처(SOA)의 프로그래밍 모델에 대한 세 번째 시리즈이다.
이전 시리즈에서는 SOA 프로그래밍 모델의 개념과 서비스 데이터 객체를 설명했다.
비즈니스 프로세스
비즈니스 프로세스 구성을 통한 서비스 조정(orchestration)의 개념은 1970년대 이후의 FORTRAN 프로그래머들에게는
익숙할 것이다. 이것은 간단히 말해서 큰 프로그램의 부분을 구현한 함수나 서브루틴을 호출하는 메인라인 코드의 개념이다.
이제는 서브루틴은 웹 서비스이다. 메인라인 프로그램의 구현 언어는 BPEL이다.(참고자료)
실행 환경은 IBM WebSphere® Business Integration Server Foundation의
Business Process Choreography 컨테이너이다. 그리고 프로그램은 다중 엔터프라이즈를 확장하여
비즈니스 기능을 구현하는 많은 장기 실행 태스크들을 구성한다.
그림 1. 간단한 비즈니스 프로세스
그림 1은 여행 승인과 예약 프로세스용 BPEL 프로세스를 나타낸 것이다. 여기에는 요청 데이터, 관리 승인 작업, 실제 예약을 진행하기 위해 파트너와의 B2B 인터랙션이 포함된다.
여러분이 BPEL에 대한 참고서나 튜토리얼(참고자료)을 복습하지 않도록 하기 위해
WebSphere Business Integration에서의 IBM BPEL 구현에서 제공하는 특징들을 소개하겠다.
- 여러 파트너들과 인터랙팅 할 수 있는 장기 실행(Long-running) 비즈니스 프로세스.
모든 인터랙션들은 표준의 'STATELESS' 웹 서비스 호출을 통해 수행된다.
코릴레이션(correlation)은 애플리케이션 레벨 데이터를 사용하여 특정 인스턴스에 접근하는데 사용된다.
예를 들면 사원 시리얼 넘버 기반으로 인간의 여행 승인 요청 같은 것이다. 항공 예약이 이미 이루어진 후에
여행 요청이 취소될 때 프로세스 결과를 (부분적으로) 실행 취소하기 위해 보상 기능이 제공된다.
- 인간과 프로세스의 결합.
어떤 비즈니스 프로세스 단계는 인간이 개입한다. (승인 또는 예외 처리 워크플로우)
네 개의 눈(두 사람) 원리(four eyes principle)처럼 사람들에게도 작업을 할당한다.
제 2의 승인 절차가 첫 번째 승인자를 제외한 다른 승인자에 의해 처리되도록 하는 것이다.
이러한 요구 사항들은 인간의 작업을 프로세스 단계로서 사용함으로서 충족된다.
Business Process Choreography 엔진과 IBM WebSphere Studio Application Developer Integration Edition 툴은
인간 태스크를 지원한다.
- 프로세스를 Java™ 2 Platform, Enterprise Edition(J2EE)에 삽입하고,
XPath 외에도(BPEL의 표준이다.) 자바를 프로세스 내의 일급 언어로 사용한다. 자바 기능은 BPEL의 범위를 벗어나지만
IBM과 BEA Systems, Inc.는 BPEL에 대한 자바 확장인 BPELJ로 제안하고 있다. 이런 확장을 통해 프로그래머들은
자바를 이용한 프로세스에서 액티비티를 구현하고, BPEL이 식을 허용한 곳에서 표현 언어(expression language)로
자바를 사용하며, 자바를 사용하는 프로세스 내에서 작업 데이터를 조작할 수 있다.
- 서비스의 품질 확장은 제품 시스템에 필요하다. 예를 들어, 트랜잭션 영역을 튜닝하거나,
에러 상황을 복구하거나, 감사 기록을 만드는 등의 기능이 있다.
- WebSphere와 통합 프로세스 구성 엔진은 WebSphere의 트랜잭션 엔진과 Activity Service와 통합된다.
인간이 개입된 프로세스는 WebSphere 사용자 디렉토리와 보안을 사용한다. BPEL 프로세스는 WebSphere 애플리케이션의
일부로서 전개된다. 비즈니스 프로세스의 관리는 WebSphere 관리 콘솔로 통합된다.
IBM Rational®과 WebSphere 툴 슈트에 있는 비즈니스 프로세스 비주얼 에디터를 사용하여
BPEL 프로세스를 구현할 수 있다. 서비스 인터페이스를 반입하면 BPEL 프로세스에서 외부 서비스들을 호출할 수 있다.
이 툴 슈트에는 비주얼 디버거도 있어서 프로세스를 디버깅 할 뿐만 아니라 장기 실행 프로세스의 디버깅과
사용자 인터페이스를 통해 인간이 개입한 작동과의 인터랙팅도 한다. 이 툴 슈트로 BPEL 프로세스를 디버깅 하고
이들을 서비스로서 전개할 수도 있다.
비즈니스 상태 머신
워크플로우 프로세스는 액션 또는 동사와 비슷하다. 예를 들어, CreatePurchaseOrder
또는 BookTravel은 많은 웹 서비스, 자바 클래스, Enterprise JavaBeans(EJB)을 호출할 때 여러 가지 경로를 취한다.
워크플로우 프로세스가 동사이면 비즈니스 상태 머신은 구매 주문, 장애 티켓(trouble ticket), 보험 정책
애플리케이션 같은 현상(thing)을 나타내는 명사이다. 여기에서, CreatePurchaseOrder
또는 BookTravel 같은 동사는 현상에 대한 연산이다. 비즈니스 상태 머신에 대해 연산을 수행하면
BPEL 프로세스나 자바 코드 같은 서비스의 호출로 이어진다.
접근 방식-프로세스나 상태 머신-은 우위를 가릴 수 없다. 오히려 두개 다 서비스 추상화와 기능적으로는 같다.
어떤 것을 선택하든 추상화에는 문제가 없다.
비즈니스 상태 머신은 상태 이동 다이어그램을 통해 그래픽으로 지정된다. 상태, 상태들 간 트랜잭션,
결과 작동 등을 나타낸다. 그림 2는 PurchaseOrder에 대한 간단한 상태 머신을 보여주는 플로우 차트이다.
그림 2. 구매 주문을 나타내는 비즈니스 상태 머신
노드(직사각형)는 PurchaseOrder의 상태를 나타내고 종류는
Created, Ready, InApproval, Purchased, Canceled, Shipped, Delivered, Archived 등이 있다.
화살표는 이벤트 발생을 나타낸다. PurchaseOrder를 한 상태에서 다른 상태로 이동시킨다.
비즈니스 상태 머신은 BPEL 프로세스에 의해 구현될 수 있다.
이 경우, 이벤트는 Web Services Description Language(WSDL)에서 설명하는 프로세스의 portType에 대한 연산일 뿐이다.
(변수로 저장된)현재 상태는 어떤 이벤트(연산)을 실행할 지를 결정한다. 호출자가 무효 연산을 호출하면 런타임은 예외를 던진다.
상태 머신의 현재 상태를 쿼리하여 연산의 유효성을 결정할 수도 있다.
이벤트가 발생하면(연산이 호출되거나 시간이 초과되면) 상태 머신은 새로운 상태로 이동하여 새로운 액션을 수행한다.
(연산 또는 메소드를 호출하는 행위.) 그림 2에서 이동은 화살표로 표시되고 이벤트, 연산 조건,
수행되는 액션에 대한 주석이 달린다. 관련 조건이 true일 경우에만 이동이 될 수 있다.
추가 액션들이 상태 시작과 종료 시 수행된다. 그림 2를 보면 Ready 상태에서의
상태 머신은 두 개의 이벤트 purchase와 Cancel을 갖고있다.
호출자가 구매 작동을 호출하면 비즈니스 상태 머신 프레임웍에서는 다음과 같은 일이 진행된다.
- 연산이 현재 상태에 유효한 것인지를 파악한다.
- 한 상태가 종료하면 그 상태에 대한 종료 액션을 실행한다.
- 이벤트와 관련된 모든 트랜잭션의 조건들을 검토한다. 구매하는데 있어 승인이 필요하다고 간주되면
InApproval 상태로 이동하고 Purchased로의 이동은 무시된다.
- 이동과 관련한 액션을 수행한다. 이 경우
doApprovalAction()이다.
예를 들어, 이메일을 판매 담당자에게 보내거나 또 다른 SOA 컴포넌트에 대한 연산(BPEL 플로우)을 호출한다.
- 새로운
InApproval 상태가 된다.
- 새로운 상태의 시작 액션을 실행한다.
Rational/WebSphere 툴 슈트의 비주얼 에디터를 사용하여 비즈니스 상태 머신을 만든다.
이 툴은 비즈니스 상태 머신과 비즈니스 프로세스를 비슷하게 취급한다. 이들은 외부 서비스에 대해 같은 관계를 갖고 있고
테스트와 전개 환경도 동일하다.
요약
IBM의 SOA 프로그래밍 모델은 새로운 서비스 중심의 애플리케이션을 구현하고 기존 애플리케이션들을
서비스 프레임웍으로 구성할 때 다양한 접근 방식을 제공한다. 이 글에서는 Business Process Execution Language를
사용한 비즈니스 구성 방식에 초점을 맞춰 설명했다. 이는 전통적인 절차 프로그래밍에서 서브루틴을 호출하는 것과 비슷하다.
장기 실행 작업과 병렬성을 지원한다. 비즈니스 상태 머신은 또 다른 프로그래밍 모델이다.
다음 글에서는 SOA 개발자를 위한 컴포넌트 유형을 소개하겠다.
참고자료 - "웹 서비스를 구현하는 SOA 프로그래밍 모델, Part 1: IBM SOA 프로그래밍 모델 개요" (developerWorks, June 2005),
"Part 2: 서비스 데이터 객체를 사용하여 데이터 액세스 간소화하기" (developerWorks, June 2005).
- "Business Process Execution Language for Web Services (BPEL4WS) v1.1" (developerWorks, May 2003).
- "WebSphere Application Server Enterprise Process Choreographer: Concepts and Architecture" (developerWorks, October 2002),
"Business process choreography in WebSphere: Combining the power of BPEL and J2EE"
- "BPELJ: BPEL for Java technology" (developerWorks, March 2004).
- developerWorks SOA and Web services zone.
- developerWorks blogs.
- SOA and Web services articles,
free SOA and Web services tutorials,
developerWorks.
필자소개  | 
|  | Matthias Kloppmann, Senior Technical Staff Member, IBM Software Group |
 | 
|  | Donald Ferguson, Ph.D., Fellow, IBM |
 | 
|  | Marcia Stockton, Senior Technical Staff Member and Master Inventor, IBM Software Group |
기사에 대한 평가
 |
| 이 문서 북마킹 하기
|
|  |