how we took our server side application to the cloud and liked what we got

180
HOW WE TOOK OUR SERVER- SIDE JAVA APPLICATION TO THE CLOUD and liked what we got

Upload: baruch-sadogursky

Post on 17-Jul-2015

97 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: How we took our server side application to the cloud and liked what we got

HOW WE TOOK OUR SERVER-

SIDE JAVA APPLICATION TO THE

CLOUDand liked what we got

Page 2: How we took our server side application to the cloud and liked what we got

WHO’S TALKING?

linkd.in/jbaruch

Page 3: How we took our server side application to the cloud and liked what we got

Developer who?

3

Page 4: How we took our server side application to the cloud and liked what we got

Developer who?

4

Page 5: How we took our server side application to the cloud and liked what we got

WHAT FROG?

Page 6: How we took our server side application to the cloud and liked what we got

WHAT FROG?

Page 7: How we took our server side application to the cloud and liked what we got

WHAT FROG?

Page 8: How we took our server side application to the cloud and liked what we got

WHAT FROG?

Page 9: How we took our server side application to the cloud and liked what we got

WHAT FROG?

Page 10: How we took our server side application to the cloud and liked what we got

WHAT FROG?

Page 11: How we took our server side application to the cloud and liked what we got

One more thing!

bit.ly/1bDaHiD

JUC Israel - July 16, 2014

Page 12: How we took our server side application to the cloud and liked what we got

SO…

Page 13: How we took our server side application to the cloud and liked what we got

First things First.

Page 14: How we took our server side application to the cloud and liked what we got
Page 15: How we took our server side application to the cloud and liked what we got

Poll time!

I use binary repository:

Page 16: How we took our server side application to the cloud and liked what we got

Poll time!

I use binary repository:

Naturally, Artifactory!

Page 17: How we took our server side application to the cloud and liked what we got

Poll time!

I use binary repository:

Naturally, Artifactory!

Shame on me, but still Nexus…

Page 18: How we took our server side application to the cloud and liked what we got

Poll time!

I use binary repository:

Naturally, Artifactory!

Shame on me, but still Nexus…

I don’t like features, I use Archiva

Page 19: How we took our server side application to the cloud and liked what we got

Poll time!

I use binary repository:

Naturally, Artifactory!

Shame on me, but still Nexus…

I don’t like features, I use Archiva

I am a caveman, binary what?

Page 20: How we took our server side application to the cloud and liked what we got

In the beginning…

Page 21: How we took our server side application to the cloud and liked what we got

In the beginning…

Page 22: How we took our server side application to the cloud and liked what we got

Yet Another Java Server App

Page 23: How we took our server side application to the cloud and liked what we got

Rabbit?!

Page 24: How we took our server side application to the cloud and liked what we got
Page 25: How we took our server side application to the cloud and liked what we got

Checksum storage

Page 26: How we took our server side application to the cloud and liked what we got

Checksum storage

Page 27: How we took our server side application to the cloud and liked what we got

Checksum storage

Page 28: How we took our server side application to the cloud and liked what we got

Checksum storage

Page 29: How we took our server side application to the cloud and liked what we got

Append Only, GC-ed

Page 30: How we took our server side application to the cloud and liked what we got
Page 31: How we took our server side application to the cloud and liked what we got

Artifactory 3 – 10 times faster!

(Not bastards)

Page 32: How we took our server side application to the cloud and liked what we got
Page 33: How we took our server side application to the cloud and liked what we got

Moving Forward

Page 34: How we took our server side application to the cloud and liked what we got

Moving Forward

Page 35: How we took our server side application to the cloud and liked what we got

Moving Forward

Page 36: How we took our server side application to the cloud and liked what we got

Moving Forward

Page 37: How we took our server side application to the cloud and liked what we got

Moving Forward

Page 38: How we took our server side application to the cloud and liked what we got

Artifactory SaaS

etc.

Page 39: How we took our server side application to the cloud and liked what we got
Page 40: How we took our server side application to the cloud and liked what we got

What you like about it:

Page 41: How we took our server side application to the cloud and liked what we got

What you like about it:

– No need to maintain the server

Page 42: How we took our server side application to the cloud and liked what we got

What you like about it:

– No need to maintain the server

– Fanatic tech support

Page 43: How we took our server side application to the cloud and liked what we got

What you like about it:

– No need to maintain the server

– Fanatic tech support

– Always up to date!

Page 44: How we took our server side application to the cloud and liked what we got

What you like about it:

– No need to maintain the server

– Fanatic tech support

