SlideShare a Scribd company logo
1 of 101
Download to read offline
HOW WE TOOK OUR SERVER-
SIDE APPLICATION TO THE
CLOUD…
…and liked what we got
Agenda
 Where we started
 What we did
 Paradigm shift
First Things First




                     3
BACKGROUND
Who’s talking?
Developer who?
Developer who?
JFrog Where?
JFrog Where?
JFrog Where?
JFrog Where?
Artifactory what?
Yet Another Java Server App
Moving Forward
Moving Forward
Moving Forward
Moving Forward
Moving Forward
Artifactory SaaS
Artifactory SaaS




  etc.
Moving Forward
A load of Artifacts!
JOURNEY TO
 THE CLOUD
THE *AAS BUZZ
* As A Service
     Self Service   Multi-tenant
GaaE: Google as an Example

Product      Self      Multi-   * aaS
             Service   tenant
GaaE: Google as an Example

Product      Self      Multi-   * aaS
             Service   tenant
Gmail
                              Not *aaS, web-app
GaaE: Google as an Example

Product       Self      Multi-   * aaS
              Service   tenant
Gmail
                               Not *aaS, web-app

Google Apps
                               SaaS
GaaE: Google as an Example

Product             Self      Multi-   * aaS
                    Service   tenant
Gmail
                                     Not *aaS, web-app

Google Apps
                                     SaaS

Google App Engine
                                     PaaS
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
AaaE: Amazon as an Example

Product     Self      Multi-   * aaS
            Service   tenant
AaaE: Amazon as an Example

Product        Self      Multi-   * aaS
               Service   tenant
Amazon store
                                Not *aaS, web-app
AaaE: Amazon as an Example

Product        Self      Multi-   * aaS
               Service   tenant
Amazon store
                                Not *aaS, web-app

aStore
                                SaaS
AaaE: Amazon as an Example

Product                    Self      Multi-   * aaS
                           Service   tenant
Amazon store
                                            Not *aaS, web-app

aStore
                                            SaaS

Amazon Elastic Beanstalk
                                            PaaS
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
The SaaS Pains - Overview
 Multi-tenancy
 Platform selection
  > PaaS or IaaS
 DB schema updates
Multi-tenancy
Java 9 Already!
Wait for it?!
   Two-year release cycle
   Java 7: 07 2011
   Java 8: 09 2013
   Java 9: Late 2015
Wait for it?!
   Two-year release cycle
   Java 7: 07 2011
   Java 8: 09 2013
   Java 9: Late 2015
Multi Tenancy Types

Muli-tenancy Type
Multi Tenancy Types

Muli-tenancy Type

Data Separation
Multi Tenancy Types

Muli-tenancy Type

Data Separation

Application Separation
Multi Tenancy Types

Muli-tenancy Type

Data Separation

Application Separation

Process Separation
GaaE for Multi Tenancy Types

Product          Muli-tenancy Type
GaaE for Multi Tenancy Types

Product          Muli-tenancy Type

Google Apps      Data Separation
GaaE for Multi Tenancy Types

Product             Muli-tenancy Type

Google Apps         Data Separation

Google App Engine   Application Separation
GaaE for Multi Tenancy Types

Product                 Muli-tenancy Type

Google Apps             Data Separation

Google App Engine       Application Separation

Google Compute Engine   Process Separation
Comparing the Strategies
Strategy          Pros                          Cons
Separating data      Normal Java Application      Manual state
                                                    separation
                                                   Complicated and
                                                    critical schema
Comparing the Strategies


 
Strategy          Pros                          Cons
Separating data      Normal Java Application      Manual state
                                                    separation
                                                   Complicated and
                                                    critical schema
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
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!
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
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
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
Separate Application: Tomcat Root


┌──   lib
├──   webapps
│     ├── customer-name
│     ├── other-customer-name
│     └── many other customers
└──   other dirs (bin, conf, log, etc)
Separate Application
Separate Application
Too… many… classes…
Reuse!
Is it even possible?
Is it even possible?
THE QUEST FOR
SHARED
LIBRARIES
Spring Framework
Spring Framework
public class AppCtxHolder implements ApplicationContextAware {
      private static ApplicationContext ctx;

