SlideShare une entreprise Scribd logo
1  sur  50
Framework Integration in
Cloud Foundry

Ramnivas Laddad
@ramnivas


© 2012 VMware, Inc. All rights reserved
@ramnivas

  Spring framework committer
  Cloud Foundry committer
  Main interests
  • Cloud computing
  • Aspect-oriented programming
  • Scala and functional programming
  Author of books and articles
  • AspectJ in Action (1st and 2nd edition)
  Speaker at many professional conferences
  • JavaOne, JavaPolis, SpringOne, Software Development, No Fluff Just Stuff,
    EclipseCon, O’Reilly OSCON etc.

  Active involvement in AspectJ, Spring, and Cloud Foundry
  since their early form
                                         CONFIDENTIAL

                                                                                2
Technologies “Я” Us
                                                            Closure     Java
                     AMQP         HTML5            Akka
        Mongo                                               Spring      Scala
Redis                        JSF                  Grails
        Hibernate                                                  node.js
RabbitMQ              JDBC
                                           Lift
                                                           Rails
              JMS                                                     Ruby
 Hadoop                                      Sinatra
                       Batch Job           Django
              JTA                                  Python
 MySQL                          Web Services
              JPA     Caching                  LDAP
  Postgres                     Scripting
                       Testing            Security
             Neo4j                REST
                            CONFIDENTIAL

                                                                             3
Technologies “Я” Us

                  Access logs               Network
  Routing
            Hardware failures           DNS
                                                   Storage
 Load balancing
                   Auditing           Rolling Updates
User management

                  Security               DoS
  Backups                                             DBA

            OS                        Monitoring
                    Patches
                       CONFIDENTIAL

                                                             4
Facets of complexity: Product
 More functionality
 Time to market pressure
 Complex integration
 Higher stake in quality




                            CONFIDENTIAL

                                           5
Facets of complexity: Development
 Sound architecture: future proofing without overdoing
 Unit and integration tests
 Responding to changing business needs
 Confusing technology landscape




                               CONFIDENTIAL

                                                          6
Facets of complexity: Deployment and
operation
 Choosing the right hardware, operating system, web server
 Monitoring applications
 Responding to scalability needs
 Dealing with hardware- and system-level failures
 Upgrading without substantial down time




                              CONFIDENTIAL

                                                              7
Inherent vs. Apparent Complexity



                                   What can we do
                                       about this?




   Implementation overhead
                                                            Apparent
        Implementation                                     complexity
                                                Inherent
        Functional logic                       complexity




                    CONFIDENTIAL

                                                                        8
What can we do?




                  ?
                  CONFIDENTIAL

                                 9
Three layers of Cloud Computing

                  SaaS
  Software as a Service




                  PaaS
  Platform as a Service




                   IaaS
    Infrastructure as a
                Service

                          CONFIDENTIAL

                                         10
Cloud Foundry open PaaS - Choice of clouds




      Data
     Services
                                                              Private
                                                              Clouds
                  Msg                                    Public
                Services
                                                         Clouds

                            Other
                                                     Micro
                           Services
                                                     Clouds


                                      CONFIDENTIAL

                                                                        11
Cloud Foundry open PaaS - Choice of clouds




          Data
         Services
                                                                  Private
                                                                  Clouds    Partners

                      Msg                                    Public
                    Services
                                                             Clouds

                                Other
                                                         Micro
                               Services
                                                         Clouds

Apache2 license
                                          CONFIDENTIAL

                                                                                       12
Frameworks in Cloud Foundry




           CONFIDENTIAL

                              13
The Cloud Foundry Universe




                   Core Frameworks




          Community and Partner contributions



                          CONFIDENTIAL

                                                14
Core Runtimes and Frameworks
 Java
 • Spring
 • Grails
 • Lift
 Ruby
 • Rails
 • Sinatra
 • Rack
 Node.js (Community lead: Joyent)




                              CONFIDENTIAL

                                             15
Community and partners contributions
 Python
    • Django
    • WSGI
   Erlang OTP/Rebar
   PHP
   Perl
   .Net
    • On Iron Foundry




                        CONFIDENTIAL

                                       16
The Platinum Rule




     Treat each framework
the way it will like to be treated!



                    CONFIDENTIAL

                                      17
Common Framework Support




          CONFIDENTIAL

                           18
Command-line access
 Create apps and services
 Update bindings, memory etc.
 Scale instances




 $ vmc push conference
 $ vmc create-service mysql conf-db
 $ vmc bind-service conf-db conference
 $ vmc instances conference +2

                                 CONFIDENTIAL

                                                19
Access to services and app info
 Access to services and app info through environment variables
 • Service host, port, credentials
 • App ip and port
   VCAP_SERVICES: {
       "postgresql-9.0": [{
            "name": "env-postgresql",
            "label": "postgresql-9.0",
            "plan": "free",
            "credentials": {
                "name": "de24667f9344b4eeaad6b5a2326d52faa",
                "host": "172.30.48.122",
                "port": 5432,
                "user": "u50ce600bba434bacbc99e034bb415644",
                "password": "pf4dca5bd449d4732841f0c4ae3f299d0"
            }
       }]
                                           CONFIDENTIAL
   }                                                              20
Simplified app configration
 A runtime library to access service and app info
 Auto-reconfiguration for typical apps
 • Node.js coming soon




                                CONFIDENTIAL

                                                     21
