SaaS transformation with OCE - uEngineCloud

701 views

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
701
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

SaaS transformation with OCE - uEngineCloud

  1. 1. Model-driven Cloud Computing and Technology Consulting SaaS 비즈니스 전환 전략 Open Cloud Engine Team
  2. 2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 16. Marketing / Business Strategy © 2013 uEngineCloud, Inc. 앱 (Contents) 사용료 소비자 공급자 (ISV) 플랫폼 (Platform) • 서비스1 • 서비스2 • 서비스3 공급자 포털 (관리 서비스) • 태넌트별 복잡 커스터마이징 요건 (코드레벨) • 과금 모니터링 • 서비스 조합 및 연동 고객 포털 (셀프서비스) • 가입 • 조직관리 • 설정관리 • 사용(과금)한 도설정 • 결재 CPNT model • Contents • Platform • Network • Terminal
  17. 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. 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
  19. 19. ThankYou

×