목차 Enterprise ApplicationDevelopment – Spring Framework Enterprise Integration – Enterprise Service Bus(ESB) Mule Grid Implementation - GigaSpaces GigaSpaces Usage – 대용량 Data 처리 GigaSpaces Usage – Logging GigaSpaces Usage – 통계처리 GigaSpaces Usage – Real Time Monitoring BPM – jBPM JCR Implementation – Jackrabbit Rules – Drools Move to OSGi BPM based SOA Platform Scalable SOA Platform Pluggable + Scalable SOA Platform Productive Web MVC Framework – Grails Grails + Scalable SOA + Messaging System References
3.
Enterprise Application Development– Spring Framework IOC, AOP, Service Abstraction 의 Combination. EJB Container 없이 쉽게 Enterprise Application 개발 . Productivity, Manatenance 용이 . 복잡한 Configuration 기능은 어려운 Enterprise Application 구현을 쉽게 실현시킴 . non-invasive 형식의 POJO 사용은 복잡한 Technology 를 단순화 함 . 타 Technology 및 Vendor Product 에 영향 (EJB 3.0, Bea WebLogic 10, SCA, etc.) Industry 에 popular 한 framework.
4.
Enterprise Integration –Enterprise Service Bus(ESB) Mule Open Source ESB Framework, Integration Platform. Enterprise Integration Patterns book 을 근간으로 만들어짐 . 많은 Connectivity Support. POJO 기반의 UMO Component Model. BPM support. GigaSpaces support. Spring support. JBI support. Industry popular open source ESB product(Customer List: http:// www.mulesource.com /customers/ )
5.
Grid Implementation -GigaSpaces JavaSpaces Implementation. Java Grid Technology. Linear Scalability 실현 . Data Grid: distributed Caching, Database Caching. Messaging Grid: JavaSpaces based messaging, virtual JMS Implementation. Spring support. Mule Integration. Mule JMS Clustering support(Space as JMS Implementation). Hibernate support. jBPM Cache 로서 사용 .
6.
GigaSpaces Usage – 대용량 Data 처리 Master-Worker Pattern 사용 . Messaging Grid 사용 . Linear Scalability 수행 . Master Worker 1 Worker 2 Worker 3 Worker N .. Space Message Bus Unprocessed Data Processed Data
7.
GigaSpaces Usage –Logging Messaging Grid 를 통한 log 통합 . Application 들은 Log Data 를 Messaging Grid 에 asynchronous 하게 write. Logging Service 는 Messaging Grid 로 부터 event 를 받아 Log Data 를 take 함 . 이때 Logging Service 는 Parallel Processing 이 진행 . Log Data 를 Batch Update 형식으로 File System 에 저장 . App. 1 Space Message Bus Logging Service Log Data File System App. 2 App. 3 App. N ..
8.
GigaSpaces Usage – 통계처리 Master-Worker Pattern 사용 . Messaging Grid 사용 . Batch 기능 . File System 에 모여진 Log Data 를 읽어 Batch 형식으로 Messaging Grid 에 write. 해당 Worker 는 일을 수행한후 다시 process 된 Data 를 return. Master 는 결과를 모아 얻음 . Master Worker 1 Worker 2 Worker 3 Worker N .. Space Message Bus Unprocessed Data Processed Data File System
9.
GigaSpaces Usage –Real Time Monitoring API 처리에 따른 AOP 를 통해 Messaging Grid 에 Log Data 를 Write. Messaging Grid 에 있는 Log Data 를 Monitoring Service 에서 Take. Monitoring Service 에서 Log Data 를 Dashboard 에 용도에 맞게 Message Processing 진행 . UI 에서 Dashboard 로 보여주거나 Threshold 에 따라 Alert 기능 (Emailing, SMS, etc). App. 1 Space Message Bus Monitoring Service Log Data App. 2 App. 3 App. N .. Dashboard Alert
10.
BPM - jBPMWorkflow, Business Process Management, Service Orchestration. BPM 기반 Application 은 typical hub-spokes architecture. Central state management. Business Intelligence tool 을 통한 Business Activity Monitoring. BPM 은 Top-down methodology 로서 SOA 구현에 용이 . (Bottom-up 형식은 예를들어 SCA 와 같은 Service Composition.) Business Analyst 와 Developer 의 구분 . Development Cycle 구성에 서로 밀접한 관계를 만듬 . Agility 를 기본으로 개발인원 구성 . Business Analyst 는 Programming Language 를 거의 알필요없이 jPDL 만 정의를 내림 . 개발자는 jPDL 및 Programming 에 대한 지식필요 . BPEL 은 latency 가 critical 하지 않은 Web Services 세상에서 사용된다면 jPDL 은 massive 한 transaction 이 있는 Messaging System 에서 사용 . 이때 Canonical Data Model type 은 java object. BPM 의 중요역할은 State Management. 효율적 State Management 를 위해 직접적 DB 접근보다는 Cache 사용을 통한 Performance 향상 . Cache 로는 GigaSpaces 사용으로 massive IO 에 견뎌야함 . Mule 과의 연동을 위해 대부분 State-Node 를 사용 .
11.
JCR Implementation -Jackrabbit Content Repository for Java Technology API (JCR). JSR 170 Reference Implementation. Target applications: Content management, Document management, Records management Implementation: Read-Only(One-way), Read-Write(bi-directional) Transaction Management(JTA) Observation: Event Notification for repository changes. Versioning: 이전에 변화된 Data 를 얻을수 있음 . Query: Xpath, SQL. Node 와 Properties 구성 . Node 는 Data 를 Organize 함 . Properties 는 Data 를 저장함 . File System 인 경우 예를들어 Node 는 directories 와 같고 Properties 는 files 와 같음 . Node 는 Sub-node 뿐만 아니라 Properties 를 갖을수 있음 .
12.
Rules - DroolsProgramming Code 의 여러 if, else, then 을 외부 rule script 로 분리 . Source Code Recompilation 이 필요없이 Rule Script 의 변경으로 Process 실행 . Central Repository 에 Rules deploy 함 . JCR 을 통해 Server Restart 없이 dynamical 한 deployment 실현 . package org.jbpm.action import org.jbpm.action.Customer; import org.jbpm.action.Order; import org.jbpm.context.exe.ContextInstance; global ContextInstance ci rule "Determine Shipper" when Customer( region >= 1 ) Order( totalAmount >= 0 ) then ci.setVariable("shipper", "FEDX"); System.out.println("ship via FEDX " ); end
13.
Move to OSGiOSGi 는 Software Construction 에 관함 : 여러 개의 작은 Component 들을 엮어서 System 을 만듬 . OSGi 는 Components 에 관함 : Component 들이 서로 엮어져서 실행 . OSGi 는 Components Management 에 관함 . OSGi 는 Universal Middleware 에 관함 . Software Complexity 가 증가할수록 OSGi 는 Productivity 증가에 Good choice. Component Reusability, Flexibility 는 OSGi 의 기본 . Runtime 에서 Bundle(Service) 추가 삭제를 dynamical 하게 할수 있음 . Quality of Service(Remote Management, etc) 문제 해결에 용이 . Open Source Implementation: Apache Felix, Equinox, Knopflerfish, etc.
14.
BPM based SOAPlatform BPM 중심의 Business Work-Flow 관리 . ESB Framework Mule 에서 다양한 Protocol/Transport 가 Support 됨으로서 쉽게 Enterprise Integration 을 할수 있음 . SOA 를 이룩하기 위해 Enterprise Integration 은 필수 , 즉 ESB 는 필수 . Spring Framework 가 기본을 이루고 있어 POJO(Component) Model 을 얻게 됨 . POJO Model 은 loosely coupled, flexible 하게 Service 들을 사용할수 있게 됨 . HTTP JMS JCA SOAP Spring Mule TCP BPM Rules Binding
15.
Scalable SOA PlatformSpace(JavaGrid) 가 Message Bus 및 IMDB 역할 수행 . Space 는 Massive 한 Transaction 및 Data 에도 견딜수 있음 . Space 를 통해 linear scalability 를 얻음 . 복잡한 Clustering, Distributed Caching, Session Replication/Sharing 해결 . Spring Mule BPM Rules Space Message Bus / IMDB JavaSpace
16.
Pluggable + ScalableSOA Platform Spring 기반의 Application 이 Bundle 형태로 쪼개짐 . 이들 Bundle 사이에는 dependency 가 있음 . OSGi 를 이해하는 모든 OSGi 에서 똑같이 Bundle 이 돌아간다는건 중요한 이점 . Spring 기반의 Bundle Application 은 OGSi Bundle 형태로 변화할 필요없음 . 이는 Spring OSGi 가 알아서 OSGi Runtime 에게 Bundle 형태라고 이해를 시킴 . Bundle Version 이 다르지만 같은 Class 역시 동시 loading 이 가능 . 즉 다른 Bundle 에서 사용하는 dependency Class 가 같아도 version 이 다르면 서로 같은 OSGi Runtime 에서 동시에 사용 가능 . OSGi 는 Bundle Deployment Management 에 중요한 의미 , 즉 Server Restart 없이 Runtime 시 Bundle 을 deploy/undeploy 를 자유롭게 할수 있음 . Component Model 의 실제적인 구현 형태가 바로 OSGi. Space Message Bus / IMDB JavaSpace Spring OSGi OSGi Runtime Bundle Bundle Spring Mule BPM Rules Spring Mule BPM Rules
17.
Productive Web MVCFramework - Grails Grails 는 Java Web MVC Framework. Grails = Groovy + Spring + Hibernate + 여러 Plugin. Productive 하게 Web UI 를 만들수 있음 . Spring 기반이기에 매우 flexible. Groovy 의 powerful 한 기능인 Closure, Builder, Domain Specific Language 활용 . Spring Groovy Hibernate Plugin
18.
Grails + ScalableSOA + Messaging System Spring Mule BPM Rules Space Message Bus / IMDB JavaSpace Grails JavaSpace Browser Access (HTTP) ESB Adaptor Legacy ESB Adaptor Legacy JavaSpace JavaSpace Spring Groovy Hibernate Plugin