     public AppCtxHolder() { }

     public void setApplicationContext(ApplicationContext applicationContext) {
           ctx = applicationContext;
     }

     public static ApplicationContext getApplicationContext() {
           return ctx;
     }
}
Spring Framework
public class AppCtxHolder implements ApplicationContextAware {
      private static ApplicationContext ctx;

     public AppCtxHolder() { }

     public void setApplicationContext(ApplicationContext applicationContext) {
           ctx = applicationContext;
     }

     public static ApplicationContext getApplicationContext() {
           return ctx;
     }
}
Spring Framework
public class AppCtxHolder implements ApplicationContextAware {
      private static ApplicationContext ctx;

     public AppCtxHolder() { }

     public void setApplicationContext(ApplicationContext applicationContext) {
           ctx = applicationContext;
     }

     public static ApplicationContext getApplicationContext() {
           return ctx;
     }
}
Apache Wicket
Thread Pools
Logger
Logger
CATS Software
Jackrabbit
Heap-wide Caches
THE QUEST FOR SHARED LIBRARIES:
RESULTS
Tomcat Root – Where’s the JARs?
┌──   lib
├──   webapps
│     ├── customer-name
│     │   ├── favicon.ico
│     │   ├── META-INF
│     │   └── WEB-INF
│     │       ├── web.xml
│     │       └── classes
│     │          └── DUMMY.TXT
│     ├── other-customer-name
│     │   ├── favicon.ico
│     │   │   └── META-INF
│     │   └── WEB-INF
│     └── many other customers
└──   other dirs (bin, conf, log, etc)
Tomcat Root – Where’s the JARs?
┌──   lib
├──   webapps
│     ├── customer-name
│     │   ├── favicon.ico
│     │   ├── META-INF
│     │   └── WEB-INF
│     │       ├── web.xml
│     │       └── classes
│     │          └── DUMMY.TXT
│     ├── other-customer-name
│     │   ├── favicon.ico
│     │   │   └── META-INF
│     │   └── WEB-INF
│     └── many other customers
└──   other dirs (bin, conf, log, etc)
Tomcat Root – Where’s the JARs?
┌──   lib
├──   webapps
│     ├── customer-name
│     │   ├── favicon.ico
│     │   ├── META-INF
│     │   └── WEB-INF
│     │       ├── web.xml
│     │       └── classes
│     │          └── DUMMY.TXT
│     ├── other-customer-name
│     │   ├── favicon.ico
│     │   │   └── META-INF
│     │   └── WEB-INF
│     └── many other customers
└──   other dirs (bin, conf, log, etc)
Tomcat Root – In Global Lib!

┌──   lib
│     ├── artifactory
│     │   ├── artifactory-*.jar
│     │   ├── jackrabbit-core-jfrog-2.2.8c.jar
│     │   ├── spring-core-3.1.1.RELEASE.jar
│     │   ├── wicket-core-1.5.3.jar
│     │   └── other jars
│     ├── catalina.jar
│     ├── servlet-api.jar
│     └── other jars
├──   webapps
└──   other dirs (bin, conf, log, etc)
Tomcat Root – In Global Lib!

┌──   lib
│     ├── artifactory
│     │   ├── artifactory-*.jar
│     │   ├── jackrabbit-core-jfrog-2.2.8c.jar
│     │   ├── spring-core-3.1.1.RELEASE.jar
│     │   ├── wicket-core-1.5.3.jar
│     │   └── other jars
│     ├── catalina.jar
│     ├── servlet-api.jar
│     └── other jars
├──   webapps
└──   other dirs (bin, conf, log, etc)
Tomcat Root – In Global Lib!

