70
© 2012 VMware, Inc. All rights reserved. Migrating to Cloud Foundry Peter Ledbrook - VMware t: @pledbrook e: [email protected]

Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

© 2012 VMware, Inc. All rights reserved.

Migrating to Cloud Foundry

Peter Ledbrook - VMwaret: @pledbrooke: [email protected]

Page 2: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

What’s happening with applications today?

2

Frameworks are what really matter • Developer productivity and innovation

• Reduce time to market

New application types • Mobile, Social, SaaS

•  Apps released early and often

Data intensive •  Emerging requirements: elasticity, multi-cloud

• Web orientation drives exponential data volumes

Deployed on virtual and cloud infrastructures •  Virtualization, Cloud, PaaS

Page 3: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Deploy and scale applications in seconds, without locking yourself

into a single cloud

Simple, Open,

Flexible, Scalable

The Open Platform as a Service

Page 4: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

4

Choice of frameworks, services & cloudsOSS community

Page 5: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

4

Choice of frameworks, services & cloudsOSS community

+ Standalone!

Page 6: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

5

Choice of frameworks, services & cloudsOSS community

Applica'on*Service*Interface*

Data Services

Other Services

Msg Services

vFabric Postgres

vFabric RabbitMQTM

Additional partners services …

+ Standalone!

Page 7: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

6

Choice of frameworks, services & cloudsOSS community

Applica'on*Service*Interface*

Data Services

Other Services

Msg Services

vFabric Postgres

vFabric RabbitMQTM

Additional partners services …