– Always up to date!

What you don’t like about it:

Page 45: How we took our server side application to the cloud and liked what we got

What you like about it:

– No need to maintain the server

– Fanatic tech support

– Always up to date!

What you don’t like about it:

– Can’t deploy your own plugins!

Page 46: How we took our server side application to the cloud and liked what we got

What you like about it:

– No need to maintain the server

– Fanatic tech support

– Always up to date!

What you don’t like about it:

– Can’t deploy your own plugins!

Page 47: How we took our server side application to the cloud and liked what we got

What you like about it:

– No need to maintain the server

– Fanatic tech support

– Always up to date!

What you don’t like about it:

– Can’t deploy your own plugins!

Page 48: How we took our server side application to the cloud and liked what we got

Artifactory SaaS

etc.

Page 49: How we took our server side application to the cloud and liked what we got

Sh.t-load of artifacts!

Page 50: How we took our server side application to the cloud and liked what we got

Terabytes.

FEBRUARY

Page 51: How we took our server side application to the cloud and liked what we got

Terabytes.

FEBRUARY

MAY

Page 52: How we took our server side application to the cloud and liked what we got

Terabytes.

FEBRUARY

MAY

AUGUST

Page 53: How we took our server side application to the cloud and liked what we got

Terabytes.

AUGUST

MAY

JANUARY

Page 54: How we took our server side application to the cloud and liked what we got

Bring Them On!

Page 55: How we took our server side application to the cloud and liked what we got

To The Cloud

Page 56: How we took our server side application to the cloud and liked what we got

Bullshit Bingo

Page 57: How we took our server side application to the cloud and liked what we got

Much ado about *aaS

Page 58: How we took our server side application to the cloud and liked what we got

* As A Service

Page 59: How we took our server side application to the cloud and liked what we got

* As A Service

Self-service

Page 60: How we took our server side application to the cloud and liked what we got

* As A Service

Self-service Multi-tenancy

Page 61: How we took our server side application to the cloud and liked what we got

Controversial example ahead!You might find it inaccurate.

If you are annoyed by that feeling,try to remember – it’s just an

example.

Page 62: How we took our server side application to the cloud and liked what we got

GaaE: Google as an ExampleProduct Self

ServiceMulti-tenant

* aaS

Page 63: How we took our server side application to the cloud and liked what we got

GaaE: Google as an ExampleProduct Self

ServiceMulti-tenant

* aaS

Gmail

Not *aaS, web-app

Page 64: How we took our server side application to the cloud and liked what we got

GaaE: Google as an ExampleProduct Self

ServiceMulti-tenant

* aaS

Gmail

Not *aaS, web-app

Google Apps

SaaS

Page 65: How we took our server side application to the cloud and liked what we got

GaaE: Google as an ExampleProduct Self

ServiceMulti-tenant

* aaS

Gmail

Not *aaS, web-app

Google Apps

SaaS

Google App Engine

PaaS

Page 66: How we took our server side application to the cloud and liked what we got

GaaE: Google as an ExampleProduct Self

ServiceMulti-tenant

* aaS

Gmail

Not *aaS, web-app

Google Apps

SaaS

Google App Engine

PaaS

Google Compute EngineEngine

IaaS

Page 67: How we took our server side application to the cloud and liked what we got

AaaE: Amazon as an ExampleProduct Self

ServiceMulti-tenant

* aaS

Page 68: How we took our server side application to the cloud and liked what we got

AaaE: Amazon as an ExampleProduct Self

ServiceMulti-tenant

* aaS

Amazon store

Not *aaS, web-app

Page 69: How we took our server side application to the cloud and liked what we got

AaaE: Amazon as an ExampleProduct Self

ServiceMulti-tenant

* aaS

Amazon store

Not *aaS, web-app

aStore

SaaS

Page 70: How we took our server side application to the cloud and liked what we got

AaaE: Amazon as an ExampleProduct Self

ServiceMulti-tenant

* aaS

Amazon store

Not *aaS, web-app

aStore

SaaS

Amazon Elastic Beantalk

PaaS

Page 71: How we took our server side application to the cloud and liked what we got

AaaE: Amazon as an ExampleProduct Self

ServiceMulti-tenant

* aaS

Amazon store

Not *aaS, web-app

aStore

SaaS

Amazon Elastic Beantalk

PaaS

Amazon Elastic Cloud

IaaS

Page 72: How we took our server side application to the cloud and liked what we got

SaaS pains

Page 73: How we took our server side application to the cloud and liked what we got

Multi-tenancy

