BizTalk과 자바 연계 아키텍쳐에 대해서 조언 좀 부탁드립니다.
-
2008년 5월 6일 화요일 오전 7:23
안녕하세요, 바로 윗글에 질문 드렸던 것에 이어서 또 문의 드립니다.
머릿속에 대략적으로 BizTalk과 자바 연계에 대한 아키텍쳐가 조금이나마 그려지고 있는데요 맞게 생각한 것인지 조언 좀 부탁드립니다.
일단 웹 서비스로 BizTalk의 업무를 직접 콜하는 방법은 제외를 했습니다.
대신 자바 웹 환경이 WebSphere를 사용하기 때문에 WebSphere MQ를 사용하여 BizTalk와 연계하는 것을 구상하였습니다.
자바에서 WebSphere MQ까지 자료를 넘기는 방법은 Spring JMS(맞는지 모르겠습니다.)를 통하여 넘기면 WebSphere MQ는 BizTalk에 도달하게 되구요.
처리 후 응답 또한 역순으로 처리되는 것으로 생각하였습니다.
End User의 입장에서 정리한다면 다음의 시나리오라고 생각됩니다.
1) 자바 웹 사이트로 로그인을 한다.
2) 나에게 맞겨진 업무가 있는지 조회하기 위하여 BizTalk에 접근한다.
3) 업무 조회시 Spring JMS를 통하여 WebSphere MQ에 조회를 요청하는 데이터를 전송한다.
4) WebSphere MQ는 데이터를 BizTalk의 해당 업무로 송신하여 처리된다.
5) BizTalk는 업무 목록을 결과로 리턴한다.
대략 위와 같은 시나리오로 그려봤는데요, 불확실한 부분이 좀 많은 것 같습니다.
불확실하다고 생각되는 부분은 2)번과 같은 업무를 BizTalk로 처리가 가능한 것일까요?
그리고 자바에서 MQ에 요청 데이터를 쌓아 놓으면 BizTalk로 통신(내부적으로 웹서비스가 사용될지도 모르겠지만요)이 자동으로 이루어 지는 것이 맞는지 궁금합니다.
마지막으로 궁금한 것이 BizTalk에서 업무 프로세스를 다이어그램으로 정의하듯 해 놓은것을 웹에서 End User가 보면서 해당 업무가 어디까지 진행되고 있는지 확인할 수 있는 기능이 가능한 것인가요?
모니터링 이라고 하는것이 위와 같은 것일지도 모르겠으나 웹에서 비주얼하게 조회가 되는 것인지는 모르겠습니다.
글을 쓰고나니까 우문이라는 생각이 들지만, 그래도 조언 좀 부탁드리겠습니다.
남은 오후시간도 힘내시구요, 수고하세요.
PS: Orchestrations 을 만들기 위해서는 VS 2005가 별도로 있어야 하는지도 궁금합니다. ^^;;;
모든 응답
-
2008년 5월 6일 화요일 오전 11:30
네, 답변드리겠습니다.
질문1: 2)번과 같은 업무를 BizTalk으로 처리가 가능한 것일까요?
=> 2) 나에게 맞겨진 업무가 있는지 조회하기 위하여 BizTalk에 접근한다.
업무 조회라고 하시는데.. 각 End User가 사이트에 로그인해서 "나에게 맞겨진 업무가 있는지 조회"를 원할 때마다
a) BizTalk 인터페이스가 호출되어
b) WebSphere MQ로 쿼리해서 결과값을 받은 다음
c) 그 결과를 돌려받고
d) 웹 화면에 뿌려주길 원하시는 건가요?
뭐 안될 것도 없지만.. 만약 저런 구조라면 수백, 수천이 될수도 있는 사용자들이 조회 버튼 누를 때마다 인터페이스가 발생하겠군요. 하루에 발생하는 인터페이스가 수만건이 될 수도 있지요. 역시 안될 것도 없지만.. 좋은 구조는 아닌 듯 싶네요.
차라리, 업무 할당 트랜잭션이 발생할때마다 MQ에 데이터를 날리고, 비즈톡에서 그걸 가져와서 정해진 DB에 Insert해주면 웹에서는 그 DB만 쿼리해서 웹에 뿌려주면 되지 않을까요?
질문2: 자바에서 MQ에 요청 데이터를 쌓아 놓으면 BizTalk로 통신(내부적으로 웹서비스가 사용될지도 모르겠지만요)이 자동으로 이루어 지는 것이 맞는지 궁금합니다.
=> BizTalk 서버에는 WebSphere MQ와의 연동을 위한 어댑터를 제공합니다.
http://www.microsoft.com/biztalk/en/us/adapters-included.aspx
http://msdn.microsoft.com/en-us/library/aa772116.aspx -> 수신 기능 'Yes"
질문3: 마지막으로 궁금한 것이 BizTalk에서 업무 프로세스를 다이어그램으로 정의하듯 해 놓은것을 웹에서 End User가 보면서 해당 업무가 어디까지 진행되고 있는지 확인할 수 있는 기능이 가능한 것인가요?
=> BizTalk에는 BAM(Business Activity Monitoring)이라고 하는 툴이 기본적으로 제공됩니다. 또, TPE(Tracking Profile Editor)가 있어서 Tracking을 원하는 위치를 지정할 수 있지요. 하지만 그 내용을 웹에서 보여주는 것은 코딩을 통해 구현하셔야 하는 부분입니다. 기본적으로 BizTalk에서 제공하는 툴들을 통해 다 확인 가능한 부분들이지만, 고객 편의를 위해 저희 회사도 모니터링 툴을 개발, 지원하고 있답니다. 결론적으로 가능합니다. 하지만 BizTalk 관리자를 위한 모니터링 화면이지 End User를 위한 것이라고 보긴 힘들지요. End User를 위해 그런 화면 제작도 가능?이야 하겠지만.. End User가 그걸 알고 싶어할까요? ^^
질문4: Orchestrations 을 만들기 위해서는 VS 2005가 별도로 있어야 하는지도 궁금합니다.
=> 네, MSFT의 개발 환경은 기본적으로 통합개발환경 아니겠습니까? ^^ 모든 툴이 Visual Studio로 귀결되지요. 친숙한 개발툴을 사용할 수 있는 것도 MSFT 플랫폼의 큰 장점입니다. 그러나 아직 VS 2008에서는 BizTalk을 위한 프로젝트 템플릿이 지원되지 않으며 다른 BizTalk 파일들을 여는 것도 불가능합니다. VS 2005 사용해주세요.
이상입니다.