┌──   lib
│     ├── artifactory
│     │   ├── artifactory-*.jar
│     │   ├── jackrabbit-core-jfrog-2.2.8c.jar
│     │   ├── spring-core-3.1.1.RELEASE.jar
│     │   ├── wicket-core-1.5.3.jar
│     │   └── other jars
│     ├── catalina.jar
│     ├── servlet-api.jar
│     └── other jars
├──   webapps
└──   other dirs (bin, conf, log, etc)
Tomcat Root – In Global Lib!

┌──   lib
│     ├── artifactory
│     │   ├── artifactory-*.jar
│     │   ├── jackrabbit-core-jfrog-2.2.8c.jar
│     │   ├── spring-core-3.1.1.RELEASE.jar
│     │   ├── wicket-core-1.5.3.jar
│     │   └── other jars
│     ├── catalina.jar
│     ├── servlet-api.jar
│     └── other jars
├──   webapps
└──   other dirs (bin, conf, log, etc)
Tomcat Root – In Global Lib!

┌──   lib
│     ├── artifactory
│     │   ├── artifactory-*.jar
│     │   ├── jackrabbit-core-jfrog-2.2.8c.jar
│     │   ├── spring-core-3.1.1.RELEASE.jar
│     │   ├── wicket-core-1.5.3.jar
│     │   └── other jars
│     ├── catalina.jar
│     ├── servlet-api.jar
│     └── other jars
├──   webapps
└──   other dirs (bin, conf, log, etc)
PaaS or IaaS?
PaaS or IaaS?
What was it about DB upgrade?
THE DEVOPS
Providing Self Service
Separating Concerns
Outcome: DevOps
THE PROCESS
Diversity
Recursive Slide (w. baby picture)
Right Tools for the Job
Right Tools for the Job
Right Tools for the Job
THE PARADIGM
SHIFT
Reversing the Cycle
Reversing the Cycle
Consequences
How we took our server side application to the cloud and liked what we got, Baruch Sadogursky

More Related Content

What's hot

Improve your Developer Experiece using the WAS Liberty Profile with JRebel
Improve your Developer Experiece using the WAS Liberty Profile with JRebel Improve your Developer Experiece using the WAS Liberty Profile with JRebel
Improve your Developer Experiece using the WAS Liberty Profile with JRebel
Anton Arhipov
 
Social ent. with java on heroku
Social ent. with java on herokuSocial ent. with java on heroku
Social ent. with java on heroku
Anand B Narasimhan
 

What's hot (8)

Agile Testing Practices
Agile Testing PracticesAgile Testing Practices
Agile Testing Practices
 
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
Java EE 7: Developing for the Cloud at Java Day, Istanbul, May 2012
 
Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019Serverless Java: JJUG CCC 2019
Serverless Java: JJUG CCC 2019
 
Serverless Java - Challenges and Triumphs
Serverless Java - Challenges and TriumphsServerless Java - Challenges and Triumphs
Serverless Java - Challenges and Triumphs
 
Improve your Developer Experiece using the WAS Liberty Profile with JRebel
Improve your Developer Experiece using the WAS Liberty Profile with JRebel Improve your Developer Experiece using the WAS Liberty Profile with JRebel
Improve your Developer Experiece using the WAS Liberty Profile with JRebel
 
Subversion Edge Overview
Subversion Edge OverviewSubversion Edge Overview
Subversion Edge Overview
 
PaaS isn't Just for Developers
PaaS isn't Just for DevelopersPaaS isn't Just for Developers
PaaS isn't Just for Developers
 
Social ent. with java on heroku
Social ent. with java on herokuSocial ent. with java on heroku
Social ent. with java on heroku
 

Viewers also liked

Viewers also liked (7)

Continuous Delivery at Wix, Yaniv Even Haim
Continuous Delivery at Wix, Yaniv Even HaimContinuous Delivery at Wix, Yaniv Even Haim
Continuous Delivery at Wix, Yaniv Even Haim
 
One Does Not Simply Walk Into Devops
One Does Not Simply Walk Into Devops One Does Not Simply Walk Into Devops
One Does Not Simply Walk Into Devops
 
