Better Scalable, Flexible SOA Platform v 0.8.0 이기동 , 2008. 03. 26 [email_address]
목차 Enterprise Application Development – 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
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.
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/ )
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  로서 사용 .
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
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 ..
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
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
BPM - jBPM Workflow, 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  를 사용 .
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  를 갖을수 있음 .
Rules - Drools Programming 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
Move to OSGi OSGi  는  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.
BPM based SOA Platform 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
Scalable SOA Platform Space(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
Pluggable + Scalable SOA 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
Productive Web MVC Framework - 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
Grails + Scalable SOA + 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
References Spring Framework:  http://www.springframework.org/ Mule:  http:// mule.mulesource.org /display/MULE/Home GigaSpaces:  http:// www.gigaspaces.com/os_overview.html OSGi Presentation:  http://www.infoq.com/presentations/osgi-the-foundation OSGi Home:  http://www2.osgi.org/Main/HomePage Spring OSGi:  http://www.springframework.org/osgi Eclipse Equinox:  http://www.eclipse.org/equinox/ Apache Felix:  http://felix.apache.org/site/index.html Knopflerfish:  http://www.knopflerfish.org/ Infiniflow:  http://www.paremus.com/products/products.html EIP Patterns:  http:// www.enterpriseintegrationpatterns.com/eaipatterns.html jBPM:  http:// labs.jboss.com/jbossjbpm / Drools:  http:// labs.jboss.com /drools/ JCR(JSR 170):  http:// jcp.org/en/jsr/detail?id =170 Jackrabbit:  http:// jackrabbit.apache.org / Hibernate:  http:// www.hibernate.org / Grails:  http:// grails.org /

Better Scalable Flexible Soa Platform 0.8.0

  • 1.
    Better Scalable, FlexibleSOA Platform v 0.8.0 이기동 , 2008. 03. 26 [email_address]
  • 2.
    목차 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
  • 19.
    References Spring Framework: http://www.springframework.org/ Mule: http:// mule.mulesource.org /display/MULE/Home GigaSpaces: http:// www.gigaspaces.com/os_overview.html OSGi Presentation: http://www.infoq.com/presentations/osgi-the-foundation OSGi Home: http://www2.osgi.org/Main/HomePage Spring OSGi: http://www.springframework.org/osgi Eclipse Equinox: http://www.eclipse.org/equinox/ Apache Felix: http://felix.apache.org/site/index.html Knopflerfish: http://www.knopflerfish.org/ Infiniflow: http://www.paremus.com/products/products.html EIP Patterns: http:// www.enterpriseintegrationpatterns.com/eaipatterns.html jBPM: http:// labs.jboss.com/jbossjbpm / Drools: http:// labs.jboss.com /drools/ JCR(JSR 170): http:// jcp.org/en/jsr/detail?id =170 Jackrabbit: http:// jackrabbit.apache.org / Hibernate: http:// www.hibernate.org / Grails: http:// grails.org /