Taking traditional Java server-side applications to the multi-tenant Cloud introduces lots of challenges. In this session, we will share our experience of creating a SaaS offering, which is currently being used successfully by the Java community. We will start by reviewing the challenges we faced during the SaaS conversion. Next, we will share our experience with the EC2 platform. We will discuss the importance of automation and how we use tools like Chef and Puppet for SaaS provisioning. Finally, we will describe how creating a SaaS version of our product shifted our way of thinking about software release. We will recommend what’s required to successfully release both SaaS and downloadable versions of your product.
Presented in the Case Studies and Tools track at DevOps Con Israel 2013
26. GaaE: Google as an Example
Product Self Multi- * aaS
Service tenant
27. GaaE: Google as an Example
Product Self Multi- * aaS
Service tenant
Gmail
Not *aaS, web-app
28. GaaE: Google as an Example
Product Self Multi- * aaS
Service tenant
Gmail
Not *aaS, web-app
Google Apps
SaaS
29. GaaE: Google as an Example
Product Self Multi- * aaS
Service tenant
Gmail
Not *aaS, web-app
Google Apps
SaaS
Google App Engine
PaaS
30. GaaE: Google as an Example
Product Self Multi- * aaS
Service tenant
Gmail
Not *aaS, web-app
Google Apps
SaaS
Google App Engine
PaaS
Google Compute Engine
IaaS
31. AaaE: Amazon as an Example
Product Self Multi- * aaS
Service tenant
32. AaaE: Amazon as an Example
Product Self Multi- * aaS
Service tenant
Amazon store
Not *aaS, web-app
33. AaaE: Amazon as an Example
Product Self Multi- * aaS
Service tenant
Amazon store
Not *aaS, web-app
aStore
SaaS
34. AaaE: Amazon as an Example
Product Self Multi- * aaS
Service tenant
Amazon store
Not *aaS, web-app
aStore
SaaS
Amazon Elastic Beanstalk
PaaS
35. AaaE: Amazon as an Example
Product Self Multi- * aaS
Service tenant
Amazon store
Not *aaS, web-app
aStore
SaaS
Amazon Elastic Beanstalk
PaaS
Amazon Elastic Cloud
IaaS
36. The SaaS Pains - Overview
Multi-tenancy
Platform selection
> PaaS or IaaS
DB schema updates
46. GaaE for Multi Tenancy Types
Product Muli-tenancy Type
Google Apps Data Separation
47. GaaE for Multi Tenancy Types
Product Muli-tenancy Type
Google Apps Data Separation
Google App Engine Application Separation
48. GaaE for Multi Tenancy Types
Product Muli-tenancy Type
Google Apps Data Separation
Google App Engine Application Separation
Google Compute Engine Process Separation
49. Comparing the Strategies
Strategy Pros Cons
Separating data Normal Java Application Manual state
separation
Complicated and
critical schema
50. Comparing the Strategies
Strategy Pros Cons
Separating data Normal Java Application Manual state
separation
Complicated and
critical schema
51. Comparing the Strategies
Strategy Pros Cons
Separating data Normal Java Application Manual state
separation
Complicated and
critical schema
Separating processes No shared state JVM per tenant!
Simple transition from
existing
52. Comparing the Strategies
Strategy Pros Cons
Separating data Normal Java Application Manual state
separation
Complicated and
critical schema
Separating processes
No shared state
Simple transition from
existing
JVM per tenant!
53. Comparing the Strategies
Strategy Pros Cons
Separating data Normal Java Application Manual state
separation
Complicated and
critical schema
Separating No shared state
application Or is it?
Simple transition from
existing
Separating processes No shared state JVM per tenant!
Simple transition from
existing
54. Comparing the Strategies
Strategy Pros Cons
Separating data Normal Java Application Manual state
separation
Complicated and
critical schema
Separating No shared state
application Or is it?
Simple transition from
existing
Separating processes No shared state JVM per tenant!
Simple transition from
existing
55. Comparing the Strategies
Strategy Pros Cons
Separating data Normal Java Application Manual state
separation
Complicated and
critical schema
Separating No shared state Stay tuned…
application Or is it?
Simple transition from
existing
Separating processes No shared state JVM per tenant!
Simple transition from
existing
56. Separate Application: Tomcat Root
┌── lib
├── webapps
│ ├── customer-name
│ ├── other-customer-name
│ └── many other customers
└── other dirs (bin, conf, log, etc)