Access to service through Caldecott

 $ vmc tunnel conf-db
 Binding Service [conf-db]: OK
 Stopping Application 'caldecott': OK
 Staging Application 'caldecott': OK
 Starting Application 'caldecott': OK
 Getting tunnel connection info: OK

 Service connection info:
  username : uG5jVXaBPmjl6
  password : pE3HOwIwGgkbv
  name : d76e62447a4c04f2b8e7b79f41c450aa0

 Starting tunnel to conf-db on port 10000.
 1: none
 2: mysql
 3: mysqldump
 Which client would you like to start?: 2

                                    CONFIDENTIAL

                                                   22
Access to service through Caldecott

 Launching 'mysql --protocol=TCP --host=localhost --port=10000
          --user=uG5jVXaBPmjl6
          --password=pE3HOwIwGgkbv
          d76e62447a4c04f2b8e7b79f41c450aa0'

 ...


 mysql> select * from users;




                                  CONFIDENTIAL

                                                                 23
Manifest Support
       ---
       applications:
        .:
             name: conference
             url: ${name}.${target-base}
             framework:
              name: rails3
              info:
               mem: 256M
               description: Rails Application
               exec:
             mem: 256M
             instances: 1
             services:
              conf-db:
               type: mysql
                                     CONFIDENTIAL

                                                    24
Spring




 CONFIDENTIAL

                25
The Platinum Rule: Spring and Grails
 IDE integration
    • SpringSource Tools Suite and Eclipse
    • Open source
   Auto-reconfiguration by hooking into Spring application context
   <cloud:> namespace
   Spring 3.1 profile support
   Maven plugin




                                      CONFIDENTIAL

                                                                      26
IDE Integration




                  CONFIDENTIAL

                                 27
Auto-Reconfiguration: Relational DB
 Detects beans of type javax.sql.DataSource
 Connects to MySQL or PostgreSQL services
    • Specifies driver, url, username, password, validation query
 Creates Commons DBCP or Tomcat DataSource

<bean class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close" id="dataSource">
 <property name="driverClassName" value="org.h2.Driver" />
 <property name="url" value="jdbc:h2:mem:" />
 <property name="username" value="sa" />
 <property name="password" value="" />
</bean>
                                    CONFIDENTIAL

                                                                    28
<cloud:service-scan>
 Scans all services bound to the application and creates a bean of
 an appropriate type for each
    • Same bean types as auto-reconfiguration
 Useful during early development phases



        <beans …>
           <cloud:service-scan/>
        </beans>




                                   CONFIDENTIAL

                                                                      29
<cloud:service-scan> Autowire Dependencies
 Created beans can be autowired as dependencies
 Use @Qualifier with service name if multiple services of same type
 bound to app


@Autowired(required=false) private ConnectionFactory rabbitConnectionFactory;


@Autowired private RedisConnectionFactory redisConnectionFactory;


@Autowired @Qualifier("test_mysql_database")
private DataSource mysqlDataSource;


@Autowired(required=false) @Qualifier("test_postgres_database")
private DataSource postgresDataSource;

                                   CONFIDENTIAL

                                                                                30
<cloud:data-source>
 Configures a DataSource bean
     • Commons DBCP or Tomcat DataSource
 Basic attributes:
     • id: defaults to service name
     • service-name: only needed if you have multiple relational database
      services bound to the app




            <cloud:data-source id="dataSource"/>




                                      CONFIDENTIAL

                                                                            31
Isolating Cloud Foundry Configuration

<bean class="org.sf.orm.jpa.LocalContainerEntityManagerFactoryBean"
      id="entityManagerFactory">
  <property name="dataSource" ref="dataSource"/>
</bean>


<beans profile="cloud">
  <cloud:data-source id="dataSource" />
</beans>


<beans profile="default">
  <bean class=”o.a.commons.dbcp.BasicDataSource" id="dataSource">
   <property name="url" value="jdbc:mysql://localhost/inventory" />
 </bean>
</beans>                            CONFIDENTIAL

                                                                      32
Scala/Lift
  Auto-reconfiguration for Scala Lift apps
  PostgreSQL support coming soon




                              CONFIDENTIAL

                                              33
Ruby




CONFIDENTIAL

               34
The Platinum Rule: Rails, Sinatra, Rack
 Bundle support
 • Just include a Gemfile.lock
 Rails console
 • Debugging
 Auto-reconfiguration through meta-programming
 cf-runtime gem




                                 CONFIDENTIAL

                                                  35
Rails Console
$ vmc rails-console conf
Connecting to 'conf' console: OK
irb():001:0> u = User.find_by_email('ramnivas@ramnivas.com')
=> #<User id: 1, email: "ramnivas@ramnivas.com", reason: "It is cool!",
created_at: "2012-03-29 23:10:34", updated_at: "2012-03-29 23:10:34">
irb():002:0> u.email = "rladdad@vmware.com"
=> "rladdad@vmware.com"
irb():003:0> u.save
=> true
irb():004:0> u = User.find_by_email('rladdad@vmware.com')
=> #<User id: 1, email: "rladdad@vmware.com", reason: "It is cool!",
created_at: "2012-03-29 23:10:34", updated_at: "2012-03-29 23:14:17">


                                   CONFIDENTIAL

                                                                          36
