3. PaaS Innovation
Competitors
Provider who using PaaS
Install Integrate DevelopDesign
plug Choose
apps
Modeling & Develop
with Open APIs
Optimize
for operation
DONE!
4. PaaS: has modularity issues
• Multiple Services • Mature SaaS Level
Forrester’s PaaS Reference Model SaaS Maturity Level
5. Java for Enterprise PaaS
• Mission critical
• Transactional
• Legacy Integration
i.e. J2EE 8’s Multi-tenancy
and PaaS Spec
• Optimized for SaaS app
development (B2C)
• Cloud automation
7. OSGi: Standard module system
for Java
• Standard
• Simplifies the complex classloader
issues by encapsulating-‘Bundle’
• Spring DM and blueprint
• IBM J9 and Java jigsaw roadmap
10. OSGi for PaaS
• More modular, so share more (at library
level)
• More dynamic, so easily automated
• Provides standard J2EE framework
including JAX-RS, JPA and Spring with
whiteboard pattern.
11. Sharing Level
• Hypervisor-based PaaS vs. OSGi-based PaaS
• Share at library level
Share more, More cheap offering, More Co
mpetitive in the market !
Share less, More easy & Secure !
12. OSGi based PaaS approaches
• Apache Ace and Amdatu
• Eclipse Gyrex
• Vaadin Arvue Master
• WSO2’s Stratos
• OCE Garuda
Initiative from Korea!
13. Build Time Run-Time
Artifacts
BPMN
(*.process)
Visual Mashup
BPMN
Process Modeler
Cloud IDE
Vaadin Designer
JAVA
Composite
UI
OSGi
Bundle
packager
App
Bundle
Vaadin UI
Calls
Stay In SCM
(e.g.Git)
Automated
By
CI tool
(Jenkins)
Package
Master
HA
Proxy
App repo.
Netra
App Bundles
(*.jar)
VM Template
Instance
PaaS RT
App1
OSGi Container
…
Node1
App2
PaaS RT
App1
OSGi Container
Node2
PaaS RT
OSGi Container
Image
Load info
forward
message
Upload to
App Store
Tools
An OSGi-based PaaS Architecture
(OCE Garuda)
….
instanciation
14. Exposing Platform Services
using OSGi and RESTful APIs
• Using Apache-CXF by white-board pattern
OSGi Container
BPMN
Web 2.0 UI
JAX-RS
JPA
Servlet
Spring
Process Mgmt.
Integration
Persistence
Web Service
AOP / Security
uEngine
Vaadin
Eclipse Link (Gemini)
Jetty
Apache Wink (CXF)
Spring DM
Service Standard Implementation
Application
17. Services: RESTful Service
• Filter by annotation: @Path
@Path("saveCustomer")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_PLAIN)
public String saveCustomer(Customer customer) {
}
18. Services: Vaadin UI Service
@Title("CRM Web Application")
public class CustomerUI extends UI {
….
}
• Filtered by Class Type: com.vaadin.ui.UI
19. Services: Multi-tenancy
• Filtered by Bundle Header: X-Multi-tenant
• Inherent isolated class-loader
• Database isolation by JPA’s @Discriminator
annotation
• Tenant information injection by
ThreadLocal
• Also BPM engine provides tenant-specific
Business process and logics(rule)
20. Cloud IDE: Auto OSGi Bundling
by Maven
설치 없는 빠른 개발
BPM 플랫폼과
연동되어 빠른
‘프로세스 앱’ 개발
Import from Cloud
- Web Service Import
- Database
개발된 결과물 (앱)은
OSGi번들 형식의
표준적 방식으로
패키징됨
J2EE Compliant
▼ Manageable Object Types
▼ Database Objects
Accessing Component Store by
code assist.
Cf. Google Apps Scripts
21. Cloud IDE: Vaadin UI Platform
UI Design in Vaadin
wysiwyg designer
Source editing in
Cloud IDE
22. Cloud IDE: Process Modeling by
BPMN
업무 전문가를 위한
실행가능 프로세스
언어 – BPMN
GUI기반 비즈니스 룰
정의
웹서비스 통합 (*CSB)
비즈니스 폼
데이터 매핑
• DB 쿼리 자동화
• SQL 툴
26. Conclusion
• OSGi makes implementing Enterprise
PaaS easier by :
– Modularity when to integrate existing J2EE
technologies and legacy systems.
– Dynamicity for provisioning S/W
components and services.
– Service Oriented Architecture.
27. Future works: IoT Platform
• BPMN-based IoT modeling
• OSGi - SW provisioning on
devices
• OCE’s Flamingo – analyze Big
data from Things
Flamingo Big data
Analyzer
28. References
• Paul Bakkar, Bert Ertman, Building
Modular Cloud Apps with OSGi,
O’REILLEY
• Open Cloud Engine – Garuda Project,
http://www.opence.org
• Eclipse Gyrex Project,
http://www.eclipse.org/gyrex/
• Apache ACE Project,
https://ace.apache.org/
Editor's Notes
ㅇ
ERP 컴포넌트 레포지토리는 서비스 중심 아키텍처를 기반으로 도출된 컨포넌트들을 말그래도 중심에 두고 컴포넌트를 프로세스 융합 및 프리젠테이션 융합한다.
화면이 없는 시스템간 통합은 주로 일반적인 웹서비스 표준기반 호출이 일어나지만, 화면이 존재하는 경우 화면간의 상호운영성을 위하여 SSO, 프로비져닝 등을 위하여 WSRP표준이 사용된다.
ESB는 내부 컴포넌트간의 잦은 웹서비스 호출에 대하여 성능이 느린 SOAP프로토콜을 사용하지 않아 속도가 빠르면서도 할 수 있도록 해준다.