Sanggu's blog




최상단 광고 코드

 추천 사이트

 애자일 이야기 : http://agile.egloos.com
 서명덕 기자의 인터넷 : http://itviewpoint.com
 비지니스 뉴스 : http://www.ciobiz.co.kr
 MOCOMSYS : http://www.mocomsys.com
 Apache Software : http://www.apache.org
 소프트웨어 기술경력관리: http://career.sw.or.kr
 한이음 (지식경제부): http://www.hanium.or.kr
 IT 기술 뉴스: http://www.bloter.net/
 IBM 티볼리 까페: http://cafe.naver.com/tivolitool.cafe
 JAVA jar 검색 : http://www.findjar.com
 VM Ware 가상화: http://www.vmware.com

2011년 9월 30일 금요일

IBM - WESB (Websphere Enterprise Service Bus)

WESB

* WESB 경우 제가 처음 사용하였던 버전은 6.2 였고, 지금 현재 (11년 09월) 버전은 7.5까지 나온 상태입니다.
EJB 기반의 Hub 집중형 ESB인 IBM 제품은 웹 서비스(Web serviec) 요건을 수행하기에는 괜찮은 엔진입니다. 즉 provider쪽은 WESB이며 consumer 입장인 legacy 시스템에서 soap data를 주고 받기에는 WESB 사용을 추천합니다. 물론 ESB의 핵심인 Service orchestration 장점인 bus 형 engine, data routing, 전문 mapping 이러한 부분은 WMB (Websphere Message Broker) 기능이 확실히 좋습니다.
WESB 중요 기능을 나열해 보겠습니다.

1. WESB Architecture
아래 그림은 WESB 아키텍쳐 입니다. 메시지 전달은 Service Bus에서 하게 되며 실제 transaction을 처리하는 런타임은 SCA 모듈로 packaging 하여 WESB에서 life cycle을 관리 할 수 있습니다.


2. WESB와 WID와의 관계
WESB (Websphere Enterprise Service Bus)
- 이질적인 기술과 시스템들간에 서비스를 연결하는 것은 SOA
- Mediation (다중의 프로토콜 채널들을 통해 서비스 요청자 들이 같은 서비스들에 액세스 할 수 있음.)
- WebSphere ESB는 SCA 기반이고, 핵심적인 J2EE 및 웹 서비스 표준을 지원한다.

WID (Websphere Integration Developer)
- WID의 D는 developer의 약자인것 처럼, 개발도구 이며 크게 2가지를 한다.
1) 비즈니스 프로세스 구현
2) WESB 서버의 환경 설정및 SCA 설치 및 구동.

3. WESB- WID 중요 포인트
WESB, WID에서 가장 중요한 POINT는 아래와 같다.

1) WESB는 비즈니스 프로세스를 설치 및 구동, life cycle을 가지고 있는 실제 서버이다.
2) WESB에서 가장 중요한 컴포넌트는 SCA 모듈이다.
3) WID는 develop tool 이며, 모듈 개발, pure 자바 개발 및 서비스들을 연계 시켜주는 UI tool이다.
4) WID에서 WESB 서버 시작 중지 그리고 SCA 설치 및 시작, 중지를 할 수 있다

4. 통합 비지니스 구성
통합 비즈니스 구성은 비즈니스 프로세스를 정의하고 사용할 수 있도록 디자인 되어 있는 환경
어셈블리 다이어그램 – 비즈니스 프로세스 디자인.
종속성 – 종속 되어 있는 library import (java, j2ee, 정의할 자원)
통합 논리 – 자바 구현 코드
인터페이스 – 다양한 프로토콜 지원을 위한 메시지 필드 정의
맵핑 – 메시지 포맷 맵핑 작업
웹 서비스 포트 – WSDL생성 및 soap 메시지 구성하기 위한 메소드 정의