Developing Multi-tenant provider hosted apps: From Idea to Office Store
Developing Multi-tenant provider hosted apps: From Idea to Office StoreDeveloping Multi-tenant provider hosted apps: From Idea to Office Store
Developing Multi-tenant provider hosted apps: From Idea to Office Store
 
Continuous Delivery at SAP IT, Alon Aizenberg
Continuous Delivery at SAP IT, Alon AizenbergContinuous Delivery at SAP IT, Alon Aizenberg
Continuous Delivery at SAP IT, Alon Aizenberg
 
Characteristics of SaaS applications
Characteristics of SaaS applicationsCharacteristics of SaaS applications
Characteristics of SaaS applications
 
Secure Multi Tenant Cloud with OpenContrail
Secure Multi Tenant Cloud with OpenContrailSecure Multi Tenant Cloud with OpenContrail
Secure Multi Tenant Cloud with OpenContrail
 
Moving To SaaS
Moving To SaaSMoving To SaaS
Moving To SaaS
 

Similar to How we took our server side application to the cloud and liked what we got, Baruch Sadogursky

How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we got
Baruch Sadogursky
 
How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we got
Baruch Sadogursky
 
SPEC INDIA Java Case Study
SPEC INDIA Java Case StudySPEC INDIA Java Case Study
SPEC INDIA Java Case Study
SPEC INDIA
 

Similar to How we took our server side application to the cloud and liked what we got, Baruch Sadogursky (20)

How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we got
 
How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we got
 
Modernize your-java ee-app-server-infrastructure
Modernize your-java ee-app-server-infrastructureModernize your-java ee-app-server-infrastructure
Modernize your-java ee-app-server-infrastructure
 
Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...Next-Generation Enterprise Application Development with SpringSource dm Serve...
Next-Generation Enterprise Application Development with SpringSource dm Serve...
 
How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we got
 
SPEC INDIA Java Case Study
SPEC INDIA Java Case StudySPEC INDIA Java Case Study
SPEC INDIA Java Case Study
 
Porting Java App To Cloud
Porting Java App To CloudPorting Java App To Cloud
Porting Java App To Cloud
 
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
The Java EE 7 Platform: Developing for the Cloud  (FISL 12)The Java EE 7 Platform: Developing for the Cloud  (FISL 12)
The Java EE 7 Platform: Developing for the Cloud (FISL 12)
 
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the CloudTDC 2011: The Java EE 7 Platform: Developing for the Cloud
TDC 2011: The Java EE 7 Platform: Developing for the Cloud
 
Tracking SLAs In Cloud
Tracking SLAs In CloudTracking SLAs In Cloud
Tracking SLAs In Cloud
 
Spring ppt
Spring pptSpring ppt
Spring ppt
 
Get the Top 6 new features in Java 2019
Get the Top 6 new features in Java 2019Get the Top 6 new features in Java 2019
Get the Top 6 new features in Java 2019
 
Google app development
Google app developmentGoogle app development
Google app development
 
Google app developers
Google app developersGoogle app developers
Google app developers
 
Google development
Google developmentGoogle development
Google development
 
Google app
Google appGoogle app
Google app
 
Web software development
Web software developmentWeb software development
Web software development
 
Google app developer
Google app developerGoogle app developer
Google app developer
 
Google web tools
Google web toolsGoogle web tools
Google web tools
 
Google apps development
Google apps developmentGoogle apps development
Google apps development
 

More from DevOpsDays Tel Aviv

THE THREE DISCIPLINES OF CI/CD SECURITY, DANIEL KRIVELEVICH, Cider Security
THE THREE DISCIPLINES OF CI/CD SECURITY, DANIEL KRIVELEVICH, Cider SecurityTHE THREE DISCIPLINES OF CI/CD SECURITY, DANIEL KRIVELEVICH, Cider Security
THE THREE DISCIPLINES OF CI/CD SECURITY, DANIEL KRIVELEVICH, Cider Security
DevOpsDays Tel Aviv
 
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearBHOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
DevOpsDays Tel Aviv
 
