300 likes | 614 Views
WebSphere MQ V7 솔루션 소개. Hyung Guh, Kim Senior SSR, IBM SWG WebSphere Sales June 5, 2009. Web 2.0. Java Message Service (JMS). Multi-Language Message Service. MQ Interface. Web 2.0. IBM WebSphere MQ V7.0. AJAX. Applications and Data. HTTP GET. WebSphere MQ V7.0. HTTP POST.
E N D
WebSphere MQ V7 솔루션 소개 Hyung Guh, Kim Senior SSR, IBM SWG WebSphere Sales June 5, 2009
Web 2.0 Java Message Service (JMS) Multi-Language Message Service MQ Interface Web 2.0 IBM WebSphere MQ V7.0 AJAX Applications and Data HTTP GET WebSphere MQ V7.0 HTTP POST Publish Subscribe HTTP DELETE IBM WebSphere MQ 버전 7의테마 1 Universal Messaging Backbone for SOA and Web 2.0 By 개방형 표준의 지원
IBM WebSphere MQ 버전 7의테마 2 • WMQ V7의 주된 기능 향상은 JMS 구현의 향상과 밀접한 관련 • 더 많은 애플리케이션이 JMS API로 작성되고 있으며, • JMS는 많은 SOA/ESB 솔루션의 메시지 처리 요건을 해결하고 있기 때문 • 하지만 JMS 애플리케이션뿐 아니라 기존의 MQI, XMS 등의 인터페이스를 사용하는 모든 유형의 애플리케이션이 혜택을 받게 됨 • 다음 두 가지를 고려하도록 신기능이 디자인됨 • 사용 편이성 • 성능 • Publish & Subscribe 기능을 강화 • WebSphere Message Broker의 Publish & Subscribe 기능을 구현 • 모든 환경에서 용이한 개발/프로그래밍이 가능 • JMS의 기능구현 및 향상은 WMQ의 네이티브 API인 MQI에도 많은 향상을 가져옴 • 기존의 개발 및 관리 인터페이스의 유기적인 진화와 확장
지원 플랫폼 • 기본적으로버전 6과 같은 플랫폼을 지원 • AIX, HP-UX (x2), Solaris (x2), Linux (x4), i5/OS, z/OS, Windows • 기본OS 레벨 상의 업데이트 포함 • 최신 지원 환경에 관해서는 다음의 URL을 참조http://www-306.ibm.com/software/integration/wmq/requirements/index.html • Linux/zSeries • 31-bit버전은 더 이상 지원되지 않음; 64-bit 버전만 계속 지원 • Windows 2000지원 중단 • Windows XP가 Windows의 기본 OS 레벨 • Vista지원 • Windows x64 • Windows 64-bit 애플리케이션 지원 • 기존32-bit 애플리케이션 역시 지원 • 일부 EXIT 프로그램은 32-bit와 64-bit를 모두 지원하기 위해 재컴파일 필요 • Java 1.4.2 또는 이후 버전
Publish & Subscribe • JMS, WMQ API의 일부 • 비동기적 메시지 처리 기반의 다수 대 다수 통신 • 애플리케이션 간의 보다 더 느슨한 연결을 지향하는 메시지 처리 모델 • V7로부터 네이티브MQI의 일부로 완전히 구현됨 • Point-to-Point비동기적 메시지 처리는 애플리케이션을 느슨하게 엮음(Decoupling) • 하지만 여전히 송신자와 수신자와의 연결해야 함 • Publish & Subscribe은 애플리케이션간의 느슨한 연결을 더욱 진보시킴 • 송신자는 얼마나 많은 수신자가, 또는 어떤 수신자가 Message를 받게 되는지 알 필요가 없음 • 애플리케이션 간의 연결은 Queue가 아닌Topic • WMQ 버전 6에는 별도의 Publish & Subscribe Broker서비스가 있었음 • 버전 7에서도 기존 애플리케이션은 호환됨 • 버전 7에 이르러 Publish & Subscribe구현에 많은 향상 • z/OS역시 지원 시작
Publish & Subscribe를 이용한 Loose Coupling Publisher Publisher Publisher Publisher Publisher Publisher Publisher Topic Topic Topic Topic Topic Subscriber Subscriber Subscriber Subscriber Subscriber Subscriber Subscriber 1:Many 1:None 1:1 Many:Many Many:1
Publish & Subscribe 관리 • Topic String(토픽 문자열)을 기반으로 • Message를 발행(Publish)하거나 구독(Subscribe) • Topic에 대한 권한을 부여하거나 누가 발행/구독하는지 상태를 체크 • WMQ의 새로운 오브젝트인 Topic오브젝트를 작성해서 쓰거나/Defined Topics • Queue나 Channel처럼 WMQ의 새로운 오브젝트 유형 • 별도의 이름을 가지나 Topic String 속성을 가짐 • Topic의 계층 구조인 Topic Tree를 구성 • 애플리케이션으로부터 임시로 Topic을 작성해서 쓸 수 있음/In-UseTopics • 애플리케이션이 Publish 또는 Subscribe하는 주제 • 상위 계층으로부터 속성(예: 보안속성)을 상속받음 • 관리 작업으로 만들지 않으나 관리 인터페이스를 통해 확인할 수 있음 DEFINED TOPIC TREE IN-USE TOPICS / SPORTS NEWS SUBSCRIBE("/SPORTS/CRICKET/WEST INDIES") SUBSCRIBE("/NEWS/POLITICS/WESTMINSTER") SUBSCRIBE("/TV/DRAMA/WEST WING") CRICKET RUGBY
Publish & Subscribe 애플리케이션 프로그래밍 • JMS Publish & Subscribe Implementation을 네이티브 MQI에 포함, 구현 • MQI 프로그래밍 레이어를 개선하여 JMS 구현을 좀 더 네이티브하게 • JMS 구현이 새로운 MQI 기능을 활용 • Subscription을 위한 새로운 WMQ Call 추가 • 이전 버전의 WMQ에서 추가적인 헤더(MQRFH2) 등을 다룰 때 생기는 불편을 해소 • MQSUB는 Topic에 Subscribe하기 위한 새로운 WMQ Call • 이후 발생하는 Topic을 가진 Message에 대한 ‘구독’ 선언 • 기존 Call에 대한 새로운 옵션 추가 • Topic 오브젝트에 접근하기 위한 MQOPEN옵션 상의 변화 • Topic 오브젝트를 닫아 구독을 중단하기 위한 MQCLOSE옵션 상의 변화 • Message를 발행(Publish)하거나 받아보기 위한 MQPUT, MQGET 옵션 상의 변화 • 문서와 예제 프로그램을 통해 활용 가이드 제공
MQMD 헤더의 확장: Message Properties • 애플리케이션 데이터가 아닌 MQMD 내의 임의의 필드, Message Properties 확장 가능 • 사용자가 확장 가능한 MQMD • JMS스펙을 네이티브하게 WMQ에 적용 • 새로운 WMQ Call인MQSETMP과MQINQMP추가 • Properties는 정수형, 문자열, 불리언 등 다양한 자료형 선택 가능 • 같은 요건을 수행하던 기존의 RFH2 folder보다 개발이 간편 • 애플리케이션이 필요 없는 경우 보이지 않음 • 추가적인 Parsing 과정 없이 바로 애플리케이션 데이터로 접근 • 이전 버전과의 호환성을 위한 구성 옵션 제공 • Queue와 Channel에 이전 버전에 대한 호환성을 제공할 것인지 설정 가능 • PROPCTL/등록정보제어 속성 • 디폴트 설정은 이전 버전 기반을 위해 RFH2 folders로 보이게 함 • WHY Message Properties? • JMS와의 원활한 상호 운용: Selector의 사용, RFH2 헤더 회피 등 • Message 헤더 내의 패턴을 검출하거나 • 필요에 의해 Message를 변경하지 않고 컨트롤 정보가 필요한 경우 MQMD PROPS XX=YY BODY
Asynchronous Message Consumptions • JMS 스펙에 대한 WMQ의 네이티브한 Implementation • JMS 외의 MQI 기반 프로그램 또한 활용 • 비동기적인 Message Consumer는, • Message-driven 방식의 호출 가능한 Function 혹은 Runtime • Message가 Queue에 도착하면 Message를 처리(GET) • Queue Manager가 Invoke • Buffer를 통해 호출한 프로그램에 Message 본문을 Return • 비동기적으로Message가져오기(Call Back 기능) • 새로운 WMQ Call인 MQCB로 Message Consumer 기능을 할 Function이나 Runtime을 등록 • 새로운 WMQ Call인 MQCTL로 Message Consumer를 시작/정지 • MQGET(WAIT) 또는MQGET(SIGNAL)을 사용하지 않아도 됨 • 애플리케이션 디자인 상에서 Thread가 다수의 Queue로부터 • 로직의 Blocking 없이 • 비동기적으로 Message를 가져오도록 디자인 가능
Asynchronous Message Consumptions - Message Selector • JMS 스펙의 Selector에 대한 네이티브 지원 • SQL92질의를 활용하여 GET 또는 Subscribe하려는 Message 필터링 • MQMD의 개별 필드나 Message Properties 내의 값을 토대로 • MQOPEN 또는 MQCB수행 시 오브젝트 핸들(Object Handle)에 SQL 질의 추가 • 이를 위하여 Object Handle이 변경되었음 • Queue Manager 내에서 수행되며, 해당 애플리케이션은 필터의 결과만을 보게 됨 • 애플리케이션 Message 본문 내부에 대한 필터링은 하지 않음 • Content에 대한 탐색, 파싱, 필터링은 WebSphere Message Broker를 계속 활용 1. team = hursley sport = football DESTQ MQOPEN ObjName = “DESTQ” hObj DESTQ SelectorString = “team=hursley” 1 2. team = hursley sport = baseball 2 3 3. team = romsey sport = football MQRC_NO_MSG_AVAILABLE
Asynchronous Message Consumptions- Java 프로그래밍 상의 향상점 • JMS API 상에서 모든 MQMD 필드들에 대해 Properties로 접근 • 프로그램 상에서 접근 가능하도록 선언 필요 • 애플리케이션이 JMS 스펙을 넘어서는 WMQ 프로세스 처리를 필요로 하는 경우 유용 • JMS API 상에서 전체 Message 컨텐츠에 대한 접근 가능 • Bytes Array로 전체 컨텐츠 접근 • 이전에는 보통 제거되었던 RFH2 folders등의 정보를 탐색할 수 있음 • Java를 위한 각종 Message Header Classes제공 • PCF(Programmable Command Format) Structure를 이전보다 쉽게 구성할 수 있는 이점 • MQI에서 쓰이는 다른 WMQ 내의 Header Structure에 용이한 접근 가능 • 예: MQCIH, MQDLH Classes 제공
Client 성능 관련 향상점 1: Read Ahead • Client 연결을 위한 미리 읽어 오기 기능("Read Ahead“): • Client가 GET할 가능성이 있는 다수의 Message를 미리 MQGET하여 Client 측의 Read Ahead Buffer에 저장 • 관리 인터페이스를 통해 이 옵션을 사용할지 여부 결정: 애플리케이션 코드에 영향 없음, 오브젝트 설정과 API 옵션으로 적용 가능 • 신규 오브젝트 등록정보로 추가, 디폴트는 Off • API 옵션: ex) MQOO_READ_AHEAD • 연결 상태에서 미리 읽기 옵션 선택 여부 확인 • JMS Client 인터페이스도 MQI와 동일한 이점이 부여됨 • Read Ahead Buffer 크기나 그 크기가 결정되는 방식을 설정 • Client의 성능 향상 VS Low Quality of Service • Read Ahead Buffer의 Message는 버려지거나 • Client 코드가 Buffer를 모두 소모할 때까지 기다리도록 구성 • 일부 API 옵션에 대한 사용 제한: ex) MQGMO_SYNCPOINT
Client 성능 관련 향상점 2: Asynchronous Put • Client의 비동기적인 Put ("Asynchronous Put또는 Fire & Forget“): • 애플리케이션은 MQPUT Call에 대해 동기적으로 그 결과에 대한 CC(완료 코드)나 RC(리턴 코드)를 동기적으로 기다리지 않겠다고 선언 가능 • 대신 이후에 그 결과를확인할 수 있음; 새로운 MQI Call인MQSTATCall 사용 • Client 코드는 CC=OK나 RC=OK를 발행하고 나서Message를 네트워크를 통해 Queue Manager로 보냄 • Completion Code = OK가 Message가 Queue에 문제 없이 쓰여진 것을 의미하는 것은 아님 • 관리 인터페이스를 통해 이 옵션을 사용할지 여부 결정: 애플리케이션 코드에 영향 없음, 오브젝트 설정과 API 옵션으로 적용 가능 • 신규 오브젝트 등록정보로 추가, 디폴트는 Off • API 옵션: ex) MQPMO_ASYNC_RESPONSE • 적절한 환경 하에 Client에 적용하는 경우 큰 성능 향상 기대 • 적용 가능한 환경 • Non-persistent Message 또는 단일 UOW 내의 Persistent Message들만 가능 • Client로 연결한 애플리케이션만 가능
향상된 Client Connection관리 1 • Multi-threaded Client 애플리케이션을 위한 Conversation 공유(Multiplexing) • 같은 Process에서 파생된 Thread는 같은 소켓(Socket) 내에서 처리 • Channel 설정 절차는 최초에 한 번만 수행되어 두 번째와 그 이후에 파생되는 Client 연결 Thread는 더욱 빠른 소켓 처리 시작 • Server 쪽 Socket 수의 낭비를 막을 수 있음 • 그에 따라 Queue Manager 쪽의 필요 Thread를 줄일 수 있음 • 양방향 Heartbeat을 통해 더 신속한 Client 장애 감지 • 오브젝트 및 API 옵션 상의 변화 • SVRCONN Channel의 SHARECNV 값: Socket 당 최대 공유 Connection 수 • MQI Client + JMS Client 모두 개선 • Client Connections관리 • 단일 컴퓨터에서 해당 SVRCONN Channel을 통해 허용할 Client 연결 인스턴스 수를 제한하고 확인 가능 • 최대 인스턴스; MAXINST( ): 해당 SVRCONN Channel에 대한 최대 연결 인스턴스 개수 • Client 당 최대 인스턴스; MAXINSTC( ): 해당 SVRCONN Channel에 대한 단일 Client(IP) 당 최대 연결 인스턴스 개수 • 의도적인 또는 의도적이지 않은 Client의 Server 자원 점유에 대한 예방 차원의 대응에 적합
향상된 Client Connection관리 2: Client Multiplexing SVRCONN Channel의 Conversation 공유(대화 공유) SVRCONN Channel의 상태에서 확인할 수 있는 공유 상태
향상된 Client Connection관리 3 개별 Client 최대 수 도달 에러 Message
WMQ 버전 7의 새로운 기능과 JMS 스펙 간의 연결 JMS Client WMQ Queue Manager C hC Socket S S S hC hC hC Consumer Consumer x Producer Consumer Consumer Producer Consumer JMS App WMQ App
WebSphere MQ Bridge for HTTP • Rich Internet 애플리케이션이 Enterprise Messaging 인프라인 WMQ에 쉽게 접근 • WMQ의 Queue와 Topic을 URI에 맵핑 • AJAX와 같은 Web 2.0 애플리케이션들이 URI 호출을 통해 MQGET와 MQPUT 수행 • 웹 브라우저에서 Queue나 Topic으로 Message를 전송하거나 받을 수 있음 • Low Latency Web Pub/Sub과 같은 커뮤니케이션 모델 구현 가능: ex) 주식 정보, 스포츠 중계, 항공/철도 출발/도착 정보 등 • Non-servlet(JSP) Implementation • HTTP만 지원되면 어떤 플랫폼이든 WMQ에 접근 • WMQ 미지원 플랫폼: ex) 다양한 Linux 배포판들 • Pervasive 장치들: POS 장비, RFID 리더 등 • Client 측에 라이브러리 설치 필요 없음 • 기타 Lightweight Client 플랫폼
WebSphere MQ Bridge for HTTP - Architectural Overview Web Browsers Javascript AJAX http://mq.com:1415/msg/ Queue Manager WMQ JMS Client Connection queues/myQ SVRCONNCHANNEL J2EE Application Server HTTP: POST/GET/DELETE HTTP Clients topics/stocks/IBM WMQ HTTP Bridge WMQ JCA + JMS WMQ Bindings Connection Java libwww
HTTP-MQI Call맵핑 • Queue 또는 Topic을 구분하기 위해 URI정의 • REST 프로토콜에 기반한 리소스 맵핑 • Message Format: • 헤더(MQMD)는HTTP 헤더에 추가됨 • Message 본문은 HTTP 본문으로 전달됨 • Message Type은HTTP Content-Type을 통해 전달됨 • “text/plain” 또는 “text/html”는 WMQ의 문자열 Message인 MQFMT_STRING에 해당되며 • 기타 다른 유형의 Message는 WMQ 이진 Message인MQFMT_NONE으로 맵핑
WMQ 버전 7의 Explorer 향상점 • Queue Manager 그룹설정(Sets) + Explorer Configuration Export/Import 지원 • Queue Manager들을탐색창 내에서 그룹으로 나누어 관리할 수 있음 • 가령,"Test", "Production“등으로 그룹을 작성해 그 용도에 따라 접근하도록 분류 • 이와 같은 설정을 Explorer에서 Export/Import할 수 있어 관리 유연성 증가 • 보안 설정 • Channel Exits와userid/password에 대한 설정이 용이해졌음 • Explorer를 통해 원격지 Queue Manager에 연결하고자 할 때 Password 관리자를 통해 로그인 가능 • 편의를 위해 Password를 컴퓨터에 안전하게(암호화하여) 보관 • (사용자 설정을 위해 Client 채널 설정 불필요 및 보안 수준 향상) • 이전 버전 대비 더 긴밀한JMS관리 통합 • Connection Factory나 Destination과 같은 JMS 오브젝트를 작성하면서, 동시에 이를 WMQ의 오브젝트인 Queue 또는 Topic과 연관시킬 수 있음 • Explorer에서 직접 JNDI 컨텍스트에 대한 설정이 가능하며 JNDI 네임스페이스에 오브젝트 스펙을 직접 등록 • Message 찾아보기(Browse) 옵션 설정 • Message의 개수나 열람할 Message의 바이트를 지정 가능
성능 향상 • Persistent Publish & Subscribe 처리량 최고 60%증가 • Non-persistent Client 처리량 최고 300%증가 • JMS Selector 처리량 최고250% 증가 • Message Listener(Message Driven Bean)처리량 최고 45%증가 • 자세한 버전 별 성능 비교는 SupportPacs로 제공되는 버전 7 Performance Report 참고
WebSphere MQ 버전7 - 요약 • Publish & Subscribe에 대한 기능 및 성능 향상 • JMS Implementation에 대한 지원 확대와 성능 향상 • 관리성 향상 • MQI 기반의 개발 용이성 증대 • 전체적인 성능 향상(Performance Report 발행)
M B SOA ESSAGING ACKBONE Skills End-Points Qualities-of-Service Delivery Styles Client-Server Transactional Vendor Platforms Languages JEE, .NET, etc Backbone COBOL, C/C++, RPC Java, JEE, JMS .NET, C#, VB, WCF AJAX, Perl, Python… Guaranteed Operating Systems Point-to-Point Persistent Exploitation & Support Peer-to-Peer At-Most-Once Applications Orientations Publish/Subscribe Replay Service Batch Files Message Resource… SAP, Siebel, etc… Grid At-least-once Devices Bus Mobile, Wireless, PoS, Sensor, Actuator, RFID… Best-Effort Multicast Fire-and-Forget Web services Mindsets Unicast Request-Reply SOAP, WSDL, WS-RM, WS-N… WSDL, XML, WS-* REST, MEST, KISS Web 2.0 Fastest speed HTTP, AJAX, REST,… Lowest Latency Appliances IBM’s Vision – SOA Messaging Backbone • 모든 Transport 요건에 대한 범용의 Messaging Backbone을 제공
M B SOA • 15 년이 넘도록 Messaging기술에서 Leadership 유지 15년이 넘도록 검증된 기술 ESSAGING ACKBONE • Platforms, technologies, languages에 대한 폭넓은 지원 • IBM은 Messaging 분야에만 9,300 명이 넘는 certified developers 를 보유 다양한 지원 가장 많이 사용되는 Messaging Backbone • 10,000 이상의 고객이 IBM Messaging Backbone 사용 • Fortune50고객중 90% 이상, Fortune10고객중 9고객이 사용 • Global 25 중 80% 이상, Global 10 중 7개 고객이 사용 • 공공 고객은 하루 675,000,000 이상의 message 를 전송 • 금융권 고객은 하루 213,000,000 이상의 message 전송 ( z/OS only ) 신뢰성 있는 Data 전송 (하루 수백억의 message 처리) • 금융권고객은 MQ Network을 통해 하루 1조 달러이상의 data traffic 을 처리 Mission-critical Backbone으로 사용 • Messaging and ESB 분야에 120개가 넘는 특허 소유 • 새로운 WebSphere MQ family 제품 • 항상 제품에 대한 enhancements, updates and newreleases제공 계속되는 기술투자와 Innovation Why IBM? * Results reported from actual IBM WebSphere MQ implementations