Private((Clouds((

Public(Clouds(

Micro(Clouds(

.COM

Partners(

Cloud(Provide

r(Interface(

Avoid

Lock-in

+ Standalone!

Page 8: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Real choice of provider

7

Choice of Cloud Infrastructure

Bare metal

Choice of Private Cloud Distributions

Choice of Public Cloud Providers

.COM

Page 9: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Real choice of provider

7

Choice of Cloud Infrastructure

Bare metal

Choice of Private Cloud Distributions

Choice of Public Cloud Providers

.COM

Page 10: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Deployment tools

8

vmc (command line)

Page 11: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Core services

9

Page 12: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Developer Perspective

• Program to standard APIs– SQL drivers– Mongo client libraries– ...

• Connection settings from VCAP_SERVICES environment variable

10

Page 13: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

When you’re ready to deploy...

11

!!!$!vmc!target!<any!cloud>!

!!!$!vmc!push!<my6app>!

!!!!>!bind!services?!Yes!

!!$!vmc!instances!<my6app>!+100!!

!!!

Page 14: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

When you’re ready to deploy...

11

!!!$!vmc!target!<any!cloud>!

!!!$!vmc!push!<my6app>!

!!!!>!bind!services?!Yes!

!!$!vmc!instances!<my6app>!+100!!

!!! That’s all folks!

Page 15: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

The sample application

• http://grails.org• Built with Grails

– JVM web framework– Spring MVC under the hood– Groovy as the main development language

12

Page 16: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

13

Page 17: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

14

Page 18: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

15

Page 19: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

16

Page 20: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Architecture

17

Controller View

HTTP

Service

GORM/Hibernate

Database

Page 21: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Architecture

17

Controller View

HTTP

Service

GORM/Hibernate

Database

REST

Async Plugin Update

Twitter

Forum

Page 22: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Architecture

17

Controller View

HTTP

Service

GORM/Hibernate

Database

REST

Async Plugin Update

Twitter

Forum+ Jobs

Page 23: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

App Node

Cache

SearchindicesJob

Single instance

18

App Node

Cache

SearchindicesJob

App Node

Cache

SearchindicesJob

Local, embedded ehcache

Page 24: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

App Node

Cache

SearchindicesJob

Single instance

19

App Node

Cache

SearchindicesJob

App Node

Cache

SearchindicesJob

Local Lucene indexes

Page 25: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

App Node

Cache

SearchindicesJob

Single instance

20

App Node

Cache

SearchindicesJob

App Node

Cache

SearchindicesJob

Single job of each type

Page 26: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

App Node

Cache

SearchindicesJob

Multi-instance

21

App Node

Cache

SearchindicesJob

App Node

Cache

SearchindicesJob

Page 27: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

App Node

Cache

SearchindicesJob

Multi-instance

21

App Node

Cache

SearchindicesJob

App Node

Cache

SearchindicesJob

1. Update

Page 28: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

App Node

Cache

SearchindicesJob

Multi-instance

21

App Node

Cache

SearchindicesJob

App Node

Cache

SearchindicesJob

1. Update2. Returnlatest

Page 29: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

App Node

Cache

SearchindicesJob

Multi-instance

21

App Node

Cache

SearchindicesJob

App Node

Cache

SearchindicesJob

1. Update2. Returnlatest

3. Returnstale data

3. Returnstale data

Page 30: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

App Node

Cache

SearchindicesJob

Multi-instance

22

App Node

Cache

SearchindicesJob

App Node

Cache

SearchindicesJob

Mail Job Mail Job Mail Job

Jobs are executed three times?

Page 31: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Caching

23

Caching shared data==

Shared cache

Page 32: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Ehcache

24

Simple & effectiveDistributed modeBut...

Page 33: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Ehcache

24

Simple & effectiveDistributed modeBut...

No multicast on Cloud Foundry!

Page 34: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

So, what do we use?

• Key-value store• In-memory with persistence (fast)• Pub-sub• Single service for all app instances

25

Page 35: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Grails Cache plugin

• Based on Spring 3.1 cache abstraction– @Cacheable– @CacheEvict

• Ehcache & Redis providers– Spring Data RedisCacheManager

• <cache:block>• <cache:render template=”...”>

26

Page 36: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

27

Page 37: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

27

Page 38: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

27

Page 39: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

HTTP session

28

Sticky sessions!

Page 40: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

HTTP session

29

Or consider Redis fordistributed session store

Page 41: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Jobs

• @Scheduled, Quartz, etc.• Which node runs a job?

30

Page 42: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Jobs

• @Scheduled, Quartz, etc.• Which node runs a job?

30

Local data

Do nothing

Page 43: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Jobs

• @Scheduled, Quartz, etc.• Which node runs a job?

30

Local data

Do nothing

Shared data

Quartz JDBC Store

Worker

Page 44: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

AppNode

Distribution with workers

31

AppNode

AppNode

WorkerWorkerWorker

Page 45: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

AppNode

Distribution with workers

31

AppNode

AppNode

WorkerWorkerWorker

?

Page 46: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

AppNode

Distribution with workers

32

AppNode

AppNode

WorkerWorkerWorker

Node-specificdata

Page 47: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Jobs

33

Pros Cons

Quartz

Workers

Efficient in-JVM processingTried & testedRelatively simple

Extra burden on web server

Use right language for the jobDistribute the workload

Counts against your quota

Page 48: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Search

• Compass 2.0– Lucene indexes on local file system– Indexes database data

• > 1 node == stale indexes• Search as a service

– Solr– Elastic Search– Index Tank– Amazon Cloud Search– Not on Cloud Foundry (yet)

• Synchronise indexes across nodes!– Eventual consistency is good enough

34

Page 49: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Event bus

Synchronisation with an event bus

35

Event bus

Event bus

Initiate event

Distribute

Distribute

Distribute

Page 50: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Schrödinger’s Cat

36

There’s a cat in here!

Page 51: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Schrödinger’s Cat

36

There’s a cat in here!

Is the cat alive or dead?

Page 52: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Local filesystem

37

There’s a file in here!

Page 53: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Local filesystem

37

There’s a file in here!

Does the file exist or not?

Page 54: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Ephemeral file system

• VMs are created and destroyed– => application file system created and destroyed– You can write to the local file system...– ...but you will probably lose that data at some point

• Don’t store persistent data on local FS!– File uploads

38

Page 55: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Wiki images

39

Controller

User

Upload

GridFSBlob store

Page 56: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Wiki images

39

Controller

User

Upload

GridFSBlob store

Page 57: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Wiki images

39

Controller

User

Upload

GridFSBlob store

Page 58: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Logging

• View logs with `vmc logs`• What if the application instance is restarted?

– Logs are gone• What about multiple application instances?

– `vmc logs --instance 1` or `vmc logs --all`– but 30 days after deployment?

40

Page 59: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

App Node

Distributed logging

41

App Node

App Node

AMQPAppender

AMQPAppender

AMQPAppender

Node.js +SockJS +MongoDB

Page 60: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Config

42

Package in the app?

Store in database?

Inject via environment variable?

Page 61: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Dynamic config load

43

Config.groovy

ConfigLoader.groovy

Page 62: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Mail

• No SMTP - oh no!• HTTP providers

– SendGrid– Mailgun– Amazon Simple Email Service

44

Page 63: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Easy HTTP Mail

45

resources.groovy

MailerJob.groovy

Page 64: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Data

46

How do we load initial data?

Perform data migrations?

Back data up?

Page 65: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Access your services

47

Mongo Client

vmc tunnel

Cloud Foundry

MongoDBservice

(SSH Tunnel)

Page 66: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Import/export

48

Import == mysql < data.sql

Export == mysqldump

Page 67: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Application (WIP*)

49

https://github.com/grails-samples/grails-website

http://grails-website.cloudfoundry.com/

Source

Live

* Work in Progress

Page 68: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Summary

• PaaS is the application platform for the Cloud era• PaaS will change the way you write apps

– Design for horizontal scalability– Account for ephemeral file system– Rich set of services– Go polyglot!

• Tools & libraries are important– Spring for the win!

• Can use Redis in place of RabbitMQ for some patterns

50

Page 69: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

What’s next?

• Sign up - www.cloudfoundry.com• Get the source code - www.cloudfoundry.org• Download your Micro Cloud Foundry –

my.cloudfoundry.com/micro• Learn more on the Cloud Foundry blog -

blog.cloudfoundry.com• Follow us - @cloudfoundry

51

Page 70: Migrating to Cloud Foundry - GOTO Conference · What’s happening with applications today? 2 Frameworks are what really matter • Developer productivity and innovation • Reduce

Q&A