Ruby auto-reconfiguration

require 'mongo'

module Demo
 class App < Sinatra::Base
  configure do
    mongo = Mongo::Connection.new(:host => '127.0.0.1',
                     :port => 27017)
    db = mongo['db']
  end
  ...
 end
end




                                CONFIDENTIAL

                                                          37
cf-runtime: Ruby Runtime Gem



require 'cfruntime/mongodb'
connection =
 CFRuntime::MongoClient.create_from_svc('docs')
db = connection.db
...




                              CONFIDENTIAL

                                                  38
Running locally and in Cloud Foundry


require 'cfruntime/mongodb'
...
db = CFRuntime::MongoClient.create.db
      rescue Mongo::Connection.new("localhost",
                       27017)
                    .db("db”)
...



                                CONFIDENTIAL

                                                  39
Taking full control

 if CFRuntime::CloudApp.running_in_cloud?
   @service_props = CFRuntime::CloudApp.service_props('docs’)
 else
   @service_props = {}
   @service_props[:host] = 'localhost'
   @service_props[:port] = 27017
   @service_props[:db] = 'testdb'
 end
 db = Mongo::Connection.new(@service_props[:host],
                  @service_props[:port])
               .db(@service_props[:db])
 if CFRuntime::CloudApp.running_in_cloud?
   db.authenticate(@service_props[:username],
            @service_props[:password])
 end



                                  CONFIDENTIAL

                                                                40
Node.js




 CONFIDENTIAL

                41
The Platinum Rule: Node.js
 NPM support
 • Coming soon!
 Debugging using node-inspector
 Auto-reconfiguration and runtime package
 • Coming soon!




                              CONFIDENTIAL

                                             42
Debugging node.js apps




                   CONFIDENTIAL

                                  43
Auto-reconfiguration in node.js
var host = 'localhost',
  port = 3000,
  url = require('url');

var client = require("redis").createClient();

require('http').createServer(function (req, res) {
 ...




                                 CONFIDENTIAL

                                                     44
Accessing apps and services info
var cfruntime = require('cfruntime'),
  host = cfruntime.CloudApp.host || 'localhost',
  port = cfruntime.CloudApp.port || 3000,
  url = require('url');

if (cfruntime.CloudApp.runningInCloud) {
  var client = cfruntime.RedisClient.create();
} else {
  var client = require("redis").createClient();
}

require('http').createServer(function (req, res) {
 ...




                                  CONFIDENTIAL

                                                     45
Peeking into future




       CONFIDENTIAL

                      46
Standalone apps
 Bring your own container
 • Jetty
 • Netty
 •…
 Non-web apps
 • Resque workers
 • Spring Batch
 • Spring Integration


 Still to come
 • Short-running apps
 • Scheduled tasks



                             CONFIDENTIAL

                                            47
Enhanced Scala Support
 Lift updated support
 Play!
 Akka




                         CONFIDENTIAL

                                        48
Improved Tools
 Revamped vmc
 • Embeddable core
 • Scripting friendly
 • Even more intuitive user interaction
 Eclipse plugin
 • Enhanced wizard with service requirement detection
 • Manifest support
 • Caldecott integration




                                      CONFIDENTIAL

                                                        49
Questions?


Ramnivas Laddad
@ramnivas


© 2012 VMware, Inc. All rights reserved

Contenu connexe

Tendances

Joyent Cloud Data Sheet
Joyent Cloud Data SheetJoyent Cloud Data Sheet
Joyent Cloud Data SheetScott Herson
 
Cisco open network environment
Cisco open network environmentCisco open network environment
Cisco open network environmentdeepers
 
Presenter manual cloud computing (specially for summer interns)
Presenter manual   cloud computing (specially for summer interns)Presenter manual   cloud computing (specially for summer interns)
Presenter manual cloud computing (specially for summer interns)XPERT INFOTECH
 
BayThreat Why The Cloud Changes Everything
BayThreat Why The Cloud Changes EverythingBayThreat Why The Cloud Changes Everything
BayThreat Why The Cloud Changes EverythingCloudPassage
 
Cloud Application Platforms – Reality & Promise
Cloud Application Platforms – Reality & PromiseCloud Application Platforms – Reality & Promise
Cloud Application Platforms – Reality & PromiseIntel Corporation
 
A Hitchhiker's Guide to the Inter-Cloud
A Hitchhiker's Guide to the Inter-CloudA Hitchhiker's Guide to the Inter-Cloud
A Hitchhiker's Guide to the Inter-CloudGovCloud Network
 
Mon1420 build clouds-oliviermaes-citrix
Mon1420 build clouds-oliviermaes-citrixMon1420 build clouds-oliviermaes-citrix
Mon1420 build clouds-oliviermaes-citrixeurocloud
 
CCitDG Presenation
CCitDG PresenationCCitDG Presenation
CCitDG PresenationDatabarracks
 
IAPP Atlanta Chapter Meeting 2013 February
IAPP Atlanta Chapter Meeting 2013 FebruaryIAPP Atlanta Chapter Meeting 2013 February
IAPP Atlanta Chapter Meeting 2013 FebruaryPhil Agcaoili
 
Symantec VMworld 2011 News
Symantec VMworld 2011 NewsSymantec VMworld 2011 News
Symantec VMworld 2011 NewsSymantec
 
g Eclipse @ Eclipse Summit Europe 2008
g Eclipse @ Eclipse Summit Europe 2008g Eclipse @ Eclipse Summit Europe 2008
g Eclipse @ Eclipse Summit Europe 2008guest462d7
 
RightScale Introduction, Amazon EBS
RightScale Introduction, Amazon EBSRightScale Introduction, Amazon EBS
RightScale Introduction, Amazon EBSMatt Small
 
Onboarding For Public Private And Hybrid Clouds Aws 30.04.09
Onboarding For Public Private And Hybrid Clouds Aws 30.04.09Onboarding For Public Private And Hybrid Clouds Aws 30.04.09
Onboarding For Public Private And Hybrid Clouds Aws 30.04.09Chris Purrington
 
MAY 6, 2012: Interop Las Vegas "Why Open Clouds Are Winning"
MAY 6, 2012: Interop Las Vegas "Why Open Clouds Are Winning"MAY 6, 2012: Interop Las Vegas "Why Open Clouds Are Winning"
MAY 6, 2012: Interop Las Vegas "Why Open Clouds Are Winning"troyangrignon
 
e-Infrastructures for Science and Industry
e-Infrastructures for Science and Industrye-Infrastructures for Science and Industry
e-Infrastructures for Science and IndustryWolfgang Gentzsch
 
20120609 cod mms_feedback_osamut
20120609 cod mms_feedback_osamut20120609 cod mms_feedback_osamut
20120609 cod mms_feedback_osamutOsamu Takazoe
 
Microsoft Best Practices - AWS India Summit 2012
Microsoft Best Practices - AWS India Summit 2012Microsoft Best Practices - AWS India Summit 2012
Microsoft Best Practices - AWS India Summit 2012Amazon Web Services
 
Open stack for open source private cloud 20120425-shanghai
Open stack for open source  private cloud  20120425-shanghaiOpen stack for open source  private cloud  20120425-shanghai
Open stack for open source private cloud 20120425-shanghaiOpenCity Community
 
NIC 2013 - Configure and Deploy Private Cloud
NIC 2013 - Configure and Deploy Private CloudNIC 2013 - Configure and Deploy Private Cloud
NIC 2013 - Configure and Deploy Private CloudKristian Nese
 

Tendances (20)

Joyent Cloud Data Sheet
Joyent Cloud Data SheetJoyent Cloud Data Sheet
Joyent Cloud Data Sheet
 
Cisco open network environment
Cisco open network environmentCisco open network environment
Cisco open network environment
 
Presenter manual cloud computing (specially for summer interns)
Presenter manual   cloud computing (specially for summer interns)Presenter manual   cloud computing (specially for summer interns)
Presenter manual cloud computing (specially for summer interns)
 
BayThreat Why The Cloud Changes Everything
BayThreat Why The Cloud Changes EverythingBayThreat Why The Cloud Changes Everything
BayThreat Why The Cloud Changes Everything
 
Cloud Application Platforms – Reality & Promise
Cloud Application Platforms – Reality & PromiseCloud Application Platforms – Reality & Promise
Cloud Application Platforms – Reality & Promise
 
A Hitchhiker's Guide to the Inter-Cloud
A Hitchhiker's Guide to the Inter-CloudA Hitchhiker's Guide to the Inter-Cloud
A Hitchhiker's Guide to the Inter-Cloud
 
Mon1420 build clouds-oliviermaes-citrix
Mon1420 build clouds-oliviermaes-citrixMon1420 build clouds-oliviermaes-citrix
Mon1420 build clouds-oliviermaes-citrix
 
CCitDG Presenation
CCitDG PresenationCCitDG Presenation
CCitDG Presenation
 
IAPP Atlanta Chapter Meeting 2013 February
IAPP Atlanta Chapter Meeting 2013 FebruaryIAPP Atlanta Chapter Meeting 2013 February
IAPP Atlanta Chapter Meeting 2013 February
 
vBACD July 2012 - Apache Hadoop, Now and Beyond
vBACD July 2012 - Apache Hadoop, Now and BeyondvBACD July 2012 - Apache Hadoop, Now and Beyond
vBACD July 2012 - Apache Hadoop, Now and Beyond
 
Symantec VMworld 2011 News
Symantec VMworld 2011 NewsSymantec VMworld 2011 News
Symantec VMworld 2011 News
 
g Eclipse @ Eclipse Summit Europe 2008
g Eclipse @ Eclipse Summit Europe 2008g Eclipse @ Eclipse Summit Europe 2008
g Eclipse @ Eclipse Summit Europe 2008
 
RightScale Introduction, Amazon EBS
RightScale Introduction, Amazon EBSRightScale Introduction, Amazon EBS
RightScale Introduction, Amazon EBS
 
Onboarding For Public Private And Hybrid Clouds Aws 30.04.09
Onboarding For Public Private And Hybrid Clouds Aws 30.04.09Onboarding For Public Private And Hybrid Clouds Aws 30.04.09
Onboarding For Public Private And Hybrid Clouds Aws 30.04.09
 
MAY 6, 2012: Interop Las Vegas "Why Open Clouds Are Winning"
MAY 6, 2012: Interop Las Vegas "Why Open Clouds Are Winning"MAY 6, 2012: Interop Las Vegas "Why Open Clouds Are Winning"
MAY 6, 2012: Interop Las Vegas "Why Open Clouds Are Winning"
 
e-Infrastructures for Science and Industry
e-Infrastructures for Science and Industrye-Infrastructures for Science and Industry
e-Infrastructures for Science and Industry
 
20120609 cod mms_feedback_osamut
20120609 cod mms_feedback_osamut20120609 cod mms_feedback_osamut
20120609 cod mms_feedback_osamut
 
Microsoft Best Practices - AWS India Summit 2012
Microsoft Best Practices - AWS India Summit 2012Microsoft Best Practices - AWS India Summit 2012
Microsoft Best Practices - AWS India Summit 2012
 
Open stack for open source private cloud 20120425-shanghai
Open stack for open source  private cloud  20120425-shanghaiOpen stack for open source  private cloud  20120425-shanghai
Open stack for open source private cloud 20120425-shanghai
 
NIC 2013 - Configure and Deploy Private Cloud
NIC 2013 - Configure and Deploy Private CloudNIC 2013 - Configure and Deploy Private Cloud
NIC 2013 - Configure and Deploy Private Cloud
 

Similaire à Framework Integration in Cloud Foundry

Cloudfoundry architecture
Cloudfoundry architectureCloudfoundry architecture
Cloudfoundry architectureRamnivas Laddad
 
Niko Nelissen - Sun Microsystems - Keynote 'What's next in the Cloud?' CloudC...
Niko Nelissen - Sun Microsystems - Keynote 'What's next in the Cloud?' CloudC...Niko Nelissen - Sun Microsystems - Keynote 'What's next in the Cloud?' CloudC...
Niko Nelissen - Sun Microsystems - Keynote 'What's next in the Cloud?' CloudC...CloudAngels
 
Be Prepared for Tomorrow's IT Forecast Great Chance of Hybrid Clouds
Be Prepared for Tomorrow's IT Forecast Great Chance of Hybrid CloudsBe Prepared for Tomorrow's IT Forecast Great Chance of Hybrid Clouds
Be Prepared for Tomorrow's IT Forecast Great Chance of Hybrid CloudsEucalyptus Systems, Inc.
 
Be Prepared for Tomorrow's IT Forecast: Great Chance of Hybrid Clouds
Be Prepared for Tomorrow's IT Forecast: Great Chance of Hybrid CloudsBe Prepared for Tomorrow's IT Forecast: Great Chance of Hybrid Clouds
Be Prepared for Tomorrow's IT Forecast: Great Chance of Hybrid CloudsEucalyptus Systems, Inc.
 
Intel Cloud Summit ODCA - NAB Customer presentation
Intel Cloud Summit ODCA - NAB Customer presentationIntel Cloud Summit ODCA - NAB Customer presentation
Intel Cloud Summit ODCA - NAB Customer presentationIntelAPAC
 
BlazeClan Technologies
BlazeClan TechnologiesBlazeClan Technologies
BlazeClan TechnologiesVaroon Rajani
 
Cloud computing NIC 2012
Cloud computing NIC 2012Cloud computing NIC 2012
Cloud computing NIC 2012Kristian Nese
 
Blaze clan company presentation
Blaze clan   company presentationBlaze clan   company presentation
Blaze clan company presentationSupratik Ghatak
 
Deadly Sins Bcs Elite
Deadly Sins Bcs EliteDeadly Sins Bcs Elite
Deadly Sins Bcs EliteJon G. Hall
 
BlazeClan Technologies - Company Presentation
BlazeClan Technologies - Company PresentationBlazeClan Technologies - Company Presentation
BlazeClan Technologies - Company PresentationSupratik Ghatak
 
Security in a Cloudy Architecture
Security in a Cloudy ArchitectureSecurity in a Cloudy Architecture
Security in a Cloudy ArchitectureBob Rhubart
 
A Federated Multi-Cloud PaaS Infrasctructure
A Federated Multi-Cloud PaaS InfrasctructureA Federated Multi-Cloud PaaS Infrasctructure
A Federated Multi-Cloud PaaS InfrasctructureFawaz Fernand PARAISO
 
Intel Cloud Summit 2012 ODCA + NAB
Intel Cloud Summit 2012 ODCA + NABIntel Cloud Summit 2012 ODCA + NAB
Intel Cloud Summit 2012 ODCA + NABIntelAPAC
 
The Cloud and Next Gen IT Gordon Haff - p camp-boston2012
The Cloud and Next Gen IT   Gordon Haff - p camp-boston2012The Cloud and Next Gen IT   Gordon Haff - p camp-boston2012
The Cloud and Next Gen IT Gordon Haff - p camp-boston2012ProductCamp Boston
 
Business Of Cloud Computing Workshop Final
Business Of Cloud Computing Workshop FinalBusiness Of Cloud Computing Workshop Final
Business Of Cloud Computing Workshop FinalMarc Crudgington, MBA
 
Tour de Clouds: Understanding Multi-Cloud Integration
Tour de Clouds: Understanding Multi-Cloud IntegrationTour de Clouds: Understanding Multi-Cloud Integration
Tour de Clouds: Understanding Multi-Cloud IntegrationRightScale
 
Rs product deck january 2012
Rs product deck january 2012Rs product deck january 2012
Rs product deck january 2012Brad , Yun Lee
 

Similaire à Framework Integration in Cloud Foundry (20)

Cloudfoundry architecture
Cloudfoundry architectureCloudfoundry architecture
Cloudfoundry architecture
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Niko Nelissen - Sun Microsystems - Keynote 'What's next in the Cloud?' CloudC...
Niko Nelissen - Sun Microsystems - Keynote 'What's next in the Cloud?' CloudC...Niko Nelissen - Sun Microsystems - Keynote 'What's next in the Cloud?' CloudC...
Niko Nelissen - Sun Microsystems - Keynote 'What's next in the Cloud?' CloudC...
 
Be Prepared for Tomorrow's IT Forecast Great Chance of Hybrid Clouds
Be Prepared for Tomorrow's IT Forecast Great Chance of Hybrid CloudsBe Prepared for Tomorrow's IT Forecast Great Chance of Hybrid Clouds
Be Prepared for Tomorrow's IT Forecast Great Chance of Hybrid Clouds
 
Be Prepared for Tomorrow's IT Forecast: Great Chance of Hybrid Clouds
Be Prepared for Tomorrow's IT Forecast: Great Chance of Hybrid CloudsBe Prepared for Tomorrow's IT Forecast: Great Chance of Hybrid Clouds
Be Prepared for Tomorrow's IT Forecast: Great Chance of Hybrid Clouds
 
Intel Cloud Summit ODCA - NAB Customer presentation
Intel Cloud Summit ODCA - NAB Customer presentationIntel Cloud Summit ODCA - NAB Customer presentation
Intel Cloud Summit ODCA - NAB Customer presentation
 
BlazeClan Technologies
BlazeClan TechnologiesBlazeClan Technologies
BlazeClan Technologies
 
Cloud computing NIC 2012
Cloud computing NIC 2012Cloud computing NIC 2012
Cloud computing NIC 2012
 
Blaze clan company presentation
Blaze clan   company presentationBlaze clan   company presentation
Blaze clan company presentation
 
Deadly Sins Bcs Elite
Deadly Sins Bcs EliteDeadly Sins Bcs Elite
Deadly Sins Bcs Elite
 
BlazeClan Technologies - Company Presentation
BlazeClan Technologies - Company PresentationBlazeClan Technologies - Company Presentation
BlazeClan Technologies - Company Presentation
 
Security in a Cloudy Architecture
Security in a Cloudy ArchitectureSecurity in a Cloudy Architecture
Security in a Cloudy Architecture
 
A Federated Multi-Cloud PaaS Infrasctructure
A Federated Multi-Cloud PaaS InfrasctructureA Federated Multi-Cloud PaaS Infrasctructure
A Federated Multi-Cloud PaaS Infrasctructure
 
Intel Cloud Summit 2012 ODCA + NAB
Intel Cloud Summit 2012 ODCA + NABIntel Cloud Summit 2012 ODCA + NAB
Intel Cloud Summit 2012 ODCA + NAB
 
The Cloud and Next Gen IT Gordon Haff - p camp-boston2012
The Cloud and Next Gen IT   Gordon Haff - p camp-boston2012The Cloud and Next Gen IT   Gordon Haff - p camp-boston2012
The Cloud and Next Gen IT Gordon Haff - p camp-boston2012
 
Business Of Cloud Computing Workshop Final
Business Of Cloud Computing Workshop FinalBusiness Of Cloud Computing Workshop Final
Business Of Cloud Computing Workshop Final
 
Tour de Clouds: Understanding Multi-Cloud Integration
Tour de Clouds: Understanding Multi-Cloud IntegrationTour de Clouds: Understanding Multi-Cloud Integration
Tour de Clouds: Understanding Multi-Cloud Integration
 
Rs product deck january 2012
Rs product deck january 2012Rs product deck january 2012
Rs product deck january 2012
 
SPL in Clouds
SPL in CloudsSPL in Clouds
SPL in Clouds
 

Dernier

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
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...Neo4j
 
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 AutomationSafe Software
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
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 textsMaria Levchenko
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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 RobisonAnna Loughnan Colquhoun
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 

Dernier (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
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...
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 

Framework Integration in Cloud Foundry

  • 1. Framework Integration in Cloud Foundry Ramnivas Laddad @ramnivas © 2012 VMware, Inc. All rights reserved
  • 2. @ramnivas  Spring framework committer  Cloud Foundry committer  Main interests • Cloud computing • Aspect-oriented programming • Scala and functional programming  Author of books and articles • AspectJ in Action (1st and 2nd edition)  Speaker at many professional conferences • JavaOne, JavaPolis, SpringOne, Software Development, No Fluff Just Stuff, EclipseCon, O’Reilly OSCON etc.  Active involvement in AspectJ, Spring, and Cloud Foundry since their early form CONFIDENTIAL 2
  • 3. Technologies “Я” Us Closure Java AMQP HTML5 Akka Mongo Spring Scala Redis JSF Grails Hibernate node.js RabbitMQ JDBC Lift Rails JMS Ruby Hadoop Sinatra Batch Job Django JTA Python MySQL Web Services JPA Caching LDAP Postgres Scripting Testing Security Neo4j REST CONFIDENTIAL 3
  • 4. Technologies “Я” Us Access logs Network Routing Hardware failures DNS Storage Load balancing Auditing Rolling Updates User management Security DoS Backups DBA OS Monitoring Patches CONFIDENTIAL 4
  • 5. Facets of complexity: Product  More functionality  Time to market pressure  Complex integration  Higher stake in quality CONFIDENTIAL 5
  • 6. Facets of complexity: Development  Sound architecture: future proofing without overdoing  Unit and integration tests  Responding to changing business needs  Confusing technology landscape CONFIDENTIAL 6
  • 7. Facets of complexity: Deployment and operation  Choosing the right hardware, operating system, web server  Monitoring applications  Responding to scalability needs  Dealing with hardware- and system-level failures  Upgrading without substantial down time CONFIDENTIAL 7
  • 8. Inherent vs. Apparent Complexity What can we do about this? Implementation overhead Apparent Implementation complexity Inherent Functional logic complexity CONFIDENTIAL 8
  • 9. What can we do? ? CONFIDENTIAL 9
  • 10. Three layers of Cloud Computing SaaS Software as a Service PaaS Platform as a Service IaaS Infrastructure as a Service CONFIDENTIAL 10
  • 11. Cloud Foundry open PaaS - Choice of clouds Data Services Private Clouds Msg Public Services Clouds Other Micro Services Clouds CONFIDENTIAL 11
  • 12. Cloud Foundry open PaaS - Choice of clouds Data Services Private Clouds Partners Msg Public Services Clouds Other Micro Services Clouds Apache2 license CONFIDENTIAL 12
  • 13. Frameworks in Cloud Foundry CONFIDENTIAL 13
  • 14. The Cloud Foundry Universe Core Frameworks Community and Partner contributions CONFIDENTIAL 14
  • 15. Core Runtimes and Frameworks  Java • Spring • Grails • Lift  Ruby • Rails • Sinatra • Rack  Node.js (Community lead: Joyent) CONFIDENTIAL 15
  • 16. Community and partners contributions  Python • Django • WSGI  Erlang OTP/Rebar  PHP  Perl  .Net • On Iron Foundry CONFIDENTIAL 16
  • 17. The Platinum Rule Treat each framework the way it will like to be treated! CONFIDENTIAL 17
  • 18. Common Framework Support CONFIDENTIAL 18
  • 19. Command-line access  Create apps and services  Update bindings, memory etc.  Scale instances $ vmc push conference $ vmc create-service mysql conf-db $ vmc bind-service conf-db conference $ vmc instances conference +2 CONFIDENTIAL 19
  • 20. Access to services and app info  Access to services and app info through environment variables • Service host, port, credentials • App ip and port VCAP_SERVICES: { "postgresql-9.0": [{ "name": "env-postgresql", "label": "postgresql-9.0", "plan": "free", "credentials": { "name": "de24667f9344b4eeaad6b5a2326d52faa", "host": "172.30.48.122", "port": 5432, "user": "u50ce600bba434bacbc99e034bb415644", "password": "pf4dca5bd449d4732841f0c4ae3f299d0" } }] CONFIDENTIAL } 20
  • 21. Simplified app configration  A runtime library to access service and app info  Auto-reconfiguration for typical apps • Node.js coming soon CONFIDENTIAL 21
  • 22. Access to service through Caldecott $ vmc tunnel conf-db Binding Service [conf-db]: OK Stopping Application 'caldecott': OK Staging Application 'caldecott': OK Starting Application 'caldecott': OK Getting tunnel connection info: OK Service connection info: username : uG5jVXaBPmjl6 password : pE3HOwIwGgkbv name : d76e62447a4c04f2b8e7b79f41c450aa0 Starting tunnel to conf-db on port 10000. 1: none 2: mysql 3: mysqldump Which client would you like to start?: 2 CONFIDENTIAL 22
  • 23. Access to service through Caldecott Launching 'mysql --protocol=TCP --host=localhost --port=10000 --user=uG5jVXaBPmjl6 --password=pE3HOwIwGgkbv d76e62447a4c04f2b8e7b79f41c450aa0' ... mysql> select * from users; CONFIDENTIAL 23
  • 24. Manifest Support --- applications: .: name: conference url: ${name}.${target-base} framework: name: rails3 info: mem: 256M description: Rails Application exec: mem: 256M instances: 1 services: conf-db: type: mysql CONFIDENTIAL 24
  • 26. The Platinum Rule: Spring and Grails  IDE integration • SpringSource Tools Suite and Eclipse • Open source  Auto-reconfiguration by hooking into Spring application context  <cloud:> namespace  Spring 3.1 profile support  Maven plugin CONFIDENTIAL 26
  • 27. IDE Integration CONFIDENTIAL 27
  • 28. Auto-Reconfiguration: Relational DB  Detects beans of type javax.sql.DataSource  Connects to MySQL or PostgreSQL services • Specifies driver, url, username, password, validation query  Creates Commons DBCP or Tomcat DataSource <bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource"> <property name="driverClassName" value="org.h2.Driver" /> <property name="url" value="jdbc:h2:mem:" /> <property name="username" value="sa" /> <property name="password" value="" /> </bean> CONFIDENTIAL 28
  • 29. <cloud:service-scan>  Scans all services bound to the application and creates a bean of an appropriate type for each • Same bean types as auto-reconfiguration  Useful during early development phases <beans …> <cloud:service-scan/> </beans> CONFIDENTIAL 29
  • 30. <cloud:service-scan> Autowire Dependencies  Created beans can be autowired as dependencies  Use @Qualifier with service name if multiple services of same type bound to app @Autowired(required=false) private ConnectionFactory rabbitConnectionFactory; @Autowired private RedisConnectionFactory redisConnectionFactory; @Autowired @Qualifier("test_mysql_database") private DataSource mysqlDataSource; @Autowired(required=false) @Qualifier("test_postgres_database") private DataSource postgresDataSource; CONFIDENTIAL 30
  • 31. <cloud:data-source>  Configures a DataSource bean • Commons DBCP or Tomcat DataSource  Basic attributes: • id: defaults to service name • service-name: only needed if you have multiple relational database services bound to the app <cloud:data-source id="dataSource"/> CONFIDENTIAL 31
  • 32. Isolating Cloud Foundry Configuration <bean class="org.sf.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory"> <property name="dataSource" ref="dataSource"/> </bean> <beans profile="cloud"> <cloud:data-source id="dataSource" /> </beans> <beans profile="default"> <bean class=”o.a.commons.dbcp.BasicDataSource" id="dataSource"> <property name="url" value="jdbc:mysql://localhost/inventory" /> </bean> </beans> CONFIDENTIAL 32
  • 33. Scala/Lift  Auto-reconfiguration for Scala Lift apps  PostgreSQL support coming soon CONFIDENTIAL 33
  • 35. The Platinum Rule: Rails, Sinatra, Rack  Bundle support • Just include a Gemfile.lock  Rails console • Debugging  Auto-reconfiguration through meta-programming  cf-runtime gem CONFIDENTIAL 35
  • 36. Rails Console $ vmc rails-console conf Connecting to 'conf' console: OK irb():001:0> u = User.find_by_email('ramnivas@ramnivas.com') => #<User id: 1, email: "ramnivas@ramnivas.com", reason: "It is cool!", created_at: "2012-03-29 23:10:34", updated_at: "2012-03-29 23:10:34"> irb():002:0> u.email = "rladdad@vmware.com" => "rladdad@vmware.com" irb():003:0> u.save => true irb():004:0> u = User.find_by_email('rladdad@vmware.com') => #<User id: 1, email: "rladdad@vmware.com", reason: "It is cool!", created_at: "2012-03-29 23:10:34", updated_at: "2012-03-29 23:14:17"> CONFIDENTIAL 36
  • 37. Ruby auto-reconfiguration require 'mongo' module Demo class App < Sinatra::Base configure do mongo = Mongo::Connection.new(:host => '127.0.0.1', :port => 27017) db = mongo['db'] end ... end end CONFIDENTIAL 37
  • 38. cf-runtime: Ruby Runtime Gem require 'cfruntime/mongodb' connection = CFRuntime::MongoClient.create_from_svc('docs') db = connection.db ... CONFIDENTIAL 38
  • 39. Running locally and in Cloud Foundry require 'cfruntime/mongodb' ... db = CFRuntime::MongoClient.create.db rescue Mongo::Connection.new("localhost", 27017) .db("db”) ... CONFIDENTIAL 39
  • 40. Taking full control if CFRuntime::CloudApp.running_in_cloud? @service_props = CFRuntime::CloudApp.service_props('docs’) else @service_props = {} @service_props[:host] = 'localhost' @service_props[:port] = 27017 @service_props[:db] = 'testdb' end db = Mongo::Connection.new(@service_props[:host], @service_props[:port]) .db(@service_props[:db]) if CFRuntime::CloudApp.running_in_cloud? db.authenticate(@service_props[:username], @service_props[:password]) end CONFIDENTIAL 40
  • 42. The Platinum Rule: Node.js  NPM support • Coming soon!  Debugging using node-inspector  Auto-reconfiguration and runtime package • Coming soon! CONFIDENTIAL 42
  • 43. Debugging node.js apps CONFIDENTIAL 43
  • 44. Auto-reconfiguration in node.js var host = 'localhost', port = 3000, url = require('url'); var client = require("redis").createClient(); require('http').createServer(function (req, res) { ... CONFIDENTIAL 44
  • 45. Accessing apps and services info var cfruntime = require('cfruntime'), host = cfruntime.CloudApp.host || 'localhost', port = cfruntime.CloudApp.port || 3000, url = require('url'); if (cfruntime.CloudApp.runningInCloud) { var client = cfruntime.RedisClient.create(); } else { var client = require("redis").createClient(); } require('http').createServer(function (req, res) { ... CONFIDENTIAL 45
  • 46. Peeking into future CONFIDENTIAL 46
  • 47. Standalone apps  Bring your own container • Jetty • Netty •…  Non-web apps • Resque workers • Spring Batch • Spring Integration  Still to come • Short-running apps • Scheduled tasks CONFIDENTIAL 47
  • 48. Enhanced Scala Support  Lift updated support  Play!  Akka CONFIDENTIAL 48
  • 49. Improved Tools  Revamped vmc • Embeddable core • Scripting friendly • Even more intuitive user interaction  Eclipse plugin • Enhanced wizard with service requirement detection • Manifest support • Caldecott integration CONFIDENTIAL 49
  • 50. Questions? Ramnivas Laddad @ramnivas © 2012 VMware, Inc. All rights reserved