DON'T PANIC: GETTING YOUR INFRASTRUCTURE DRIFT UNDER CONTROL, ERAN BIBI, Firefly
DON'T PANIC: GETTING YOUR INFRASTRUCTURE DRIFT UNDER CONTROL, ERAN BIBI, FireflyDON'T PANIC: GETTING YOUR INFRASTRUCTURE DRIFT UNDER CONTROL, ERAN BIBI, Firefly
DON'T PANIC: GETTING YOUR INFRASTRUCTURE DRIFT UNDER CONTROL, ERAN BIBI, Firefly
DevOpsDays Tel Aviv
 

More from DevOpsDays Tel Aviv (20)

YOUR OPEN SOURCE PROJECT IS LIKE A STARTUP, TREAT IT LIKE ONE, EYAR ZILBERMAN...
YOUR OPEN SOURCE PROJECT IS LIKE A STARTUP, TREAT IT LIKE ONE, EYAR ZILBERMAN...YOUR OPEN SOURCE PROJECT IS LIKE A STARTUP, TREAT IT LIKE ONE, EYAR ZILBERMAN...
YOUR OPEN SOURCE PROJECT IS LIKE A STARTUP, TREAT IT LIKE ONE, EYAR ZILBERMAN...
 
GRAPHQL TO THE RES(T)CUE, ELLA SHARAKANSKI, Salto
GRAPHQL TO THE RES(T)CUE, ELLA SHARAKANSKI, SaltoGRAPHQL TO THE RES(T)CUE, ELLA SHARAKANSKI, Salto
GRAPHQL TO THE RES(T)CUE, ELLA SHARAKANSKI, Salto
 
MICROSERVICES ABOVE THE CLOUD - DESIGNING THE INTERNATIONAL SPACE STATION FOR...
MICROSERVICES ABOVE THE CLOUD - DESIGNING THE INTERNATIONAL SPACE STATION FOR...MICROSERVICES ABOVE THE CLOUD - DESIGNING THE INTERNATIONAL SPACE STATION FOR...
MICROSERVICES ABOVE THE CLOUD - DESIGNING THE INTERNATIONAL SPACE STATION FOR...
 
THE (IR)RATIONAL INCIDENT RESPONSE: HOW PSYCHOLOGICAL BIASES AFFECT INCIDENT ...
THE (IR)RATIONAL INCIDENT RESPONSE: HOW PSYCHOLOGICAL BIASES AFFECT INCIDENT ...THE (IR)RATIONAL INCIDENT RESPONSE: HOW PSYCHOLOGICAL BIASES AFFECT INCIDENT ...
THE (IR)RATIONAL INCIDENT RESPONSE: HOW PSYCHOLOGICAL BIASES AFFECT INCIDENT ...
 
PRINCIPLES OF OBSERVABILITY // DANIEL MAHER, DataDog
PRINCIPLES OF OBSERVABILITY // DANIEL MAHER, DataDogPRINCIPLES OF OBSERVABILITY // DANIEL MAHER, DataDog
PRINCIPLES OF OBSERVABILITY // DANIEL MAHER, DataDog
 
NUDGE AND SLUDGE: DRIVING SECURITY WITH DESIGN // J. WOLFGANG GOERLICH, Duo S...
NUDGE AND SLUDGE: DRIVING SECURITY WITH DESIGN // J. WOLFGANG GOERLICH, Duo S...NUDGE AND SLUDGE: DRIVING SECURITY WITH DESIGN // J. WOLFGANG GOERLICH, Duo S...
NUDGE AND SLUDGE: DRIVING SECURITY WITH DESIGN // J. WOLFGANG GOERLICH, Duo S...
 
(Ignite) TAKE A HIKE: PREVENTING BATTERY CORROSION - LEAH VOGEL, CHEGG
(Ignite) TAKE A HIKE: PREVENTING BATTERY CORROSION - LEAH VOGEL, CHEGG(Ignite) TAKE A HIKE: PREVENTING BATTERY CORROSION - LEAH VOGEL, CHEGG
(Ignite) TAKE A HIKE: PREVENTING BATTERY CORROSION - LEAH VOGEL, CHEGG
 