Page 74: How we took our server side application to the cloud and liked what we got
Page 75: How we took our server side application to the cloud and liked what we got

Looks good! When to expect?

Page 76: How we took our server side application to the cloud and liked what we got

Extrapolate

This

Page 77: How we took our server side application to the cloud and liked what we got

Given:

Release Java 7 07/2011

Release Java 8 12/2012

Page 78: How we took our server side application to the cloud and liked what we got

Given:

Release Java 7 07/2011

Release Java 8 12/2012

Find:

Release Java 9?

Page 79: How we took our server side application to the cloud and liked what we got
Page 80: How we took our server side application to the cloud and liked what we got

Java 8: 12/2012

Page 81: How we took our server side application to the cloud and liked what we got

Java 8: 12/2012

-

Java 7: 07/2011

Page 82: How we took our server side application to the cloud and liked what we got

Java 8: 12/2012

-

Java 7: 07/2011

=

15 Months cycle

Page 83: How we took our server side application to the cloud and liked what we got

Java 8: 12/2012

-

Java 7: 07/2011

=

15 Months cycle

conclusion: Java 9: 05/2013

Page 84: How we took our server side application to the cloud and liked what we got

Java 8: 12/2012

-

Java 7: 07/2011

=

15 Months cycle

conclusion: Java 9: 05/2013

It’s almost a year ago!Oh, wait…

Java 8 is not out yet!

Page 85: How we took our server side application to the cloud and liked what we got

Observation: When Mark

writes about trains it

means release delay

Page 86: How we took our server side application to the cloud and liked what we got

Here you go:

Page 87: How we took our server side application to the cloud and liked what we got

Java 7: 07/2011

Page 88: How we took our server side application to the cloud and liked what we got

Java 7: 07/2011

+ 24 Months =

Page 89: How we took our server side application to the cloud and liked what we got

Java 7: 07/2011

+ 24 Months =

Java 8: 07/2013

Page 90: How we took our server side application to the cloud and liked what we got

You wish!

Page 91: How we took our server side application to the cloud and liked what we got

Java 7: 07/2011

+ 24 Months =

Java 8: 07/2013

Page 92: How we took our server side application to the cloud and liked what we got

Java 7: 07/2011

+ 24 Months =

Java 8: 01/2014

Whatever mark says

Page 93: How we took our server side application to the cloud and liked what we got

Java 7: 07/2011

+ 24 Months =

Java 8: 01/2014

+ 24 Months =

Java 9: 01/2016

Whatever mark says

Page 94: How we took our server side application to the cloud and liked what we got

You think this is it?

Page 95: How we took our server side application to the cloud and liked what we got

Java 7: 07/2011

+ 24 Months =

Java 8: 03/2014

Whatever mark says

Page 96: How we took our server side application to the cloud and liked what we got

Java 7: 07/2011

+ 24 Months =

Java 8: 03/2014

+ 24 Months =

Whatever mark says

Page 97: How we took our server side application to the cloud and liked what we got

Java 7: 07/2011

+ 24 Months =

Java 8: 03/2014

+ 24 Months =

Java 9: 03/2016

Whatever mark says

Page 98: How we took our server side application to the cloud and liked what we got

Java 7: 07/2011

+ 24 Months =

Java 8: 03/2014

+ 24 Months =

Java 9: 03/2016

(if no more train blog posts)

Whatever mark says

Page 99: How we took our server side application to the cloud and liked what we got

Java 7: 07/2011

+ 24 месяца =

Java 8: 03/2014

+ 24 месяца =

Java 9: 03/2016(Если не будет больше

постов про поезд)

Сколько Марк скажет

Page 100: How we took our server side application to the cloud and liked what we got
Page 101: How we took our server side application to the cloud and liked what we got

Multi-tenancy typesMulti-tenancy Type

Page 102: How we took our server side application to the cloud and liked what we got

Multi-tenancy typesMulti-tenancy Type

Data Separation

Page 103: How we took our server side application to the cloud and liked what we got

Multi-tenancy typesMulti-tenancy Type

Data Separation

Application Separation

Page 104: How we took our server side application to the cloud and liked what we got

Multi-tenancy typesMulti-tenancy Type

Data Separation

Application Separation

Process Separation

Page 105: How we took our server side application to the cloud and liked what we got

GaaE for Multi Tenancy typesProduct Multi-tenancy Type

Page 106: How we took our server side application to the cloud and liked what we got

GaaE for Multi Tenancy typesProduct Multi-tenancy Type

Google Apps Data Separation