5. 생성 SCA 컴포넌트 구성
WESB에서 구동되는 SCA 모듈 (EAR)은 아래 4개의 모듈을 압축하고 있는 형태이다.
WebService module
- 모듈의 자바 구현 project 이다. 실제 코드는 이 project에서 하게 된다.
WebService App
- EAR 파일을 만들기 위한 설정 파일 이 있는 project 이다. 개발자가 건드리지 않아도 된다.
WebService EJB
- module project 및 통합 비즈니스 구성에서 flow를 디자인 했을 경우, ESB server와 통신하기 위해 자동 생성된 파일이다. 개발자가 건드리지 않아도 된다.
WebService Web
- 웹 서비스 및 http 관련 모듈을 만들경우 WSDL및 WEB-INF 파일 및 환경설정이 만들어진다. 필요한 경우 개발자는 port및 필요 환경 설정을 수정할 수 있다.

EI pattern - 엔터프라이즈 인티그레이션 패턴

What is EI Pattern?
We have identified over 60 patterns so far. The Table of Contents lists the problems addressed by each pattern. We organized the patterns into the following categories:
• Integration Styles document different ways applications can be integrated. These patterns present somewhat of a historical account of integration technologies. All subsequent patterns follow the Messaging style.
• Channel Patterns describe the fundamental attributes of a messaging system. These patterns are implemented by most commercial messaging systems. This section focuses on the interrelationships between different features and highlights implementation trade-off made by different vendors.
• Message Construction Patterns describe the intent, form and content of the messages that travel across the messaging system. The base pattern for this section is the Message pattern.
• Routing Patterns discuss mechanisms to direct messages from a sender to the correct receiver. Message routing patterns consume messages from one channel and republish the message to another channel that is determined by a varying set of conditions. The message content is not modified. The patterns presented in this section are special cases of the Message Router base pattern.
• Transformation Patterns change the information content of a message. In many cases, a message format needs to be changed due to different data formats used by the sending and the receiving system. Data may have to be added, taken away or existing data may have to be rearranged. The base pattern for this section is the Message Translator.
• Endpoint Patterns describe the behavior of messaging system clients. They illustrate different ways in which applications can produce or consume messages.
• Management Patterns provide the tools to keep a complex message-based system running. A message-based integration solution can process thousands or even millions of messages in a day. Messages are generated, routed, transformed and consumed. The solution has to deal with error conditions, performance bottlenecks and changes in the participating systems. Message management patterns address these requirements.

EIP 에서는 60 개 가량의 패턴을 분류
아래와 같은 카테고리로 나누어서 설명함
Integration Style – 어플리케이션 간의 통합
Channel Patterns – 메세징 시스템의 기본적인 속성에 대해서 설명
Message Construction Patterns – 메시지의 구성에 대해서 설명
Routing Patterns – 메시지가 정확한 수신에게 가는 방법을 토론. 메시지의 내용이 변경되는 건 아니며 어디로 가는지에 대해서만 이야기함.
Transformation Patterns – 메시지 콘텐츠의 정보변경, 많은 경우 송신에서 수신으로 갈때 메시지의 데이터 포맷이 변경되어야 함.
EndPoint Patterns – 메시지 시스템의 클라이언트에 대해서 설명, Application 이 어떻게 메시지를 생성하고 소비하는지에 대해 말함.
Management Patterns – 복잡한 메시지 기반 시스템을 유지할 수 있는 툴에 대해서 설명

Preface
This is a book about messaging. More specifically, it is a book about how to use message-based communication successfully to connect applications. It does not document any particular technology or product. Rather, it is designed for developers and integrators using a variety of messaging products and technologies, such as:
• IBM’s WebSphere MQ (formerly MQSeries)
• Microsoft's Message Queuing (MSMQ), accessible through a number of API's, including the System.Messaging libraries in Microsoft .NET
• Java Message Service (JMS) implementations incorporated into many J2EE application servers and standalone products
• Integration broker suites offered by vendors such as TIBCO, WebMethods, SeeBeyond, Vitria, and others
• Existing and emerging Web services standards such as SOAP, WSDL, WS-Reliability, etc.
This book is also about enterprise integration -- how to integrate independent applications so that they can work together. This goes beyond a single application with an n-tier architecture, which enables the application to be distributed across several computers. Whereas one tier in a distributed application cannot run by itself, integrated applications are independent programs that can each run by itself, yet that function by coordinating with each other in a loosely coupled way. Messaging enables data or invocations to be sent across the network using a “send and forget” approach where the caller sends the information and then goes on to other work while the information is transmitted in the background. Optionally, the caller can later be notified of the result through a callback. Asynchronous calls and callbacks can make a design seem more complex than a synchronous approach, but an asynchronous call can be retried until it succeeds, which makes the communication much more reliable. Asynchronous calls enable several other advantages such as throttling of remote calls, load balancing, quality of service tuning, and timeout handling.

