Better Scalable Flexible Soa Platform 0.8.0

1,611
-1

Published on

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

Published in: Technology, Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,611
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
71
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×