Page 107: How we took our server side application to the cloud and liked what we got

GaaE for Multi Tenancy typesProduct Multi-tenancy Type

Google Apps Data Separation

Google App Engine Application Separation

Page 108: How we took our server side application to the cloud and liked what we got

GaaE for Multi Tenancy typesProduct Multi-tenancy Type

Google Apps Data Separation

Google App Engine Application Separation

Google Compute Engine Process Separation

Page 109: How we took our server side application to the cloud and liked what we got

Strategy Pros ConsSeparating data

Separating application

Separating processes

Let’s compare!

Page 110: How we took our server side application to the cloud and liked what we got

Strategy Pros ConsSeparating data Normal Java Application

Separating application

Separating processes

Let’s compare!

Page 111: How we took our server side application to the cloud and liked what we got

Strategy Pros ConsSeparating data Normal Java Application Manual state separation

Complicated and critical schema

Separating application

Separating processes

Let’s compare!

Page 112: How we took our server side application to the cloud and liked what we got

Strategy Pros ConsSeparating data Normal Java Application Manual state separation

Complicated and critical schema

Separating application

Separating processes

Let’s compare!

Page 113: How we took our server side application to the cloud and liked what we got

Strategy Pros ConsSeparating data Normal Java Application Manual state separation

Complicated and critical schema

Separating application

Separating processes No shared state Simple transition from existing

Let’s compare!

Page 114: How we took our server side application to the cloud and liked what we got

Strategy Pros ConsSeparating data Normal Java Application Manual state separation

Complicated and critical schema

Separating application

Separating processes No shared state Simple transition from existing

JVM per tenant!

Let’s compare!

Page 115: How we took our server side application to the cloud and liked what we got

Strategy Pros ConsSeparating data Normal Java Application Manual state separation

Complicated and critical schema

Separating application

Separating processes No shared state Simple transition from existing

JVM per tenant!

Let’s compare!

Page 116: How we took our server side application to the cloud and liked what we got

Strategy Pros ConsSeparating data Normal Java Application Manual state separation

Complicated and critical schema

Separating application

No shared state Simple transition from existing

Separating processes No shared state Simple transition from existing

JVM per tenant!

Let’s compare!

Page 117: How we took our server side application to the cloud and liked what we got

Strategy Pros ConsSeparating data Normal Java Application Manual state separation

Complicated and critical schema

Separating application

No shared state Simple transition from existing

Separating processes No shared state Simple transition from existing

JVM per tenant!

Let’s compare!

Page 118: How we took our server side application to the cloud and liked what we got

Strategy Pros ConsSeparating data Normal Java Application Manual state separation

Complicated and critical schema

Separating application

No shared state Simple transition from existing

Stay tuned…

Separating processes No shared state Simple transition from existing

JVM per tenant!

Let’s compare!

Page 119: How we took our server side application to the cloud and liked what we got

Separate WARs: Tomcat Root

┌── lib

├── webapps

│ ├── customer-name

│ ├── other-customer-name

│ └── many other customers

└── other dirs (bin, conf, log, etc)

Page 120: How we took our server side application to the cloud and liked what we got

Separate WARs

Page 121: How we took our server side application to the cloud and liked what we got

Separate WARs

Page 122: How we took our server side application to the cloud and liked what we got

Separate WARs

That was thePermGen.

Yup.

Page 123: How we took our server side application to the cloud and liked what we got

We love our toys

Page 124: How we took our server side application to the cloud and liked what we got

We love our toys

Artifactory-3.0.1.war\webapp\WEB-INF\lib$du –m

51 .

Page 125: How we took our server side application to the cloud and liked what we got
Page 126: How we took our server side application to the cloud and liked what we got

To the common ClassLoader!

Page 127: How we took our server side application to the cloud and liked what we got

Will it work?_________

Page 128: How we took our server side application to the cloud and liked what we got

Will it work?

‹ Object state_________

Page 129: How we took our server side application to the cloud and liked what we got

Will it work?

‹ Object state

‹ Static state

_________

Page 130: How we took our server side application to the cloud and liked what we got

“Static State Quest I”

(Sierra, who else?)

Page 131: How we took our server side application to the cloud and liked what we got

Spring Framework

Page 132: How we took our server side application to the cloud and liked what we got

The Evil

App. Context Holder Pattern

Page 133: How we took our server side application to the cloud and liked what we got

The Evil

App. Context Holder Patternpublic class AppCtxHolder implements ApplicationContextAware {

private static ApplicationContext ctx;

public AppCtxHolder() { }

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

}