BUILDING A DR PLAN FOR YOUR CLOUD INFRASTRUCTURE FROM THE GROUND UP, MOSHE BE...
BUILDING A DR PLAN FOR YOUR CLOUD INFRASTRUCTURE FROM THE GROUND UP, MOSHE BE...BUILDING A DR PLAN FOR YOUR CLOUD INFRASTRUCTURE FROM THE GROUND UP, MOSHE BE...
BUILDING A DR PLAN FOR YOUR CLOUD INFRASTRUCTURE FROM THE GROUND UP, MOSHE BE...
 
THE THREE DISCIPLINES OF CI/CD SECURITY, DANIEL KRIVELEVICH, Cider Security
THE THREE DISCIPLINES OF CI/CD SECURITY, DANIEL KRIVELEVICH, Cider SecurityTHE THREE DISCIPLINES OF CI/CD SECURITY, DANIEL KRIVELEVICH, Cider Security
THE THREE DISCIPLINES OF CI/CD SECURITY, DANIEL KRIVELEVICH, Cider Security
 
THE PLEASURES OF ON-PREM, TOMER GABEL
THE PLEASURES OF ON-PREM, TOMER GABELTHE PLEASURES OF ON-PREM, TOMER GABEL
THE PLEASURES OF ON-PREM, TOMER GABEL
 
CONFIGURATION MANAGEMENT IN THE CLOUD NATIVE ERA, SHAHAR MINTZ, EggPack
CONFIGURATION MANAGEMENT IN THE CLOUD NATIVE ERA, SHAHAR MINTZ, EggPackCONFIGURATION MANAGEMENT IN THE CLOUD NATIVE ERA, SHAHAR MINTZ, EggPack
CONFIGURATION MANAGEMENT IN THE CLOUD NATIVE ERA, SHAHAR MINTZ, EggPack
 
SOLVING THE DEVOPS CRISIS, ONE PERSON AT A TIME, CHRISTINA BABITSKI, Develeap
SOLVING THE DEVOPS CRISIS, ONE PERSON AT A TIME, CHRISTINA BABITSKI, DeveleapSOLVING THE DEVOPS CRISIS, ONE PERSON AT A TIME, CHRISTINA BABITSKI, Develeap
SOLVING THE DEVOPS CRISIS, ONE PERSON AT A TIME, CHRISTINA BABITSKI, Develeap
 
OPTIMIZING PERFORMANCE USING CONTINUOUS PRODUCTION PROFILING ,YONATAN GOLDSCH...
OPTIMIZING PERFORMANCE USING CONTINUOUS PRODUCTION PROFILING ,YONATAN GOLDSCH...OPTIMIZING PERFORMANCE USING CONTINUOUS PRODUCTION PROFILING ,YONATAN GOLDSCH...
OPTIMIZING PERFORMANCE USING CONTINUOUS PRODUCTION PROFILING ,YONATAN GOLDSCH...
 
HOW TO SCALE YOUR ONCALL OPERATION, AND SURVIVE TO TELL, ANTON DRUKH
HOW TO SCALE YOUR ONCALL OPERATION, AND SURVIVE TO TELL, ANTON DRUKHHOW TO SCALE YOUR ONCALL OPERATION, AND SURVIVE TO TELL, ANTON DRUKH
HOW TO SCALE YOUR ONCALL OPERATION, AND SURVIVE TO TELL, ANTON DRUKH
 
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearBHOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
HOW TO OPTIMIZE NON-CODING TIME, ORI KEREN, LinearB
 
FLYING BLIND - ACCESSIBILITY IN MONITORING, FEU MOUREK, Icinga
FLYING BLIND - ACCESSIBILITY IN MONITORING, FEU MOUREK, IcingaFLYING BLIND - ACCESSIBILITY IN MONITORING, FEU MOUREK, Icinga
FLYING BLIND - ACCESSIBILITY IN MONITORING, FEU MOUREK, Icinga
 
