Más contenido relacionado La actualidad más candente (20) Similar a SaaS transformation with OCE - uEngineCloud (20) Más de uEngine Solutions (20) SaaS transformation with OCE - uEngineCloud2. Difficulties in developing a “Successful” SaaS app.
Converting Single- to
Multi- tenancy
N-Screen
Big-Data Analysis
IaaS handling
Mobility
Elasticity
(Scalability)
Manageability
Model-
Architecture
Customer Self-
Service & Easy
Provider Support
Marketing / Strategy
By IaaS
Refactor!
3. Cloud
Migration
Options
Replace
Rehost
RefactorRevise
Rebuild
• Replace by SaaS
Adopting SalesCloud for SFA and WorkDay for HR
Process
• Apps Moved to IaaS
Moving J2EE apps to EC2 Linux
instances from AWS
• Apps Moved to PaaS
Moving .NET apps to Azure
Using Corent-Technology for adopting existing apps
• Apps Redesign for PaaS
Redesigning a monolithic Java app into service-oriented architecture
and then deploying on Rackspace Cloud Servers
• Apps Rebuilt on PaaS
Building a force.com application
for order management
Gartner’s Cloud Migration Options
4. Economics / Security Options on SaaS
© 2013 uEngineCloud, Inc.
Share more, More cheap offering, More
Competitive in the market !
Share less, More easy & Secure !
5. Multi-tenancy Support Issues & Approaches
Multi-tenancy
Issues
Isolation &
Customizability
Branding
Logo / Look & Feel Tenant-aware static fields
IBM J9 JVM’s
@TenantScope
Locale / Message Tenant-aware Message Bundle
(java.util.Bundle)
uEngineCloud
Workflow
Business Process Tenant-aware BPM (Business
Process Management)
Stratos
uEngineCloud
Business Rules Tenant-aware BRE (Business
Rule Engine)
Stratos
uEngineCloud
Integration
Process
Tenant-aware EAI (Enterprise
Application Integration)
Stratos
uEgineCloud
Customized App.
Logic
Tenant-aware BCI (Byte Code
Injection)
uEngineCloud
Data Model DBMS
NoSQL Mongo DB, Cassandra
JDBC Proxy
Stratos’ plan
uEngineCloud
(database sharing)
DB Driver hooking
Corent-technology
(Schema sharing)
ORM Framework
Hibernate’s filter
(schema sharing)
(JPA) POJO injection
EclipseLink’s
DiscriminatorColumn
(schema sharing but
not-stable yet)
Access Control
© 2013 uEngineCloud, Inc.
6. SPOSAD Architecture Style
– The Common Architecture for multi-tenancy applications
© 2013 uEngineCloud, Inc.
Tenant-aware! Inject tenant-specific logics, workflows, brand
Tenant-specific
Store
7. OCE PaaS Runtime
OCE Provider Portal
OCE SaaSfier Architecture
© 2013 uEngineCloud, Inc.
Application Platform
MulCat
Multi-tenanted DB Connection Pool
UI Framework
N-Screen UI (Metaworks3)
Jasper Extension
Model Platform
Business Process Service
Business Rule Service
EAI Service
uClipse Cloud IDE
OCE Consumer Portal
(Self-Service Portal)
Billing / Metering
Meta data definition
& ModelingUser Directory
Brand / UI
Customization
Workflow / Rule
Customization
8. Tenant-awareness
1. By Adding a Servlet Filter
1. E.g. Spring’s SpringSecurityFilter
2. uEngineCloud’s org.uengine.cloud.saasfier.TenantAwareFilter stands for this
© 2013 uEngineCloud, Inc.
TenantContext
(ThreadLocal Object)
ServletFilter
Server Thread for the request
Request
creates
JSPs, Servlets, Spring Beans
ORM Framework
or
JDBC
(Prepared stmt.)
url: www.abc.com/tenantId/~
or tenantId.abc.com/~
9. Tenant-specific Customization > Branding
1. If your code loads the messages, properties and images from ClassLoader.getResource(…), you
don’t need to change your code.
1. MulCat’s custom classloader loads the resources from different location per tenant automatically.
© 2013 uEngineCloud, Inc.
TenantContext
(ThreadLocal Object)
ServletFilter
Server Thread for the request
Request
2. Get tenant Id
JSPs, Servlets, Spring Beans
static String logoLocation = bundle.getMessage(“logo.src”)
ORM Framework
or
JDBC
(Prepared stmt.)
OCE Application Platform
MulCat
(Multi-tenanted ClassLoader)
1. getBundle().getMessage() 3. per-tenant messages, logos
Multi-tenanted DBCP
Metadata repo.
10. Tenant-specific Customization > Forms (UI)
1. JSPs and Web-Standard UIs can include tenant-specific UIs (either partly or entirely)
1. uEngineCloud’s UI Framework serves UI generation and design tools.
© 2013 uEngineCloud, Inc.
TenantContext
(ThreadLocal Object)
ServletFilter
Server Thread for the request
Request
2. Get tenant Id
JSPs, Servlets, Spring Beans
Replacing customization part with
<iframe> or <%uengine:include ~ %>
ORM Framework
or
JDBC
(Prepared stmt.)
OCE UI Framework
Metaworks3 UI
1. load 3. per-tenant forms / UI / JSPs
Jasper Extension
Metadata repo.
11. uEngine Model Platform
Tenant-specific Customization > Business Process / Rules / EAI
1. By Replacing (or Injecting) Your Core Business Logics to invoke Model-objects
1. Using Spring DI or uEngine’s ProcessManagerBean Factory
2. Injecting org.uengine.processmanager.ProcessManagerRemote stands for this
© 2013 uEngineCloud, Inc.
TenantContext
(ThreadLocal Object)
ServletFilter
Server Thread for the request
Request
2. Get tenant info
JSPs, Servlets, Spring Beans
@Autowired
ProcessManagerBean processManager;
…
processManager.executeProcess(“pricing”)
ORM Framework
or
JDBC
(Prepared stmt.)
Business Process Service
Business Rule Service
EAI Service
1. invoke
3. per-tenant
process, rule, integration
Metadata repo.
12. Tenant-specific Customization > Custom Database Schema
1. For shared database strategy, refactoring not required
2. For shared schema, JPA annotation injection (can reuse iBatis DAO definitions only) or
rebuilding required
© 2013 uEngineCloud, Inc.
TenantContext
(ThreadLocal Object)
ServletFilter
Server Thread for the request
Request
2. Get tenant info
JSPs, Servlets, Spring Beans
ORM Framework
or
JDBC
(Prepared stmt.)
1. DriverManager.getConnection()
3. per-tenant
db connection
OCE Application Platform
java.util.ResourceBundle Hack
JDBC Driver Hack
Metadata repo.
13. Tenant-specific Customization > Custom Database Schema > Shared
Database vs. Shared schema
© 2013 uEngineCloud, Inc.
Rigid, shared
table
Extension tables
Datatype-specific
pivot tables
Private tables
Universal table
with XML
document
Universal table
14. For shared schema, you have to migrate/refactor/rebuild your DAO objects
© 2013 uEngineCloud, Inc.
Tenant-specific Customization > Custom Database Schema > Shared schema
uEngine DBRE
(Database Re-engineer)
JPA (standard)
DAOs
Existing Schema
iBatis DAO
(non-standard DAO)
Hiberate DAO
(non-standard DAO)
Inserting
JPA annoation
uEngine Application Platform
Tenant aware - JPA impl.
1. Migration approach
2. refactor approach
Rebuilding JPA based DAOs
(from the scratch)
3. Reuild approach
15. N-Screen UI generation
© 2013 uEngineCloud, Inc.
Tenant-specific Customization > Bonus on using uEngine Re-engineer
uEngine DBRE
(Database Re-engineer)
JPA (standard)
DAOs
Existing Schema
iBatis DAO
(non-standard DAO)
Hiberate DAO
(non-standard DAO)
Inserting
JPA annoation
uEngine Application Platform
Tenant aware - JPA impl.
1. Migration approach
2. refactor approach
Rebuilding JPA based DAOs
(from the scratch)
3. Reuild approach
N-Screen UIs
Inserting
UI-related annotations
uEngine UI Framework
(metaworks 3)
16. Marketing / Business Strategy
© 2013 uEngineCloud, Inc.
앱 (Contents)
사용료
소비자
공급자
(ISV)
플랫폼 (Platform)
• 서비스1
• 서비스2
• 서비스3
공급자 포털
(관리 서비스)
• 태넌트별
복잡 커스터마이징
요건 (코드레벨)
• 과금 모니터링
• 서비스 조합 및
연동
고객 포털
(셀프서비스)
• 가입
• 조직관리
• 설정관리
• 사용(과금)한
도설정
• 결재
CPNT model
• Contents
• Platform
• Network
• Terminal
17. T사 Software 분석
• UI Framework :
• Mi-Platform : non web standard hard to support N-Screen and tenant-specific form customization regenerate from schema from
MiPlatform Form xml file (implementation required)
• DAO & DBMS:
• i-Batis : non-standard, non-ORM hard to automatic tenant-specific field injection shared database or rebuilding DAOs
• DBMS ?
• Business Logic :
• Partially C++ Native logics (stateful or stateless ?)
•If stateful, tenant-awareness refactoring on C++ code is required
•(Optional) Replacing invocation java code to call model object Business Rules, Processes rather than C++ logic
• Lets Easy support for customer self-service and maintenance.
• Use File System: N/A
• Use Directory Service: N/A
© 2013 uEngineCloud, Inc.
18. Recommended Approach on company T software
Multi-tenancy
Issues
Isolation &
Customizability
Branding
Logo / Look & Feel Tenant-aware static fields IBM J9 JVM’s
@TenantScope
Locale / Message Tenant-aware Message Bundle
(java.util.Bundle)
uEngineCloud
Workflow
Business Process
Tenant-aware BPM (Business
Process Management)
Stratos
uEngineCloud
Business Rules
Tenant-aware BRE (Business
Rule Engine)
Stratos
uEngineCloud
Integration
Process
Tenant-aware EAI (Enterprise
Application Integration)
Stratos
uEgineCloud
Customized App.
Logic
Tenant-aware BCI (Byte Code
Injection)
uEngineCloud
Data Model DBMS
NoSQL Mongo DB, Cassandra
JDBC Proxy
Stratos’ plan
uEngineCloud
(database sharing)
DB Driver hooking Corent-technology
(Schema sharing)
ORM Framework
Hibernate’s filter
(schema sharing)(JPA) POJO injection
EclipseLink’s
DiscriminatorColumn
(schema sharing but
not-stable yet)
Access Control
© 2013 uEngineCloud, Inc.
Recommendations