분산애플리케이션개발을위한 기업통합 (EIPs) 전략 바른모주식회사차정호대표 (hinunbi@barunmo.com) - 0 -
1. 기업통합 (Enterprise Integration) 문제 기업시스템 - 1 -
1. 기업통합 (Enterprise Integration) 문제 분산애플리케이션시스템 C Python JMS TCP SOAP Unix Windows JAVA Shell DB SMTP Linux Ruby PHP SQL J2EE.NET FTP SOA HTTP ESB ㅜ. ㅜ - 2 -
1. 기업통합 (Enterprise Integration) 문제 분산애플리케이션통합? C Python JMS TCP SOAP Unix Windows JAVA Shell DB??? SMTP Linux PHP J2EE HTTP Ruby SQL.NET FTP SOA ESB 수용할것인가? 개선할것인가? - 3 -
1. 기업통합 (Enterprise Integration) 문제 분산애플리케이션데이터 DTO Binary String XML Big Data NoSQL Stream Serialized JAXB Table Crypt Json Euc-kr Utf8 CSV ㅜ. ㅜ - 4 -
1. 기업통합 (Enterprise Integration) 문제 분산애플리케이션데이터통합? DTO Binary String XML Big Data NoSQL Stream Serialized??? JAXB Table Crypt Json Euc-kr Utf8 CSV 수용할것인가? 개선할것인가? - 5 -
2. 기업통합 (Enterprise Integration) 기업통합이란? 기업통합 (Enterprise integration) 은기업분산컴퓨팅환경에서시스템간통신, 데이터교환에대한아키텍처기술이다. François Vernadat (1996). Enterprise Modeling and Integration: Principles and Applications, Chapman & Hall, London 출처 ) 위키피디아 http://en.wikipedia.org/wiki/enterprise_integration#cite_note-0-6 -
2. 기업통합 (Enterprise Integration) 기업통합역사 출처 ) 위키피디아 http://en.wikipedia.org/wiki/enterprise_integration - 7 -
2. 기업통합 (Enterprise Integration) 일반적인기업통합방법 1. 파일전송 (File Transfer) : FTP 2. 데이터베이스공유 (Shared Database) : RDBMS 3. 원격프로시저호출 (Remote Procedure Call) : Web Service, EJB Call 4. 메시지 (Messaging) : Message Queue, 전문통신 5. 솔루션 : EAI (Enterprise Application Integration), ESB, SOA - 8 -
2. 기업통합 (Enterprise Integration) 기업통합방법의문제 1. 파일전송 (File Transfer) 느린데이터이동속도 2. 데이터베이스공유 (Shared Database) 애플리케이션사이단단한결합 3. 원격프로시저호출 (Remote Procedure Call) 네트워크장애시서비스중단 4. 메시지 (Messaging) 메시지동기화문제 ( 메시지순서, 동기화 ) 5. 솔루션 (EAI) 미성숙된고가솔루션, 기존애플리케이션연동문제 기업통합에가장좋은방법은? - 9 -
3. 기업통합패턴 (Enterprise Integration Patterns) 기업통합패턴 (EIPs)? 기업분산컴퓨팅환경에서시스템간통신, 데이터교환아키텍처의디자인 ( 밑그림 ) 문제에대한해결책을문서화하는정식방법이다. Gregor Hohpe, Bobby Woolf Addison Wesley (2003). - 10 -
3. 기업통합패턴 (Enterprise Integration Patterns) 기업통합패턴 (EIPs) 방법론 느슨한결합 (Loose Coupling) 아키텍처 메시지시스템 (Messaging System) 의재해석 패턴아이콘 (Pattern Icon) 도입 기업통합패턴다이어그램 (EIPs Diagram) 사용 우리들의일상은대부분비동기적이다. 반가운편지, 아침에받아보는신문, 합격자발표 - 11 -
3. 기업통합패턴 (Enterprise Integration Patterns) 아키텍처설계방향 기존방법론 기업통합패턴 (EIPs) 패러미터 메서드 (Method) 처리 (Process) 데이터소유 메시지 (Message) 주소 (Address) 전달 (Send, Receive) 메시지채널 단단한결합 느슨한결합 - 12 -
3. 기업통합패턴 (Enterprise Integration Patterns) 기업통합패턴 (EIPs) 개요 1 Message Endpoint 4 Message Routing 5 Message Transformation Application A Endpoint Channel Router Translator Application B Message 2 Message Consutruction Monitoring 3 Messaging Channels 6 System Management 애플리케이션사이메시지이동과변환패턴 - 13 -
3. 기업통합패턴 (Enterprise Integration Patterns) 기업통합패턴 (EIPs) 아이콘 65 개패턴이름에대응되는아이콘정의 Message Endpoint Message Consutruction Messaging Channels Message Endpoint Competing Consumer Message Request Reply Channel Publish-Subscribe Channel Message Bus C Message Gateway Message Dispatcher Command Message Return Address Guaranteed Delivery Channel Adapter Messaging Bridge? D A B! Transactional Client Selective Consumer Document Message Correlation ID Invalid Message Dead Letter Channel Datatype Channel E 1 2 3 Message Transformation Polling Comsumer Durable Subscriber Event Message Message Sequence Event Driver Consumer Service Activator Message Translator Envelope Wrapper Message Enricher Content Filter Nornamlizer Claim Check System Management Message Routing Control Bus Channel Purger Test Message Message Router Content Based Router Composed Msg. Processer Process Manager Message Filter Wire Tap Message Store Detour Aggregator Resquencer Splitter Rounding Slip Recipient List 참고 ) MS Visio Stencil 다운로드 http://eaipatterns.com/downloads.html - 14 -
3. 기업통합패턴 (Enterprise Integration Patterns) 기업통합패턴 (EIPs) 다이어그램 시작 재고확인 고객검증 토픽채널 고객검증 큐채널 주문메시지 NEW_ORDER 재고확인 OK? 예외처리 상품발송 토픽채널 내용기반라우터 상품발송 송장발송 송장발송 VALID_ORDER 집합기 INVALID_ORDER 종료 Activity 다이어그램 EIPs 다이어그램 - 15 -
3. 기업통합패턴 (Enterprise Integration Patterns) 기업통합패턴 (EIPs) 프레임워크 Apache ServiceMix : ESB 플랫폼 + EIPs 지원 (2005년) Apache Camel : EIPs Framework (2007년) MuleESB : ESB 플랫폼 + EIPs 지원 (2008년) Spring Integration : Spring Framework + EIPs 지원 (2011년) - 16 -
4. Apache Camel Apache Camel Camel Spring Framework Enterprise Integration Patterns 애플리케이션통합 Camel Component 기업통합 - 17 -
4. Apache Camel Camel 은왜매력적인가? EIPs 다이어그램 DSL 표현 (Domain Specific Language: 특정분야언어 ) 메시지채널, 애플리케이션 Endpoint URI 표현 Spring Framework Spring Bean Integration 100+ Camel Component, Type Converter 다양한애플리케이션및데이터통합 Light Weight 거의모든자바기반컨테이너에탑재가능 - 18 -
4. Apache Camel EIPs 다이어그램 DSL 표현 URI 표현 Bean Integration public void configure() throws Exception { from("direct:seoul"). to("http://www.kma.go.kr/weather/forecast/mid-term-xml.jsp?stnid=109"). convertbodyto(document.class). to("bean:weatherextractor?method=print"); } - 19 -
4. Apache Camel EIPs 다이어그램 Spring XML DSL 표현 <bean id="weatherextractor" class="com.brm.weather.weatherextractor" /> <camelcontext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="direct:seoul" /> <to uri= "http://www.kma.go.kr/weather/forecast/mid-term-xml.jsp?stnid=109" /> <convertbodyto type="org.w3c.dom.document" /> <to uri="bean:weatherextractor?method=print" /> </route> </camelcontext> - 20 -
4. Apache Camel 100+ Camel Component Async Http Client Cache Event Google App Mail JCR Lucene Quickfix SMPP Velocity ActiveMQ Class Event Admin Hazelcast JDBC Mail Ref Solr VM APNS Cometd Exec Hadoop File System Jetty Mina Restlet Spring Web Service XMPP Atom Context File HL7 JMS MSV RMI SQL XQuery Amazon Simple DB Crypto Flatpack HTTP JMX MyBatis RNC StAx XSLT Amazon Simple Email CXF FreeMarker HTTPS JPA Nagios RouteBox Stream Zookeeper Amazon Simple Noti CXF Bean FTP ibatis JT/400 Netty RSS String Template Db4o Amazon Simple Queue CXF Rest FTPS IMap Kestrel Pax-Logging SEDA TCP Esper Amazon Simple Storage DataSet Google OAuth IRC Krati POP3 SERVLET Test Hibernate Bean Direct Google App Engine JavaSpace Language Printer SFTP Timer NMR Bean Validation DNS Google App login JBI LDAP Properties SIP UDP Scalate Browse EJB Google App Task jcloud Log Quartz SMTP Validation Smooks - 21 -
4. Apache Camel 어디에사용할것인가? Standalone Java Application Web Application J2EE Application JBI OSGi Google App Engine Java Web Start Spring Application Apache ServiceMix Apache ActiveMQ Apache Tomcat Jetty JBoss IBM WebSphere BEA WebLogic Oracle OC4j Google App Engine Amazon Virtual Machine - 22 -
4. Apache Camel 애플리케이션적용패턴 Camel Application Camel Spring Application Camel Application Application Application Camel Application Application Camel Camel Application Application Camel Camel Application - 23 -
5. Apache Camel 프로그램 프로그램작성예 (Main.java) public class Main extends RouteBuilder { } public static void main() throws Exception { } DefaultCamelContext ctx = new DefaultCamelContext(); ctx.addroutes(this); ctx.start(); public void configure() throws Exception { } from("direct:seoul"). to("http://www.kma.go.kr/weather/forecast/mid-term-xml.jsp?stnid=109"). convertbodyto(document.class). to("bean:weatherextractor?method=print"); - 24 -
5. Apache Camel 프로그램 기상정보수집프로그램 (100 라인 ) HTTP 컴포넌트 : 기상청웹사이트 HTTP Request Type Converter : XML Java Dom Object 변환 Bean : Dom Object 정보추출및화면출력 - 25 - 참고 ) 구글검색 : 기상청사이트서울날씨주간예보조회 http://www.barunmo.com/wiki/index.php/%ea%b8%b0%ec%83%81%ec%b2%ad_%ec%82%ac%ec%9d%b4%ed%8a%b8_%ec%84%9c%ec%9a%b8_%eb%82%a0%ec%94%a8_%ec%a3%bc%ea%b0%84_%ec%98%88%eb %B3%B4_%EC%A1%B0%ED%9A%8C
5. Apache Camel 프로그램 ETL 프로그램 ( 파일테이블등록 ) file:/fsapp/cms/rcvfiles Stream Line String Map bean:insert File 컴포넌트 : 파일자동감지 (Polling Consumer) Splitter : 파일스트림라인별추출 Type Converter : 라인스트림 Java Map 오브젝트변환 Bean : ibatis SqlClientMap을사용하여 CMS 레코드인서트등록 - 26 -
5. Apache Camel 프로그램 서버프로그램 (SNMS Trap Packet 수집 ) UDP Trap Packet mina:udp Trap Map Map Object seda:next Thread pool bean:dblogger logger:trap jms:queue:trap.received SNMS Trap Packet 수집서버 Mina 컴포넌트 : Apache Mina Network Framework 사용 Seda 컴포넌트 : Camel 내부비동기메시지큐 Dispatcher : 스레드풀 Bean 오브젝트 : 수집된 Trap Packet DB 저장 / 파일로그 / 메시지큐전송 - 27 -
5. Apache Camel 프로그램 Camel In Action Apache Camel 에대해더많은이 해를원하시는분들은읽어보기시 기바랍니다. Accessible to beginners, useful to experts Claus Ibsen, Jonathan Anstey Forewords by: Gregor Hohpe, James Strachan Manning (2011). - 28 -
6. 기업통합아키텍처적용 기업통합패턴적용사례 1) 개발요구조건 : 금융권 OTP (One Time Password) 도입일정에맞추어 OTP 시스템을 1달내오픈하라 2) 기업통합패턴적용 : 단일애플리케이션통합방식이아닌메시지시스템기반분산애플리케이션아키텍처 접속서버개발과비즈니스서버개발의완전한분리 통신없는전문비즈니스프로그램구현및단위테스트 비즈니스없는통신프로그램구현및단위테스트 - 29 -
6. 기업통합아키텍처적용 OTP 서버아키텍처 OTP 서버 OTP 서버제어 중계서버 Connector 미통지처리서버 중계서버 TCP/IP 전문해석기비즈처리 ActiveMQ 콜센터 Connector EBCDIC EUC-KR 금융보안연구원 Connector 콜센터 ( 텐덤 ) TCP/IP TCP/IP TCP/IP 금융보안연구원 EIPs 다이어그램 - 30 -
6. 기업통합아키텍처적용 동기, 비동기전환아키텍처 비동기패턴 동기패턴 2 CorrelationID Request Connector Threads 3 TCP Request 1 Request Response Biz Threads A B OTP 인증요구 TimeOut? Response Connector Threads 4 TCP Response 5 Selective Consumer (NemedMemQueue) CorrelationID 패턴 Selective Consumer 패턴 : NamedMemQueue 메모리큐 ( 타임아웃처리 ) - 31 -
6. 기업통합아키텍처적용 기업통합패턴적용사례 3) 기업통합패턴적용결과 : 1달기간내개발완료및서비스오픈 하루천만건이상 ( 초당 120건이상 ) OTP 인증처리가능시스템 4) 기업통합패턴적용교훈 : 메시지시스템은고속통신시스템이다. 기업통합패턴아키텍처적용시개발분업으로개발생산성을향상시킬수있다. ( 비즈니스개발과통신개발의분리 ) - 32 -
7. 맺음말 분산애플리케이션통합전략 느슨한결합 (Loose Coupling) 아키텍처지향 기업통합패턴 (EIPs) 활용 애플리케이션중립적메시지인프라도입 기존애플리케이션과조화 단계별통합 ( 수용과개선 ) - 33 -
7. 맺음말 낙타는다른짐꾼동물보다 4 배나 많은짐을싣는다. - 34 -
- 35 -