(Ignite) WHAT'S BURNING THROUGH YOUR CLOUD BILL - GIL BAHAT, CIDER SECURITY
(Ignite) WHAT'S BURNING THROUGH YOUR CLOUD BILL - GIL BAHAT, CIDER SECURITY(Ignite) WHAT'S BURNING THROUGH YOUR CLOUD BILL - GIL BAHAT, CIDER SECURITY
(Ignite) WHAT'S BURNING THROUGH YOUR CLOUD BILL - GIL BAHAT, CIDER SECURITY
 
SLO DRIVEN DEVELOPMENT, ALON NATIV, Tomorrow.io
SLO DRIVEN DEVELOPMENT, ALON NATIV, Tomorrow.ioSLO DRIVEN DEVELOPMENT, ALON NATIV, Tomorrow.io
SLO DRIVEN DEVELOPMENT, ALON NATIV, Tomorrow.io
 
ONBOARDING IN LOCKDOWN, HILA FOX, Augury
ONBOARDING IN LOCKDOWN, HILA FOX, AuguryONBOARDING IN LOCKDOWN, HILA FOX, Augury
ONBOARDING IN LOCKDOWN, HILA FOX, Augury
 
DON'T PANIC: GETTING YOUR INFRASTRUCTURE DRIFT UNDER CONTROL, ERAN BIBI, Firefly
DON'T PANIC: GETTING YOUR INFRASTRUCTURE DRIFT UNDER CONTROL, ERAN BIBI, FireflyDON'T PANIC: GETTING YOUR INFRASTRUCTURE DRIFT UNDER CONTROL, ERAN BIBI, Firefly
DON'T PANIC: GETTING YOUR INFRASTRUCTURE DRIFT UNDER CONTROL, ERAN BIBI, Firefly
 

Recently uploaded