주로 Messaging System 에 대해서 언급
Messaging 이 외에 File Transfer, Shared Database, Remote Procedure Invocation 이 존재
File Transfer
하나의 Application 이 다른 Application 이 추후에 읽어들일 파일을 쓴다. 이 Application 은 절대적인 파일이름, 파일경로, 그리고 언제 읽을 지와 쓸 지를 정해야 한다. 몇 Application 은 파일 전송 후 삭제하기도 한다.
Shared Database
하나의 Application 이 다른 Application 이 추후에 읽어들일 데이터를 DB 에 작성한다. 이 Application 은 DB 스키마와 조회할 때의 key, 그리고 언제 읽을 지와 쓸 지를 정해야 한다. DB lock 과 트리거링은 Application 을 설계 할 때 유용하다.
Remote Procedure Invocation
하나의 Application 이 몇 개의 procedure 를 공개하여 원격으로 접근 할 수 있게 한다. Application 은 procedure 가 사용 가능하게 하여야 하고, 데이터의 타입과 포맷을 맞춰 주어야 한다. 이 통신은 동기방식의 실시간 커뮤니케이션이다.
Messaging
Application 이 메세징 시스템에서 채널에 메세지를 통해서 통신하도록 해야 한다. 메시지의 포맷과 채널을 맞춰 주어야 하며, 동기 혹은 비동기 전송이 가능 .

What is a Messaging System?
Messaging capabilities are typically provided by a separate software system called a messaging system or message-oriented middleware (MOM). A messaging system manages messaging the way a database system manages data persistence. Just as an administrator must populate the database with the schema for an application’s data, an administrator must configure the messaging system with the channels that define the paths of communication between the applications. The messaging system then coordinates and manages the sending and receiving of messages. The primary purpose of a database is to make sure each data record is safely persisted, and likewise the main task of a messaging system is to move messages from the sender’s computer to the receiver’s computer in a reliable fashion.
The reason a messaging system is needed to move messages from one computer to another is that computers and the networks that connect them are inherently unreliable. Just because one application is ready to send a communication does not mean that the other application is ready to receive it. Even if both applications are ready, the network may not be working, or may fail to transmit the data properly. A messaging system overcomes these limitations by repeatedly trying to transmit the message until it succeeds. Under ideal circumstances, the message is transmitted successfully on the first try, but circumstances are often not ideal.
In essence, a message is transmitted in five steps:
1. Create - The sender creates the message and populates it with data.
2. Send - The sender adds the message to a channel.
3. Deliver - The messaging system moves the message from the sender’s computer to the receiver’s computer, making it available to the receiver.
4. Receive - The receiver reads the message from the channel.
5. Process - The receiver extracts the data from the message.

네트웍을 통해서 Message 를 하나의 System 에서 다른 System 으로 전송
메시지 전송의 5가지의 단계
Create
Sender 가 메시지를 생성하고 data 를 채우는 부분.
Send
Sender 가 메시지를 channel 에 넣음.
Deliver
메세징 시스템이 Sender’s System 에서 receiver’s System 으로 전송
Receive
Receiver’s System 이 channel 에서 Message 를 읽어 들임
Process
Receiver 가 Message 에서 data 를 추출, 처리한다.

웹 서비스 개념 (Web Service)

웹 서비스 개념 (Web Service)

A. 정의