-
2008년 5월 7일 수요일 오전 12:05
안녕하세요, 이번에도 친절하게 설명해 주셔서 감사합니다. ^^
원하는 답을 얻게되어서 정말 기쁘네요.
아~그리고 1번 질문은 그런 식으로 MQ와 BizTalk이 연동되는 것인지 여쭤본 것이구요, 예를 부적절한 것을 들었던 것 같습니다.
사실 BizTalk에 대해서 알아보고 셈플을 만들어 보라고 지시를 받았을 뿐 어떤 업무에 적용해야 가장 Bast한지는 아직 잘 모르겠습니다.
업부 설계하시는 분과 워낙 거리적으로 동떨어져서 커뮤니케이션이 잘 안되어서요. ^^;;;
그리고 2번은 WebSphere MQ가 있는 것은 알았는데요, MQ로 쏘기만 하면 알아서 BizTalk과 통신을 하게 되는 것인지가 궁금했던 것이였습니다.
물론 어딘가 BizTalk의 어떤 Orchestrations에 접속할지 정보는 있겠지만요.
3번은 결제를 예를 든다면 해당 문서가 어디까지 결제가 진행중인지를 비주얼하게 표현할 방법이 BizTalk에서 기본으로 지원하는지 여쭤보라고 다른분이 물어봐서요.
직접 개발해야 한다면 상태코드를 DB에 저장해서 웹에서 표현하는 방법으로 진행해야 겠습니다.
마지막으로 4번은 개발용으로 MS-SQL 2005가 설치되어진 곳에 BizTalk 2006 R2 Dev 버전을 설치했더니 기본으로 설치되는 VS 2005에서는 Orchestrations용 프로젝트를 개발할 수 없는 것 같아서 문의를 드렸던 것이였습니다.
결국 다시 Windows 2003 -> VS 2005 -> SQL 2005 -> BizTalk 2006 순서로 설치해서 VS 2005에서 Orchestrations용 프로젝트를 생성할 수 있는 것을 어제 확인했습니다.
아무쪼록 도움 많이 주셔서 정말 감사드리구요, 이곳에 질문이 아닌 정보성 글을 올릴 수 있도록 열씸히 해보겠습니다.
오늘도 즐거운 하루 되시구요, 수고하세요. ^^
-
2008년 5월 7일 수요일 오전 12:36
도움이 되셨다니 저도 기쁩니다. ^^
추가 답변이 필요할 듯 싶군요.
질문) 2번은 WebSphere MQ가 있는 것은 알았는데요, MQ로 쏘기만 하면 알아서 BizTalk과 통신을 하게 되는 것인지가 궁금했던 것이였습니다.
=> BizTalk에는 수신 포트와 수신 위치라는 것을 지정할 수가 있습니다. 여기에 MQ 주소를 지정해주면 어댑터가 간격을 두고 메시지를 폴링해서 가져오게 됩니다. 이렇게 가져온 메시지는 BizTalk의 MessageBox라는 곳에 들어가고(Publish), Orchestration에선 이러한 형태의 메시지를 수신받겠다고 약속(Subscribe)해두었다가 해당 메시지가 MessageBox에 들어오면 그 메시지를 받아와서 작업을 시작합니다. 이와 같이 BizTalk에서는 Receive, Route, Send할 때 Publish/Subscribe 패턴을 따릅니다. WebSphere MQ가 사용하는 Publish/Subscribe 구조와 크게 다르지 않지요?
참조 : http://blog.wworkflow.net/archive/2008/04/01/biztalk-understanding-the-publish-subscribe-model.aspx
질문) 3번은 결제를 예를 든다면 해당 문서가 어디까지 결제가 진행중인지를 비주얼하게 표현할 방법이 BizTalk에서 기본으로 지원하는지 여쭤보라고 다른분이 물어봐서요. 직접 개발해야 한다면 상태코드를 DB에 저장해서 웹에서 표현하는 방법으로 진행해야 겠습니다.
=> 이 역시 DB에 저장할 때는 BAM을 사용하시길 권장합니다. TPE(Tracking Profile Editor)로 Tracking할 위치를 지정하고 배포하면 메시지들이 통과할 때 마다 BAMPrimaryImport에 기록이 남고 contents 정보는 BizTalkDTADb에서 가져올 수 있습니다.(BizTalk2006에서부터는 operations dll을 사용하여 DTADb로부터 메시지 body와 context를 가져올 수 있습니다.)=> 결과적으로 모니터링 화면만 개발하시고, DB에서 불러다 보여주는 부분만 작성해주시면 되는 겁니다. 따로 DB에 저장하는 로직을 작성하실 필요가 없습니다.
참조 : http://www.webhostingsearch.com/blogs/richard/reading-the-message-body-and-context-from-the-biztalkdtadb-using-operations-library-in-biztalk-2006/
질문) 마지막으로 4번은 개발용으로 MS-SQL 2005가 설치되어진 곳에 BizTalk 2006 R2 Dev 버전을 설치했더니 기본으로 설치되는 VS 2005에서는 Orchestrations용 프로젝트를 개발할 수 없는 것 같아서 문의를 드렸던 것이였습니다.결국 다시 Windows 2003 -> VS 2005 -> SQL 2005 -> BizTalk 2006 순서로 설치해서 VS 2005에서 Orchestrations용 프로젝트를 생성할 수 있는 것을 어제 확인했습니다.
=> 네, 맞습니다. 일단 VS2005를 먼저 설치하신 상태에서 BizTalk을 설치하셔야 프로젝트 템플릿 및 플러그인이 설치됩니다. ^^
좋은 하루 되세요~