public static ApplicationContext getApplicationContext() {return ctx;

}}

Page 134: How we took our server side application to the cloud and liked what we got

The Evil

App. Context Holder Patternpublic class AppCtxHolder implements ApplicationContextAware {

private static ApplicationContext ctx;

public AppCtxHolder() { }

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

}

public static ApplicationContext getApplicationContext() {return ctx;

}}

Page 135: How we took our server side application to the cloud and liked what we got

The Evil

App. Context Holder Patternpublic class AppCtxHolder implements ApplicationContextAware {

private static ApplicationContext ctx;

public AppCtxHolder() { }

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

}

public static ApplicationContext getApplicationContext() {return ctx;

}}

Page 136: How we took our server side application to the cloud and liked what we got

Apache Wicket

Page 137: How we took our server side application to the cloud and liked what we got

Apache Wicket

We love Wicket, cause it allows

people who hate UI development to develop a UI,

which people don’t hate

Page 138: How we took our server side application to the cloud and liked what we got

Apache Wicket

Page 139: How we took our server side application to the cloud and liked what we got

Logger

Page 140: How we took our server side application to the cloud and liked what we got

Logger

Page 141: How we took our server side application to the cloud and liked what we got

CATS Software

Page 142: How we took our server side application to the cloud and liked what we got

Jackrabbit

Page 143: How we took our server side application to the cloud and liked what we got

Jackrabbit

Page 144: How we took our server side application to the cloud and liked what we got

Heap-wide Caches

Page 145: How we took our server side application to the cloud and liked what we got

Don’t actually have to read this

Page 146: How we took our server side application to the cloud and liked what we got

Tomcat Root – Where are 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)

Page 147: How we took our server side application to the cloud and liked what we got

Tomcat Root – Where are 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)

Page 148: How we took our server side application to the cloud and liked what we got

Tomcat Root – Where are 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)

Page 149: How we took our server side application to the cloud and liked what we got

Tomcat Root – Global lib folder

┌── 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)

Page 150: How we took our server side application to the cloud and liked what we got

Tomcat Root – Global lib folder

┌── 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)

Page 151: How we took our server side application to the cloud and liked what we got

Tomcat Root – Global lib folder

┌── 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)

Page 152: How we took our server side application to the cloud and liked what we got

Tomcat Root – Global lib folder

┌── 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)

Page 153: How we took our server side application to the cloud and liked what we got

Tomcat Root – Global lib folder

┌── 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)

Page 154: How we took our server side application to the cloud and liked what we got

PaaS or IaaS?

Page 155: How we took our server side application to the cloud and liked what we got

PaaS or IaaS?

Page 156: How we took our server side application to the cloud and liked what we got

Self-Service?

Page 157: How we took our server side application to the cloud and liked what we got

Prevent the Fork!

Page 158: How we took our server side application to the cloud and liked what we got
Page 159: How we took our server side application to the cloud and liked what we got
Page 160: How we took our server side application to the cloud and liked what we got

The process

Page 161: How we took our server side application to the cloud and liked what we got
Page 162: How we took our server side application to the cloud and liked what we got
Page 163: How we took our server side application to the cloud and liked what we got
Page 164: How we took our server side application to the cloud and liked what we got

Artifactory is built with

Artifactory!

Page 165: How we took our server side application to the cloud and liked what we got

The Process

Page 166: How we took our server side application to the cloud and liked what we got

The Process

Page 167: How we took our server side application to the cloud and liked what we got

The Process

Page 168: How we took our server side application to the cloud and liked what we got

The Process

Page 169: How we took our server side application to the cloud and liked what we got

The Process

Page 170: How we took our server side application to the cloud and liked what we got

The Process

Page 171: How we took our server side application to the cloud and liked what we got

The Process

Page 172: How we took our server side application to the cloud and liked what we got

The Process

Page 173: How we took our server side application to the cloud and liked what we got

It’s all about right tools

Page 174: How we took our server side application to the cloud and liked what we got

Also right tools

Page 175: How we took our server side application to the cloud and liked what we got

The Paradigm…

Page 176: How we took our server side application to the cloud and liked what we got

Now we do it the other way around

Page 177: How we took our server side application to the cloud and liked what we got

Actually, now we do it the right way!

Page 178: How we took our server side application to the cloud and liked what we got

And we love what we got!

Page 179: How we took our server side application to the cloud and liked what we got

And we love what we got!

Page 180: How we took our server side application to the cloud and liked what we got

NO, THANK YOU!