Your SlideShare is downloading. ×
0
Cloud Foundry Boot CampChris Richardson - Senior Developer Advocate - @crichardson                                        ...
Agenda Why PaaS matters to developers Overview of Cloud Foundry Getting started with Cloud Foundry Consuming Cloud Fou...
Let’s imagine that you want to deploy an app... Do you know how much hardware to buy? Can you afford it? How long does ...
Cloud computing empowers us to deal with          these challenges...                                       4
Cloud computing defined       IT delivered as a service       Over the internet       Self-service       Pay per use      ...
The three layers of cloud computing    SaaS    PaaS     IaaS                                      6
Benefits of IaaS  Agility  Pay per use  ElasticityBut you need to configure and maintainthe operating systems, the app ...
Need to move up the stack                  SaaS                 PaaS                  IaaS                            8
PaaS        =Application deployment  and management         + Service provisioning                         9
Agenda Why PaaS matters to developers Overview of Cloud Foundry Getting started with Cloud Foundry Consuming Cloud Fou...
The Open         Platform as a ServiceDeploy and scale applications inseconds, without locking yourself                   ...
Cloud Foundry open PaaS - Choice of frameworks                                                 OSS community
Cloud Foundry open PaaS - Choice of application services vFabricPostgres                               Ap                 ...
Cloud Foundry open PaaS - Choice of clouds                                                                                ...
CloudFoundry.COM - Multi-tenant PaaS operated by VMware                       CloudFoundry.COM (beta)      Runtimes & Fram...
Micro Cloud FoundryTM – Industry first downloadable PaaS                             Micro Cloud Foundry      Runtimes & F...
CloudFoundry.ORG - Community open-source project                                   CloudFoundry.ORG                       ...
Cloud Foundry: you can trade-off effort vs flexibility                                                                    ...
Cloud Foundry Resources Primary Site : cloudfoundry.com Open Source Site : cloudfoundry.org Twitter : @cloudfoundry , h...
Agenda Why PaaS matters to developers Overview of Cloud Foundry Getting started with Cloud Foundry Consuming Cloud Fou...
Register  http://cloudfoundry.com/signup                                   Use promo code                                 ...
Welcome email                22
Ways to use Cloud Foundry                            23
Installing vmc on Windows                            Install the vmc gem                                                  24
Installing vmc on Mac OSXUse Ruby Version Manager http://beginrescueend.com/$ bash -s stable      <<(curl -s https://raw.g...
Example vmc commands    $ vmc target <any cloud>    $ vmc login <credentials>    $ vmc push <my-app>    !      > bind serv...
Logging into CloudFoundry.com$ vmc target api.cloudfoundry.comSuccessfully targeted to     [http://api.cloudfoundry.com]$ ...
VMC CLI DEMO               28
vmc push optionally creates manifest.yml   applications:                      Captures the information that vmc push gathe...
Scale the application$ vmc instances cf1 +2Scaling Application instances up to 3: OK$ vmc stats cf1+----------+-----------...
http://www.springsource.com/downloads/sts
Install the Cloud Foundry plugin....                                       33
...      34
...      35
STS DEMO           36
Recap so far… Understand APaaS Register for Cloud Foundry Installed the Cloud Foundry Plugin Logged In/Authenticated ...
Agenda Why PaaS matters to developers Overview of Cloud Foundry Getting started with Cloud Foundry Consuming Cloud Fou...
Current Services Available on Cloud Foundry                                              40
Creating a service instance$ vmc create-service mysql --name mysql1Creating Service: OK$ vmc services============== System...
Binding a service to an application   $ vmc push cer-spring --path web/target/   Application Deployed URL [cer-spring.clou...
Binding a service to an application$ vmc bind-service mysql1 myappBinding Service [mysql1]: OKStopping Application myapp: ...
Binding in STS44
Survey application     demo                     45
Uses MySQL and MongoDB   @Entity   public class Customer {                                                                ...
Bindings exposed through VCAP_SERVICES environment variable{    "mysql-5.1": [{         "name": "mysql1",         "label":...
Accessing bound services - low-level var services = JSON.parse(process.env.VCAP_SERVICES); var creds = services[mysql-5.1]...
Accessing bound services - high-level, Spring/JavaCloudEnvironment environment = new CloudEnvironment();RdbmsServiceInfo m...
Accessing bound services - high-level, Ruby                     reconfigured automaticallyRedisHost = "127.0.0.1"RedisPort ...
Recap… Services :  • SQL and NoSQL databases  • Message broker  • ... Service Bindings  • VCAP_SERVICES environment vari...
Services are great but what if we want to            Use database tools?Use the services from JUnit integration tests?    ...
Using Caldecott to tunnel into your services                                               54
gem install caldecott                        55
Caldecott Demo                 56
Running JUnit test with Caldecott   Configure your test code to use port + connection info                                 ...
Summary          59
Cloud Foundry is aremarkably easy way todeploy your applications                       60
Cloud Foundry      =   Choice                61
.js             Ap                p                                                                                    Pri...
Questions?Signup @ www.cloudfoundry.com
Thank You!t @CloudFoundryt @crichardson  Website   : www.cloudfoundry.com  Blog      : Blog.CloudFoundry.com
Cloud Foundry bootcamp at ContributingCode
Cloud Foundry bootcamp at ContributingCode
Cloud Foundry bootcamp at ContributingCode
Cloud Foundry bootcamp at ContributingCode
Upcoming SlideShare
Loading in...5
×

Cloud Foundry bootcamp at ContributingCode

874

Published on

A brief introduction to Cloud Foundry, a modern, open-source PaaS.

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
874
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
45
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Cloud Foundry bootcamp at ContributingCode"

  1. 1. Cloud Foundry Boot CampChris Richardson - Senior Developer Advocate - @crichardson © 2009 VMware Inc. All rights reserved
  2. 2. Agenda Why PaaS matters to developers Overview of Cloud Foundry Getting started with Cloud Foundry Consuming Cloud Foundry services 2
  3. 3. Let’s imagine that you want to deploy an app... Do you know how much hardware to buy? Can you afford it? How long does it take to approve, buy and install? Who is going to set it up? What happens if the traffic increases 10x? Can we afford a test lab? 3
  4. 4. Cloud computing empowers us to deal with these challenges... 4
  5. 5. Cloud computing defined IT delivered as a service Over the internet Self-service Pay per use 5
  6. 6. The three layers of cloud computing SaaS PaaS IaaS 6
  7. 7. Benefits of IaaS Agility Pay per use ElasticityBut you need to configure and maintainthe operating systems, the app servers andthe databases etc. 7
  8. 8. Need to move up the stack SaaS PaaS IaaS 8
  9. 9. PaaS =Application deployment and management + Service provisioning 9
  10. 10. Agenda Why PaaS matters to developers Overview of Cloud Foundry Getting started with Cloud Foundry Consuming Cloud Foundry services 10
  11. 11. The Open Platform as a ServiceDeploy and scale applications inseconds, without locking yourself p en, e, O lable Simpl Sca Flex ible, 11
  12. 12. Cloud Foundry open PaaS - Choice of frameworks OSS community
  13. 13. Cloud Foundry open PaaS - Choice of application services vFabricPostgres Ap p lica Data o Services n  S erv ice  In vFabric ter fac RabbitMQTM Msg e Services Other Services Additional partners services …
  14. 14. Cloud Foundry open PaaS - Choice of clouds d Avoi n Ap p lica Lo ck-i Data Private   o Services Clouds   n  S erv ice  In e fac ter ter fac Msg Public r  In e Clouds ide Services ov  Pr ud Cl o Micro Other Clouds Services
  15. 15. CloudFoundry.COM - Multi-tenant PaaS operated by VMware CloudFoundry.COM (beta) Runtimes & Frameworks Services vCenter / vSphere Infrastructure 15
  16. 16. Micro Cloud FoundryTM – Industry first downloadable PaaS Micro Cloud Foundry Runtimes & Frameworks Services Your Laptop/PC Single VM instance of Cloud Foundry that runs on a developer’s MAC or PC 16
  17. 17. CloudFoundry.ORG - Community open-source project CloudFoundry.ORG Your Infrastructure Download Setup Deploy Behind BOSH Code Environment Firewall Apache2 license 17
  18. 18. Cloud Foundry: you can trade-off effort vs flexibility Less Less Public PaaS .... .COM Private PaaSEffort .... Flexibility Custom Private PaaS git clone git://github.com/cloudfoundry/ More More 18
  19. 19. Cloud Foundry Resources Primary Site : cloudfoundry.com Open Source Site : cloudfoundry.org Twitter : @cloudfoundry , hash tag #cfoundry Blog : blog.cloudfoundry.com FB : facebook.com/cloudfoundry Support : support.cloudfoundry.com • Documentation • Knowledge Base • Q & A / Forums 19
  20. 20. Agenda Why PaaS matters to developers Overview of Cloud Foundry Getting started with Cloud Foundry Consuming Cloud Foundry services 20
  21. 21. Register http://cloudfoundry.com/signup Use promo code 21
  22. 22. Welcome email 22
  23. 23. Ways to use Cloud Foundry 23
  24. 24. Installing vmc on Windows Install the vmc gem 24
  25. 25. Installing vmc on Mac OSXUse Ruby Version Manager http://beginrescueend.com/$ bash -s stable <<(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)$ rvm install 1.9.2$ rvm use 1.9.2$ gem install vmc 25
  26. 26. Example vmc commands $ vmc target <any cloud> $ vmc login <credentials> $ vmc push <my-app> ! > bind services? Yes $ vmc update <my-app> $ vmc instances <my-app> +100 26
  27. 27. Logging into CloudFoundry.com$ vmc target api.cloudfoundry.comSuccessfully targeted to [http://api.cloudfoundry.com]$ vmc loginAttempting login to [http://api.cloudfoundry.com]Email: crichardson@vmware.comPassword: ********Successfully logged into [http://api.cloudfoundry.com] 27
  28. 28. VMC CLI DEMO 28
  29. 29. vmc push optionally creates manifest.yml applications: Captures the information that vmc push gathered target/: vmc doesn’t have to ask you again name: example1 url: cer-example1.cloudfoundry.com framework: name: java_web info: mem: 512M description: Java Web Application exec: mem: 256M instances: 1 30
  30. 30. Scale the application$ vmc instances cf1 +2Scaling Application instances up to 3: OK$ vmc stats cf1+----------+-------------+----------------+--------------+--------------+| Instance | CPU (Cores) | Memory (limit) | Disk (limit) | Uptime |+----------+-------------+----------------+--------------+--------------+| 0 | 1.2% (4) | 90.6M (512M) | 8.5M (2G) | 0d:0h:3m:3s || 1 | 9.5% (4) | 60.9M (512M) | 8.4M (2G) | 0d:0h:0m:17s || 2 | 9.4% (4) | 55.5M (512M) | 8.4M (2G) | 0d:0h:0m:17s |+----------+-------------+----------------+--------------+--------------+
  31. 31. http://www.springsource.com/downloads/sts
  32. 32. Install the Cloud Foundry plugin.... 33
  33. 33. ... 34
  34. 34. ... 35
  35. 35. STS DEMO 36
  36. 36. Recap so far… Understand APaaS Register for Cloud Foundry Installed the Cloud Foundry Plugin Logged In/Authenticated Create a Spring MVC App Deployed MVC App to Cloud Foundry Hit URL from STS and Viewed MVC App Learned about vmc 38
  37. 37. Agenda Why PaaS matters to developers Overview of Cloud Foundry Getting started with Cloud Foundry Consuming Cloud Foundry services 39
  38. 38. Current Services Available on Cloud Foundry 40
  39. 39. Creating a service instance$ vmc create-service mysql --name mysql1Creating Service: OK$ vmc services============== System Services ==============+------------+---------+---------------------------------------+| Service | Version | Description |+------------+---------+---------------------------------------+| mongodb | 1.8 | MongoDB NoSQL store || mysql | 5.1 | MySQL database service || postgresql | 9.0 | PostgreSQL database service (vFabric) || rabbitmq | 2.4 | RabbitMQ messaging service || redis | 2.2 | Redis key-value store service |+------------+---------+---------------------------------------+=========== Provisioned Services ============+-------------+---------+| Name | Service |+-------------+---------+| mysql1 | mysql |+-------------+---------+
  40. 40. Binding a service to an application $ vmc push cer-spring --path web/target/ Application Deployed URL [cer-spring.cloudfoundry.com]: Detected a Java SpringSource Spring Application, is this correct? [Yn]: Memory Reservation (64M, 128M, 256M, 512M, 1G) [512M]: Creating Application: OKWould you like to bind any services to cer-spring? [yN]: y [yN]: y Would you like to bind any services to cer-spring?Would you like to use anan existing provisioned service? [yN]: y Would you like to use existing provisioned service? [yN]: yThe The following provisioned servicesavailable following provisioned services are are available1: mysql1 1: mysql12: mysql-135e0 2: mysql-135e0Please select one you wish to use:use: 1 Please select one you wish to 1Binding Service [mysql1]: OK OK Binding Service [mysql1]: Uploading Application: Checking for available resources: OK Processing resources: OK Packing application: OK Uploading (12K): OK
  41. 41. Binding a service to an application$ vmc bind-service mysql1 myappBinding Service [mysql1]: OKStopping Application myapp: OKStaging Application myapp: OKStarting Application myapp: OK$
  42. 42. Binding in STS44
  43. 43. Survey application demo 45
  44. 44. Uses MySQL and MongoDB @Entity public class Customer { Stored in MySQL @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String firstName; private String lastName; Stored in Mongo @RelatedDocument private SurveyInfo surveyInfo;public class SurveyInfo { public class Survey { private List<Survey> questionsAndAnswers = new ArrayList<Survey>(); String question; public List<Survey> getQuestionsAndAnswers() { String answer; return questionsAndAnswers; } 46
  45. 45. Bindings exposed through VCAP_SERVICES environment variable{ "mysql-5.1": [{ "name": "mysql1", "label": "mysql-5.1", "plan": "free", "tags": ["mysql", "mysql-5.1", "relational"], "credentials": { "name": "da81b57c25cca4c65929a223f0ed068a0", "host": "172.99.99.99", "port": 3306, "username": "secretusername", "password": "secretuserpassword" .... } }]} 48
  46. 46. Accessing bound services - low-level var services = JSON.parse(process.env.VCAP_SERVICES); var creds = services[mysql-5.1][0].credentials configure do services = JSON.parse(ENV[VCAP_SERVICES]) mysql_key = services.keys.select { |svc| svc =~ /mysql/i }.first mysql = services[mysql_key].first[credentials] mysql_conf = {:host => mysql[hostname], :port => mysql[port], :username => mysql[user], :password => mysql[password]} @@client = Mysql2::Client.new mysql_conf end 49
  47. 47. Accessing bound services - high-level, Spring/JavaCloudEnvironment environment = new CloudEnvironment();RdbmsServiceInfo mysqlSvc = environment.getServiceInfo("mysqlService", RdbmsServiceInfo.class);RdbmsServiceCreator dataSourceCreator = new RdbmsServiceCreator();DataSource dataSource = dataSourceCreator.createService(mysqlSvc);<cloud:data-source id="dataSource" service-name="mysql1"> <cloud:pool pool-size="1-5"/> <cloud:connection properties="charset=utf-8"/></cloud:data-source>... reconfigured automatically <bean id="dataSource" class="…"> … DataSource for MySQL instance … </bean> 50
  48. 48. Accessing bound services - high-level, Ruby reconfigured automaticallyRedisHost = "127.0.0.1"RedisPort = 10000$r = Redis.new(:host => RedisHost, :port => RedisPort) if !$r rewritten automaticallyproduction: adapter: sqlite3 database: db/production.sqlite3 51
  49. 49. Recap… Services : • SQL and NoSQL databases • Message broker • ... Service Bindings • VCAP_SERVICES environment variable • JSON Format Framework-dependent ways of accessing the bindings: • Parse JSON • ... • Spring, Sinatra and Rails have auto-reconfiguration 52
  50. 50. Services are great but what if we want to Use database tools?Use the services from JUnit integration tests? 53
  51. 51. Using Caldecott to tunnel into your services 54
  52. 52. gem install caldecott 55
  53. 53. Caldecott Demo 56
  54. 54. Running JUnit test with Caldecott Configure your test code to use port + connection info 58
  55. 55. Summary 59
  56. 56. Cloud Foundry is aremarkably easy way todeploy your applications 60
  57. 57. Cloud Foundry = Choice 61
  58. 58. .js Ap p Private   lica DataServices Clouds   o e fac n  S ter erv r  In i ce ide Public  In ov Msg Services Clouds ter  Pr fac ud e Cl o Other Micro Services Clouds
  59. 59. Questions?Signup @ www.cloudfoundry.com
  60. 60. Thank You!t @CloudFoundryt @crichardson Website : www.cloudfoundry.com Blog : Blog.CloudFoundry.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×