Recently uploaded (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

How we took our server side application to the cloud and liked what we got, Baruch Sadogursky

  • 1. HOW WE TOOK OUR SERVER- SIDE APPLICATION TO THE CLOUD… …and liked what we got
  • 2. Agenda  Where we started  What we did  Paradigm shift
  • 13. Yet Another Java Server App
  • 22. A load of Artifacts!
  • 23. JOURNEY TO THE CLOUD
  • 25. * As A Service Self Service Multi-tenant
  • 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
  • 39. Wait for it?!  Two-year release cycle  Java 7: 07 2011  Java 8: 09 2013  Java 9: Late 2015
  • 40. Wait for it?!  Two-year release cycle  Java 7: 07 2011  Java 8: 09 2013  Java 9: Late 2015
  • 42. Multi Tenancy Types Muli-tenancy Type Data Separation
  • 43. Multi Tenancy Types Muli-tenancy Type Data Separation Application Separation
  • 44. Multi Tenancy Types Muli-tenancy Type Data Separation Application Separation Process Separation
  • 45. GaaE for Multi Tenancy Types Product Muli-tenancy Type
  • 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)
  • 61. Is it even possible?
  • 62. Is it even possible?
  • 65. Spring Framework public class AppCtxHolder implements ApplicationContextAware { private static ApplicationContext ctx; public AppCtxHolder() { } public void setApplicationContext(ApplicationContext applicationContext) { ctx = applicationContext; } public static ApplicationContext getApplicationContext() { return ctx; } }
  • 66. Spring Framework public class AppCtxHolder implements ApplicationContextAware { private static ApplicationContext ctx; public AppCtxHolder() { } public void setApplicationContext(ApplicationContext applicationContext) { ctx = applicationContext; } public static ApplicationContext getApplicationContext() { return ctx; } }
  • 67. Spring Framework public class AppCtxHolder implements ApplicationContextAware { private static ApplicationContext ctx; public AppCtxHolder() { } public void setApplicationContext(ApplicationContext applicationContext) { ctx = applicationContext; } public static ApplicationContext getApplicationContext() { return ctx; } }
  • 75. THE QUEST FOR SHARED LIBRARIES: RESULTS
  • 76. Tomcat Root – Where’s the JARs? ┌── lib ├── webapps │ ├── customer-name │ │ ├── favicon.ico │ │ ├── META-INF │ │ └── WEB-INF │ │ ├── web.xml │ │ └── classes │ │ └── DUMMY.TXT │ ├── other-customer-name │ │ ├── favicon.ico │ │ │ └── META-INF │ │ └── WEB-INF │ └── many other customers └── other dirs (bin, conf, log, etc)
  • 77. Tomcat Root – Where’s the JARs? ┌── lib ├── webapps │ ├── customer-name │ │ ├── favicon.ico │ │ ├── META-INF │ │ └── WEB-INF │ │ ├── web.xml │ │ └── classes │ │ └── DUMMY.TXT │ ├── other-customer-name │ │ ├── favicon.ico │ │ │ └── META-INF │ │ └── WEB-INF │ └── many other customers └── other dirs (bin, conf, log, etc)
  • 78. Tomcat Root – Where’s the JARs? ┌── lib ├── webapps │ ├── customer-name │ │ ├── favicon.ico │ │ ├── META-INF │ │ └── WEB-INF │ │ ├── web.xml │ │ └── classes │ │ └── DUMMY.TXT │ ├── other-customer-name │ │ ├── favicon.ico │ │ │ └── META-INF │ │ └── WEB-INF │ └── many other customers └── other dirs (bin, conf, log, etc)
  • 79. Tomcat Root – In Global Lib! ┌── lib │ ├── artifactory │ │ ├── artifactory-*.jar │ │ ├── jackrabbit-core-jfrog-2.2.8c.jar │ │ ├── spring-core-3.1.1.RELEASE.jar │ │ ├── wicket-core-1.5.3.jar │ │ └── other jars │ ├── catalina.jar │ ├── servlet-api.jar │ └── other jars ├── webapps └── other dirs (bin, conf, log, etc)
  • 80. Tomcat Root – In Global Lib! ┌── lib │ ├── artifactory │ │ ├── artifactory-*.jar │ │ ├── jackrabbit-core-jfrog-2.2.8c.jar │ │ ├── spring-core-3.1.1.RELEASE.jar │ │ ├── wicket-core-1.5.3.jar │ │ └── other jars │ ├── catalina.jar │ ├── servlet-api.jar │ └── other jars ├── webapps └── other dirs (bin, conf, log, etc)
  • 81. Tomcat Root – In Global Lib! ┌── lib │ ├── artifactory │ │ ├── artifactory-*.jar │ │ ├── jackrabbit-core-jfrog-2.2.8c.jar │ │ ├── spring-core-3.1.1.RELEASE.jar │ │ ├── wicket-core-1.5.3.jar │ │ └── other jars │ ├── catalina.jar │ ├── servlet-api.jar │ └── other jars ├── webapps └── other dirs (bin, conf, log, etc)
  • 82. Tomcat Root – In Global Lib! ┌── lib │ ├── artifactory │ │ ├── artifactory-*.jar │ │ ├── jackrabbit-core-jfrog-2.2.8c.jar │ │ ├── spring-core-3.1.1.RELEASE.jar │ │ ├── wicket-core-1.5.3.jar │ │ └── other jars │ ├── catalina.jar │ ├── servlet-api.jar │ └── other jars ├── webapps └── other dirs (bin, conf, log, etc)
  • 83. Tomcat Root – In Global Lib! ┌── lib │ ├── artifactory │ │ ├── artifactory-*.jar │ │ ├── jackrabbit-core-jfrog-2.2.8c.jar │ │ ├── spring-core-3.1.1.RELEASE.jar │ │ ├── wicket-core-1.5.3.jar │ │ └── other jars │ ├── catalina.jar │ ├── servlet-api.jar │ └── other jars ├── webapps └── other dirs (bin, conf, log, etc)
  • 86. What was it about DB upgrade?
  • 93. Recursive Slide (w. baby picture)
  • 94. Right Tools for the Job
  • 95. Right Tools for the Job
  • 96. Right Tools for the Job