1) 웹서비스는 언제, 어디서나, 어떤 환경에서나 원하는 정보나 응용기능 또는 서비스
자체를 제공해 주는 총체적 서비스이다.
2) 서로 주고받는 데이터 표준에 대한 정의를 규정함으로 매우 유연하고 서로의 이질적인 운영시스템, 이질적인 프로그램 언어 간의 커뮤니케이션 차이를 극복해 주는 연결고리 역할을 해 주는 것입니다. (agent 역할)


B. 필요성

.Net Remoting 기술을 이용하면 여러 .Net 지원 컴퓨터 간에 원격으로 정보를 교환을 한다.
이 기술을 이용해서 분산 시스템을 만들때는 한가지 제약 사항이 있는데, 네트워크로 연결된 모든 컴퓨터에 .Net Framework가 설치 되어야 한다. 모든 비 Windows 기반 운영체제에 까지 .Net flatform이 설치 되기 까지는 거의 불가능하다.
이에 XML 웹서비스는 이에 대한 대안이 된다.
(anytime, anywhere, anydevice, anyplatform)

EAI 와의 비교성 (경험상)
EAI는 이종간의 데이터 통합 (DB, XML, FILE) 이지만 웹서비스는 기능적인 측면까지 가능하다.

C. Architecture

서비스 제공자, 중개자, 요청자 사이의 관계를 설명하는 삼각형 모양의 Service Oriented Architecture(SOA) 이며 서비스 제공자(Provider), 서비스 요청자(Consumer), 서비스 레지스트리로(UDDI) 구성되는 웹서비스의 아키텍처를 흔히 SOA라고 부릅니다.

D.요소기술 개관(SOAP,UDDI,WSDL,WSE)

1) soap - SOAP 프로토콜로써 서비스간의 데이터를 교환 해주는 방식 프로토콜로 XML과 HTTP를 사용해서 어느 플랫폼이든지 해당 서버와 서비스에 접근할 수 있게 한다.
(Soap을 통해 UDDI내에 있는 웹 서비스 정보 제공자 조회)
2) uddi - UDDI는 웹서비스 등을 등록하고 이를 실시간으로 검색할수 있는 공용 디렉토리 (옐로우 페이지 비슷)
3) wsdl – UDDI에 등록된 웹 서비스를 어떻게 찾고 알아볼 수 있는지에 대한 XML 기반의
표준 언어. 설명서 같은 역할
4) wse - 인증서 및 웹 서비스에 대한 요청에 서명할 때 개인 키를 사용하여 서명된 메시지 해시를 생성합니다.
또한 공개 키를 암호화 된 메시지와 함께 전송하여 웹 서비스에서 서명을 확인하도록 할 수 있습니다.

E. 각 회사의 전략

MS
- 윈도우 운영체제의 시장 지배력을 바탕으로 닷넷 전략을 가시화로 타 회사들을 압박
- IBM과 같이 표준화 만들어 감.
IBM
-웹 서비스 표준뿐 아니라 MS와 함께 컨소시엄인 WSI를 주도하면서 MS와의 공조관계를 유지 하고 있다.

SUN
- 초기 웹 서비스 관련 표준화에 참여 하지 못하면서, JAVA의 개발적 이점을 살리지 못하고 뒤쳐져 있는 상황. 그러나 AOL, GM, sony등과 공동 자유연합을 구성하여 세를 규합

2011년 9월 29일 목요일

애자일 (Agile) 관련 책 추천.

애자일(Agile) 에 대해서 알고 싶다면 처음에 읽어 볼만한 책들입니다.
도움이 많이 되리라 생각됩니다.


 - Agile 맨탈 관련

도서명 ISBN
1 익스트림 프로그래밍 8991268102
2 스크럼과 XP 8991268609
3 The Art of Agile Development 9780596527679



- 테스팅
도서명 ISBN
1 테스트 주도 개발 9788991268043
2 실용주의 프로그래머를 위한 단위테스트 With JUNIT 9788991268036
3 소프트웨어 테스팅 법칙 293가지 9788956741826