Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Better Scalable, Flexible SOA Platform v 0.8.0 이기동 , 2008. 03. 26 [email_address]
목차 <ul><li>Enterprise Application Development – Spring Framework </li></ul><ul><li>Enterprise Integration – Enterprise Ser...
Enterprise Application Development – Spring Framework <ul><li>IOC, AOP, Service Abstraction  의  Combination. </li></ul><ul...
Enterprise Integration – Enterprise Service Bus(ESB) Mule <ul><li>Open Source ESB Framework, Integration Platform. </li></...
Grid Implementation - GigaSpaces <ul><li>JavaSpaces Implementation. </li></ul><ul><li>Java Grid Technology. </li></ul><ul>...
GigaSpaces Usage –  대용량  Data  처리 <ul><li>Master-Worker Pattern  사용 . </li></ul><ul><li>Messaging Grid  사용 . </li></ul><ul...
GigaSpaces Usage – Logging <ul><li>Messaging Grid  를 통한  log  통합 . </li></ul><ul><li>Application  들은  Log Data  를  Messagi...
GigaSpaces Usage –  통계처리 <ul><li>Master-Worker Pattern  사용 . </li></ul><ul><li>Messaging Grid  사용 . </li></ul><ul><li>Batc...
GigaSpaces Usage – Real Time Monitoring <ul><li>API  처리에 따른  AOP  를 통해  Messaging Grid  에  Log Data  를  Write. </li></ul><...
BPM - jBPM <ul><li>Workflow, Business Process Management, Service Orchestration. </li></ul><ul><li>BPM  기반  Application  은...
JCR Implementation - Jackrabbit <ul><li>Content Repository for Java Technology API (JCR). </li></ul><ul><li>JSR 170 Refere...
Rules - Drools <ul><li>Programming Code  의 여러  if, else, then  을 외부  rule script  로 분리 . </li></ul><ul><li>Source Code Rec...
Move to OSGi <ul><li>OSGi  는  Software Construction  에 관함 :  여러 개의 작은  Component  들을 엮어서  System  을 만듬 . </li></ul><ul><li...
BPM based SOA Platform <ul><li>BPM  중심의  Business Work-Flow  관리 . </li></ul><ul><li>ESB Framework Mule  에서 다양한  Protocol/T...
Scalable SOA Platform <ul><li>Space(JavaGrid)  가  Message Bus  및  IMDB  역할 수행 . </li></ul><ul><li>Space  는  Massive  한  Tr...
Pluggable + Scalable SOA Platform <ul><li>Spring  기반의  Application  이  Bundle  형태로 쪼개짐 . </li></ul><ul><li>이들  Bundle  사이에...
Productive Web MVC Framework - Grails <ul><li>Grails  는  Java Web MVC Framework. </li></ul><ul><li>Grails = Groovy + Sprin...
Grails + Scalable SOA + Messaging System Spring Mule BPM Rules Space Message Bus / IMDB JavaSpace Grails JavaSpace Browser...
References <ul><li>Spring Framework:  http://www.springframework.org/ </li></ul><ul><li>Mule:  http:// mule.mulesource.org...
Upcoming SlideShare
Loading in …5
×

Better Scalable Flexible Soa Platform 0.8.0

1,850 views

Published on

Scalable SOA Framework
(Note: it is written in Korean)

Published in: Technology, Education
  • Be the first to comment

Better Scalable Flexible Soa Platform 0.8.0

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

×