SlideShare ist ein Scribd-Unternehmen logo
1 von 87
Downloaden Sie, um offline zu lesen
Cloud Foundry
  The Open Platform as a Service

Patrick Chanezon
Senior Director
Developer Relations
chanezonp@vmware.com
http://twitter.com/chanezon   Cloud Foundry OpenTour, Austin, April 2012
Thursday, April 5, 12
P@ in a nutshell

                        • French, based in San Francisco
                        • Senior Director, Developer Relations,VMware
                        • Software Plumber, API guy, mix of Enterprise and
                        Consumer
                                • 18 years writing software, backend guy with a
                                taste for javascript
                                • 2 y Accenture (Notes guru), 3 y Netscape/AOL
                                (Servers, Portals), 5 y Sun (ecommerce, blogs,
                                Portals, feeds, open source)
                        • 6 years at Google, API guy (first hired, helped start the
                        team)
                                • Adwords, Checkout, Social, HTML5, Cloud


Thursday, April 5, 12
Dreams Of my childhood




    3

Thursday, April 5, 12
Accelerando / Singularity, in a Galaxy far far away

   § Even if we automate ourselves out of a job every 10 years
   § ...I don’t think the singularity is near!




    4

Thursday, April 5, 12
Moore's Law is for Hardware Only

  § Does not apply to software
  § Productivity gains not keeping up with hardware and bandwidth
  § Writing software is hard, painful, and still very much a craft




    5

Thursday, April 5, 12
Moore's Law’s free lunch is over




                        §        Herb Sutter, Welcome to the Jungle
                             http://herbsutter.com/welcome-to-the-jungle/

    6

Thursday, April 5, 12
Future




       “The future is already here
       — it's just not very evenly
       distributed”
       William Gibson




   7


Thursday, April 5, 12
Haiku - Skylark



       “Trampling on clouds,
       inhaling the mist,
       the skylark soars”
        —SHIKI



   8


Thursday, April 5, 12
Haiku - Frog



       “Crouching,
       studying the clouds—
       a frog”
       CHIYO-JO


   9


Thursday, April 5, 12
Architecture Changes: 60’s Mainframe




Thursday, April 5, 12
Architecture Changes: 80’s Client-Server




Thursday, April 5, 12
Architecture Changes: 90’s Web




Thursday, April 5, 12
Architecture Changes: 2010’s Cloud, HTML5, Mobile




Thursday, April 5, 12
Back to Client Server: Groovy Baby!




   14


Thursday, April 5, 12
What is Cloud Computing?




                        Cloud According to my daughter Eliette

   15


Thursday, April 5, 12
Cloud Stack - Classic Pyramid




                                Software
                               As A Service


                          Platform As A Service



                        Infrastructure As A Service




   16


Thursday, April 5, 12
Cloud Stack - By Number




                              Software
                             As A Service



                        Platform As A Service


                             Infrastructure
                             As A Service




   17


Thursday, April 5, 12
Cloud Stack - By Value




                             Software
                            As A Service




                        Platform As A Service




                             Infrastructure
                             As A Service




   18


Thursday, April 5, 12
Cloud Stack - Neutral




                                Software
                               As A Service


                           Platform As A Service



                        Infrastructure As A Service




   19


Thursday, April 5, 12
Cloud Stack - History

   § What does cloud mean, 4 main angles
        • Software 1994 Netscape
        • Infrastructure 2002 Amazon AWS
        • Platform 2008 Google
        • Development now!




                                           § Industrialization of hardware and
                                            software infrastructure
                                            like electricity beginning of 20th century



    § But software development itself is moving towards craftmanship

   20


Thursday, April 5, 12
Cloud started at Consumer websites solving their needs
   • Google, Amazon, Yahoo, Facebook, Twitter
   • Large Data Sets
   • Storage Capacity growing faster than Moore’s Law
   • Fast Networks
   • Horizontal -> Vertical scalability
   • Open Source Software
   • Virtualization
   • Cloud is a productization of these infrastructures
        • Public Clouds Services: Google, Amazon
        • Open Source Software: Hadoop, Eucalyptus, Ubuntu, Cloud Foundry


Thursday, April 5, 12
Infrastructure



     22

Thursday, April 5, 12
IaaS/Virtualization getting mainstream

   §   AWS, Joyent, Rackspace,...
   §   Open Source projects: OpenStack, DeltaCloud, Eucalyptus
   §   Automation: Chef, Juju
   §   Standardization? DMTF
   §   Inside the Firewall, Virtualization: VMware, Microsoft, Xen, KVM
   §   50% of workloads are virtualized
   §   Easy to provision, manage instance...BUT
   §   Still need to manage backups, software stacks, monitor, upgrades




   23


Thursday, April 5, 12
With Infrastructure, you still need to build your own platform

   § Need to build a distributed platform on top of you infrastructure
   § Story of the AWS meltdown from last summer
        • http://blog.reddit.com/2011/03/why-reddit-was-down-for-6-of-last-24.html
        • http://www.readwriteweb.com/cloud/2010/12/chaos-monkey-how-netflix-
         uses.php
        • http://news.ycombinator.com/item?id=2477296
        • http://stu.mp/2011/04/the-cloud-is-not-a-silver-bullet.html
   § Twilio, Smugmug, SimpleGeo survived it because they built their
        own distributed platform on top of IaaS
   § Enterprise customers want to consider Infrastructure like CDNs
        • Multi Cloud usage
        • Based on Open Source de facto standards, or full standards whenever that
         happens




   24


Thursday, April 5, 12
Platforms



     25

Thursday, April 5, 12
Platforms


    § Raise the Unit of currency to be application & services instead of
         infrastructure
    § Google App Engine, Cloud Foundry, Joyent, Heroku, Stax
         (Cloudbees), Amazon elastic beanstalk, Microsoft Azure, AppFog
    §   Single or a few languages, services
    §   Start of Multi language Polyglot platforms
    §   Enabler for Agile Developers -> Create Business value faster
    §   Lack of standards: risk, vendor lock-in
    §   Enterprise needs:
         • Control, customizability
         • Private/Hybrid Cloud
         • Avoid lock-in


   26


Thursday, April 5, 12
Agile Development Processes




Thursday, April 5, 12
Agility as a survival skill

   § Consumer software is becoming like fashion
        • Phone apps, social apps, short lifetime, fast lifecycles
        • Ab testing
   § Clay shirky situational apps
   § Kent Beck, Usenix 2011 Talk, “Software G-Forces”
        change in software process when frequency grows
   § Cloud Platforms enables an Agile culture, driver for innovation
        • Scalability is built in the platforms
        • Can iterate faster
        • Focus on design
   § Cloud Platforms lets developers focus on driving business value




   28


Thursday, April 5, 12
Main Risk: Lock-In




                        Welcome to the hotel california
                        Such a lovely place
                        Such a lovely face
                        Plenty of room at the hotel california
                        Any time of year, you can find it here

                        Last thing I remember, I was
                        Running for the door
                        I had to find the passage back
                        To the place I was before
                        ’relax,’ said the night man,
                        We are programmed to receive.
                        You can checkout any time you like,
                        But you can never leave!




   29


Thursday, April 5, 12
Cloud Foundry: The Open PaaS

        • Open Source: Apache 2 Licensed
        • multi language/frameworks
        • multi services
        • multi cloud




                                              Ap




                                                                                          ce
                                                  pli
                            vFabric




                                                                                         rfa
                           Postgres                                                            Private
                                                     ca




                                                                                        nte
                                        Data
                                       Services         tio                                    Clouds




                                                                                      rI
                                                            n




                                                                                     e
                                                               Se
                                                                                          Public




                                                                                 vid
                                vFabric
                                RabbitMQTM                         rvi
                                                                                          Cloud




                                                                                 ro
                                             Msg Services
                                                                       ce




                                                                             dP
                                                                                      Micro

                                                                            ou
                                                             Other
                                                                                      Cloud
                                                                            Cl
                                                            Services




   30


Thursday, April 5, 12
Open Source



     31

Thursday, April 5, 12
Open Source Advantage

   § http://code.google.com/p/googleappengine/issues/detail?id=13




    • https://github.com/cloudfoundry/vcap/pull/25




   32


Thursday, April 5, 12
Multi Cloud



     33

Thursday, April 5, 12
CloudFoundry.COM

                                   Cloud Foundry

               Runtimes & Frameworks

               Services

                                  vCenter / vSphere




               Infrastructure




     34

Thursday, April 5, 12
Cloud Foundry.ORG

                                         Cloud Foundry


                        The Source Code to Compile & Build Cloud Foundry



                                        vCenter / vSphere

               Download              Setup          Setup Scripts   Deploy
                   Code           Environment                       Behind
                                                                    Firewall




     35

Thursday, April 5, 12
Micro Cloud Foundry




                           Micro




     36

Thursday, April 5, 12
What is a Micro Cloud?




                                              Or




                        Entire Cloud Running inside of a single VM


     37

Thursday, April 5, 12
Micro Cloud Foundry…           (BETA)
     A pre-built Micro (Single VM) version of Cloud Foundry…




               You need a Cloud Foundry.com Account to use Micro Cloud Foundry

          Signup @ http://cloudfoundry.com/micro


     38

Thursday, April 5, 12
Micro Cloud Foundry…           (BETA)
     A pre-built Micro (Single VM) version of Cloud Foundry…




                                         Micro




               You need a Cloud Foundry.com Account to use Micro Cloud Foundry

          Signup @ http://cloudfoundry.com/micro


     38

Thursday, April 5, 12
What is in Micro Cloud Foundry?


                                                                               .COM




                                Dynamic Updating DNS


                          App Instances                             Services




                        Open source Platform as a Service project




                                                                    10.04



     39

Thursday, April 5, 12
Other Cloud Foundry powered PaaS




     Private PaaS
     Added Python and Perl




     Public PaaS
     Added PHP




     Tier3 and Uhuru recently added .NET support


   40


Thursday, April 5, 12
Development
                         LifeCycle

     41

Thursday, April 5, 12
Traditional App Deploy and Request/Response




                                            Web




                                                   Request/Allocate
               Web                                 Build/Setup
                                                   Install/Configure
                                            App

                                                   Deploy/Test
                App
                                                   Scale?
                                                   Upgrade?
                 DB
                                            DB
                                                   Update?




Thursday, April 5, 12
How Apps are Deployed on Cloud Foundry




               Web
                                                         Web
                                                         App


                        “vmc push MyApp”                 DB




               App
               Web

                             Scale?        “vmc instances MyApp 5”
                 DB          Upgrade?      “vmc map MyApp MyApp2”
                             Update?       “vmc update MyApp”



Thursday, April 5, 12
How Apps are Deployed on Cloud Foundry




               Web
                                                         Web
                                                         App


                        “vmc push MyApp”                 DB




               App
               Web

                             Scale?        “vmc instances MyApp 5”
                 DB          Upgrade?      “vmc map MyApp MyApp2”
                             Update?       “vmc update MyApp”



Thursday, April 5, 12
How Apps are Accessed on Cloud Foundry

                        Request                      Web Interface
         Load
       Balancing
                                       Response
          and
        Routing




            Web

            App

   App Instance


                                  DB
                                                  “vmc push MyApp”
                             Service



Thursday, April 5, 12
How Apps are Scaled on Cloud Foundry

                        Request
            Load
         Load
          Load
        Balancer(s)
       Balancing                         Response
       Balancer(s)
          and
        Routing

                          App Instances

            Web         Web            Web

            App         App            App




                                  DB
                                                “vmc instances MyApp 3”
                              Service



Thursday, April 5, 12
How Apps are Updated on Cloud Foundry


         Previous          Instance   Updated     New
         Version           Stopped     Code      Version
              Web              Web     Web        Web

              App              App      App        App




                          DB                                 DB

                        Service                            Service


                            “vmc update MyApp”



Thursday, April 5, 12
Services



     47

Thursday, April 5, 12
Current Services Available on Cloud Foundry




     48

Thursday, April 5, 12
Service Creation and Binding

VCAP_SERVICES:
{"redis-2.2":[{"name":"redis_sample","label":"redis-2.2","plan":"free",
"tags":["redis","redis-2.2","key-value","nosql"],
"credentials":
{"hostname":"172.30.48.40",
"host":"172.30.48.40",
"port":5023,
"password":"8e9a901f-987d-4544-9a9e-ab0c143b5142",
"name":"de82c4bb-bd08-46c0-a850-af6534f71ca3"}
}],
"mongodb-1.8":[{"name":"mongodb-e7d29","label":"mongodb-1.8","plan":"free","tags”:
………………….



      49

Thursday, April 5, 12
Service Creation and Binding




                               App Instance




     50

Thursday, April 5, 12
Service Creation and Binding




                               App Instance   Redis Service




     50

Thursday, April 5, 12
Service Creation and Binding




                               App Instance   Redis Service




     50

Thursday, April 5, 12
Service Creation and Binding




                                  App Instance   Redis Service




                        MongoDB
                        Service




     50

Thursday, April 5, 12
How it works



     51

Thursday, April 5, 12
Logical View



                                                                 Browser
          VMC client          STS plugin
                                                             (user app access)



                                            Routers


                CloudControllers            App        App


                                                                 HealthManager
                        Services               DEA Pool



                                           Messaging


   52


Thursday, April 5, 12
Architecture




   53


Thursday, April 5, 12
Register today

               http://cloudfoundry.com/signup
               Use Promo Code    CFOpenTour2012
               To avoid approval queue waiting time




     54

Thursday, April 5, 12
Cloud for Developers: the true path is PaaS!




   55


Thursday, April 5, 12
sample app
                         polyglot in action
                         by Mark Lucovsky




    56                      developer perspective v2.0

Thursday, April 5, 12
57                  developer perspective v2.0

Thursday, April 5, 12
stac2: load generation system
 - jQuery, jQuery UI                   json-p            stac2             - 2 x 128mb
 - haml templates                                      frontend            - ruby 1.8.7, sinatra
 - 100% JS based UI
                                   smtp       http                      json

                              email                                        - 16 x 128mb*
                                                      api server           - node.JS, 0.6.8
                             reports

                                           rpush                        redis api

                                                          redis

                                        blpop          redis api          blpop
               - 96 x 128mb                                                         - 16 x 128mb*
               - ruby 1.8.7, sinatra   vmc worker                    http worker    - node.JS, 0.6.8
                                                                     * - api server and http worker
                                                                     share the same node.JS
                                                                     process/instance
    58                                  developer perspective v2.0

Thursday, April 5, 12
deployment instructions




                        $ cd ~/stac2
                        $ vmc push

    59                      developer perspective v2.0

Thursday, April 5, 12
how is this possible?
  $	
  cd	
  ~/stac2;	
  cat	
  manifest.yml
  applications:
  	
  	
  ./nabh:
  	
  	
  	
  	
  instances:	
  16
  	
  	
  	
  	
  mem:	
  128M
  	
  	
  	
  	
  runtime:	
  node06
  	
  	
  	
  	
  url:	
  ${name}.${target-­‐base}
  	
  	
  	
  	
  services:
  	
  	
  	
  	
  	
  	
  nab-­‐redis:
  	
  	
  	
  	
  	
  	
  	
  	
  type:	
  :redis
  ./nabv:
  	
  	
  	
  	
  instances:	
  96
  	
  	
  	
  	
  mem:	
  128M	
  
  	
  	
  	
  	
  runtime:	
  ruby18
  	
  	
  	
  	
  url:	
  ${name}.${target-­‐base}
  	
  	
  	
  	
  services:
  	
  	
  	
  	
  	
  	
  nab-­‐redis:
  	
  	
  	
  	
  	
  	
  	
  	
  type:	
  :redis
  ./stac2:
  	
  	
  	
  	
  instances:	
  2
  	
  	
  	
  	
  mem:	
  128M	
  
  	
  	
  	
  	
  runtime:	
  ruby18
  	
  	
  	
  	
  url:	
  ${name}.${target-­‐base}

    60                                      developer perspective v2.0

Thursday, April 5, 12
design tidbits
  •      producer/consumer pattern using rpush/blpop
  •      node.JS: multi-server and high performance async i/o
  •      caldecott – aka vmc tunnel for debugging
  •      redis sorted sets for stats collection
  •      redis expiring keys for rate calculation




    61                        developer perspective v2.0

Thursday, April 5, 12
producer/consumer
  •      core design pattern
  •      found at the heart of many complex apps
  classic mode:
  - thread pools
  - semaphore/mutex, completion ports, etc.
  - scalability limited to visibility of the work queue



      producer          work   work queue             work       consumer



  cloud foundry mode:
  - instance pools
  - redis rpush/blpop, rabbit queues, etc.
  - full horizontal scalability, cloud scale


    62                              developer perspective v2.0

Thursday, April 5, 12
producer/consumer: code
  //	
  producer
  function	
  commit_item(queue,	
  item)	
  {
  	
  	
  //	
  push	
  the	
  work	
  item	
  onto	
  the	
  proper	
  queue	
  
  	
  	
  redis.rpush(queue,	
  item,	
  function(err,	
  data)	
  {

  	
  	
  	
  	
  //	
  optionally	
  trim	
  the	
  queue,	
  throwing	
  away
  	
  	
  	
  	
  //	
  data	
  as	
  needed	
  to	
  ensure	
  the	
  queue	
  does
  	
  	
  	
  	
  //	
  not	
  grow	
  unbounded
  	
  	
  	
  	
  if	
  (!err	
  &&	
  data	
  >	
  queueTrim)	
  {
  	
  	
  	
  	
  	
  	
  redis.ltrim(queue,	
  0,	
  queueTrim-­‐1);
  	
  	
  	
  	
  }	
  	
  	
  
  	
  	
  });
  }
  //	
  consumer
  function	
  worker()	
  {
  	
  	
  //	
  blocking	
  wait	
  for	
  workitems
  	
  	
  blpop_redis.blpop(queue,	
  0,	
  function(err,	
  data)	
  {
  	
  	
  	
  	
  
  	
  	
  	
  	
  //	
  data[0]	
  ==	
  queue,	
  data[1]	
  ==	
  item
  	
  	
  	
  	
  if	
  (!err)	
  {
  	
  	
  	
  	
  	
  	
  doWork(data[1]);
  	
  	
  	
  	
  }
  	
  	
  	
  	
  process.nextTick(worker);	
  	
  	
  
  	
  	
  });
     63                                               developer perspective v2.0

Thursday, April 5, 12
node.JS multi-server: http API server
  //	
  the	
  api	
  server	
  handles	
  two	
  key	
  load	
  generation	
  apis
  //	
  /http	
  –	
  for	
  http	
  load,	
  /vmc	
  for	
  Cloud	
  Foundry	
  API	
  load
  var	
  routes	
  =	
  {“/http”:	
  httpCmd,	
  “/vmc”:	
  vmcCmd}

  //	
  http	
  api	
  server	
  booted	
  by	
  app.js,	
  passing	
  redis	
  client
  //	
  and	
  Cloud	
  Foundry	
  instance	
  
  function	
  boot(redis_client,	
  cfinstance)	
  {
  	
  	
  var	
  redis	
  =	
  redis_client;
  	
  	
  
  	
  	
  function	
  onRequest(request,	
  response)	
  {
  	
  	
  	
  	
  var	
  u	
  =	
  url.parse(request.url);
  	
  	
  	
  	
  var	
  path	
  =	
  u.pathname;
  	
  	
  	
  	
  if	
  (routes[path]	
  &&	
  typeof	
  routes[path]	
  ==	
  ‘function’)	
  {
  	
  	
  	
  	
  	
  	
  routes[path](request,	
  response);
  	
  	
  	
  	
  }	
  else	
  {
  	
  	
  	
  	
  	
  	
  response.writeHead(404,	
  {‘Content-­‐Type’:	
  ‘text/plain’});
  	
  	
  	
  	
  	
  	
  response.write(‘404	
  Not	
  Found’);
  	
  	
  	
  	
  	
  	
  response.end();
  	
  	
  	
  	
  }
  	
  	
  }
  	
  	
  server	
  =	
  http.createServer(onRequest).listen(cfinstance[‘port’]);
  }


    64                                       developer perspective v2.0

Thursday, April 5, 12
node.JS multi-server: blpop server
  var	
  blpop_redis	
  =	
  null;
  var	
  status_redis	
  =	
  null;
  var	
  cfinstance	
  =	
  null;

  //	
  blpop	
  server	
  handles	
  work	
  requests	
  for	
  http	
  traffic
  //	
  that	
  are	
  placed	
  on	
  the	
  queue	
  by	
  the	
  http	
  API	
  server
  //	
  another	
  blpop	
  server	
  sits	
  in	
  the	
  ruby/sinatra	
  VMC	
  server
  function	
  boot(r1,	
  r2,	
  cfi)	
  {
  	
  	
  //	
  multiple	
  redis	
  clients	
  due	
  to	
  concurrency	
  constraints
  	
  	
  blpop_redis	
  =	
  r1;
  	
  	
  status_redis	
  =	
  r2;
  	
  	
  cfinstance	
  =	
  cfi;
  	
  	
  worker();
  }

  //	
  this	
  is	
  the	
  blpop	
  server	
  loop
  function	
  worker()	
  {
  	
  	
  blpop_redis.blpop(queue,	
  0,	
  function(err,	
  data)	
  {
  	
  	
  	
  	
  if	
  (!err)	
  {
  	
  	
  	
  	
  	
  	
  doWork(data[1]);
  	
  	
  	
  	
  }
  	
  	
  	
  	
  process.nextTick(worker);	
  	
  	
  
  	
  	
  });
  }
    65                                    developer perspective v2.0

Thursday, April 5, 12
caldecott: aka vmc tunnel
  #	
  create	
  a	
  caldecott	
  tunnel	
  to	
  the	
  redis	
  server
  $	
  vmc	
  tunnel	
  nab-­‐redis	
  redis-­‐cli
  Binding	
  Service	
  [nab-­‐redis]:	
  OK
  …
  Launching	
  'redis-­‐cli	
  -­‐h	
  localhost	
  -­‐p	
  10000	
  -­‐a	
  ...’
  	
  

  #	
  enumerate	
  the	
  keys	
  used	
  by	
  stac2
  redis>	
  keys	
  vmc::staging::*
  1)	
  “vmc::staging::actions::time_50”
  2)	
  “vmc::staging::active_workers”
  …

  #	
  enumerate	
  actions	
  that	
  took	
  less	
  that	
  50ms
  redis>	
  zrange	
  vmc::staging::actions::time_50	
  0	
  -­‐1	
  withscores
  1)	
  “delete_app”
  2)	
  “1”
  3)	
  “login”
  4)	
  “58676”
  5)	
  “info”
  6)	
  “80390”

  #	
  see	
  how	
  many	
  work	
  items	
  we	
  dumped	
  due	
  to	
  concurrency	
  constraint
  redis>	
  get	
  vmc::staging::wastegate
  “7829”
   66                                           developer perspective v2.0

Thursday, April 5, 12
redis sorted sets for stats collection
  #	
  log	
  action	
  into	
  a	
  sorted	
  set,	
  net	
  result	
  is	
  set	
  contains
  #	
  actions	
  and	
  the	
  number	
  of	
  times	
  the	
  action	
  was	
  executed
  #	
  count	
  total	
  action	
  count,	
  and	
  also	
  per	
  elapsed	
  time	
  bucket
  def	
  logAction(action,	
  elapsedTimeBucket)	
  
  	
  	
  #	
  actionKey	
  is	
  the	
  set	
  for	
  all	
  counts
  	
  	
  #	
  etKey	
  is	
  the	
  set	
  for	
  a	
  particular	
  time	
  bucket	
  e.g.,	
  _1s,	
  _50ms
  	
  	
  actionKey	
  =	
  “vmc::#{@cloud}::actions::action_set”
  	
  	
  etKey	
  =	
  “vmc::#{@cloud}::actions::times#{elapsedTimeBucket}”
  	
  	
  @redis.zincrby	
  actionKey,	
  1,	
  action
  	
  	
  @redis.zincrby	
  etKey,	
  1,	
  action
  end

  #	
  enumerate	
  actions	
  and	
  their	
  associated	
  count
  redis>	
  zrange	
  vmc::staging::actions::action_set	
  0	
  -­‐1	
  withscores
  1)	
  “login”
  2)	
  “212092”
  3)	
  “info”
  4)	
  “212093”

  #	
  enumerate	
  actions	
  that	
  took	
  between	
  400ms	
  and	
  1s
  redis>	
  zrange	
  vmc::staging::actions::time_400_1s	
  0	
  -­‐1	
  withscores
  1)	
  “create-­‐app”
  2)	
  “14”
  3)	
  “bind-­‐service”
  4)	
  “75”
   67                                     developer perspective v2.0

Thursday, April 5, 12
redis incrby and expire for rate calcs
  #	
  to	
  calculate	
  rates	
  (e.g.,	
  4,000	
  requests	
  per	
  second)
  #	
  we	
  use	
  plain	
  old	
  redis.incrby.	
  the	
  trick	
  is	
  that	
  the	
  
  #	
  key	
  contains	
  the	
  current	
  1sec	
  timestamp	
  as	
  it’s	
  suffix	
  value
  #	
  all	
  activity	
  that	
  happens	
  within	
  this	
  1s	
  period	
  accumulates
  #	
  in	
  that	
  key.	
  by	
  setting	
  an	
  expire	
  on	
  the	
  key,	
  the	
  key	
  is	
  
  #	
  automatically	
  deleted	
  10s	
  after	
  last	
  write
  def	
  logActionRate(cloud)
  	
  	
  tv	
  =	
  Time.now.tv_sec
  	
  	
  one_s_key	
  =	
  "vmc::#{cloud}::rate_1s::#{tv}"

  	
  	
  #	
  increment	
  the	
  bucket	
  and	
  set	
  expires,	
  key
  	
  	
  #	
  will	
  eventually	
  expires	
  Ns	
  after	
  the	
  last	
  write
  	
  	
  @redis.incrby	
  one_s_key,	
  1
  	
  	
  @redis.expire	
  one_s_key,	
  10
  end

  #	
  return	
  current	
  rate	
  by	
  looking	
  at	
  the	
  bucket	
  for	
  the	
  previous	
  
  #	
  one	
  second	
  period.	
  by	
  looking	
  further	
  back	
  and	
  averaging,	
  we	
  
  #	
  can	
  smooth	
  the	
  rate	
  calc
  def	
  actionRate(cloud)
  	
  	
  tv	
  =	
  Time.now.tv_sec	
  -­‐	
  1
  	
  	
  one_s_key	
  =	
  "vmc::#{cloud}::rate_1s::#{tv}"
  	
  	
  @redis.get	
  one_s_key
  end
    68                                        developer perspective v2.0

Thursday, April 5, 12
stac2 demo -or- screencast




    69                  developer perspective v2.0

Thursday, April 5, 12
stac2 demo -or- screencast




    69                  developer perspective v2.0

Thursday, April 5, 12
Lessons for
                        Developers

     70

Thursday, April 5, 12
Predictions


    § Software is becoming like fashion, design rules
    § Welcome to Babel, use the best tool for the job, embrace multiple
        language & heterogeneity
    § Our jobs will change, build yourself out of your current job
    § Sysadmin jobs will morph, there will be less of them
    § Many opportunities open when you embrace change




   71


Thursday, April 5, 12
Things to Forget

   §   First normal form
   §   Waterfall model
   §   Single server deployment
   §   Single language skill
   §   Build everything from scratch
   §   Build custom infrastructure




   72


Thursday, April 5, 12
Things to Learn

        • Agile, API Design
        • UI Design, Javacript, HTML5, CSS3
        • A/B Testing
        • Open Source, Open Standards
        • Architecture, Distributed Computing (CAP theorem, 8 fallacies)
        • Cloud Platforms and APIs
        • Multiple types of languages (imperative, object, functional, logic)
        • Ability to encapsulate domain knowledge in a DSL
        • Build on the shoulders of giants: reuse, rest APIs
        • Pick your battles, choose what you need to build yourself to add value
        • Learn to live in a box (embrace platform limitations) to think outside the box
        • Use an App Store for distribution




   73


Thursday, April 5, 12
Be your own bitch



        “Don’t be a Google Bitch,
        don’t be a Facebook Bitch,
        and Don’t be a Twitter
        Bitch. Be your own Bitch.”
        Fred Wilson
        http://techcrunch.com/2011/05/23/fred-wilson-be-your-own-bitch/




   74


Thursday, April 5, 12
Such stuff as dreams are made on


    § Like a kid on a candy store: there's never been a better time to be a
        software developer!
    § Welcome to the Cloud: embrace change and reinvent yourselves
    § “The future is already there, not evenly distributed” Gibson
    § We Developers, invent the future today




   75


Thursday, April 5, 12
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
     We’re hiring: www.cloudfoundry.com/jobs



     76

Thursday, April 5, 12
Questions




     77

Thursday, April 5, 12
                        ?
Thank You!
                 t @CloudFoundry


                 t @chanezon

                        Website   : www.cloudfoundry.com
                        Blog      : blog.cloudfoundry.com
                        Forum     : support.cloudfoundry.com

Thursday, April 5, 12
Books / Articles


    §   Nick Carr, The Big Switch
    §   Eric Raymond, The Art of Unix Programming
    §   Weinberg, Psychology of Computer Programming
    §   Wes python book
    §   Mark html5 book
    §   Kent Beck XP
    §   Hunt, Thomas, The Pragmatic Programmer
    §   Ade Oshineye, Apprenticeship Patterns
    §   Matt Cutt's Ignite Talk IO 2011, Trying different things
    §   Josh Bloch talk about api design
    §   Larry and Sergey, Anatomy of a Search Engine
    §   Rob Pike, The Practice of Programming

   79


Thursday, April 5, 12
Papers / Talks


    §   Simon Wardley, Oscon 09 “Cloud - Why IT Matters”
    §   Tim O’Reilly article on internet os
    §   Peter Deutsch’s 8 Fallacies of Distributed Computing
    §   Brewer’s CAP Theorem
    §   Gregor Hohpe’s Starbucks Does Not Use Two-Phase Commit
    §   Stuff I tag http://www.delicious.com/chanezon/
    §   More specifically http://www.delicious.com/chanezon/cloudfoundry
    §   My previous Talks http://www.slideshare.net/chanezon
    §   My list of favorite books
         http://www.chanezon.com/pat/soft_books.html




   80


Thursday, April 5, 12
Acknowledgement

   § Drawings from my daughters Eliette
   § Slides from Dave McCrory, Derek Collison, Duke Leto
   § Haiku from Addiss, Stephen; Yamamoto, Fumiko; Yamamoto,
        Fumiko Y.; Yamamoto, Akira Y. (2011-06-22). Haiku: An Anthology of
        Japanese Poems (Shambhala Library)
   § Painting Hiroshige, Sengai




   81


Thursday, April 5, 12

Weitere ähnliche Inhalte

Was ist angesagt?

Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015
Jonas Rosland
 
Why Docker
Why DockerWhy Docker
Why Docker
dotCloud
 

Was ist angesagt? (20)

Crash Course in Open Source Cloud Computing
Crash Course in Open Source Cloud Computing Crash Course in Open Source Cloud Computing
Crash Course in Open Source Cloud Computing
 
Devoxx 2016 - Docker Nuts and Bolts
Devoxx 2016 - Docker Nuts and BoltsDevoxx 2016 - Docker Nuts and Bolts
Devoxx 2016 - Docker Nuts and Bolts
 
Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015
 
Containers vs. VMs: It's All About the Apps!
Containers vs. VMs: It's All About the Apps!Containers vs. VMs: It's All About the Apps!
Containers vs. VMs: It's All About the Apps!
 
Cloud Foundry Overview
Cloud Foundry OverviewCloud Foundry Overview
Cloud Foundry Overview
 
Docker Container As A Service - March 2016
Docker Container As A Service - March 2016Docker Container As A Service - March 2016
Docker Container As A Service - March 2016
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Why Docker
Why DockerWhy Docker
Why Docker
 
Docker for any type of workload and any IT Infrastructure
Docker for any type of workload and any IT InfrastructureDocker for any type of workload and any IT Infrastructure
Docker for any type of workload and any IT Infrastructure
 
Docker Platform and Ecosystem
Docker Platform and EcosystemDocker Platform and Ecosystem
Docker Platform and Ecosystem
 
OSCON 2014 - Crash Course in Open Source Cloud Computing
OSCON 2014 -  Crash Course in Open Source Cloud ComputingOSCON 2014 -  Crash Course in Open Source Cloud Computing
OSCON 2014 - Crash Course in Open Source Cloud Computing
 
A Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using DockerA Shift from Monolith to Microservice using Docker
A Shift from Monolith to Microservice using Docker
 
Quickly build and deploy a scalable OpenStack Swift application using IBM Blu...
Quickly build and deploy a scalable OpenStack Swift application using IBM Blu...Quickly build and deploy a scalable OpenStack Swift application using IBM Blu...
Quickly build and deploy a scalable OpenStack Swift application using IBM Blu...
 
DockerCon 16 General Session Day 2
DockerCon 16 General Session Day 2 DockerCon 16 General Session Day 2
DockerCon 16 General Session Day 2
 
Docker Overview - Rise of the Containers
Docker Overview - Rise of the ContainersDocker Overview - Rise of the Containers
Docker Overview - Rise of the Containers
 
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
 
VMware@Night: Container & Virtualisierung
VMware@Night: Container & VirtualisierungVMware@Night: Container & Virtualisierung
VMware@Night: Container & Virtualisierung
 
Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016Docker Container As A Service - Mix-IT 2016
Docker Container As A Service - Mix-IT 2016
 
Docker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containersDocker - A high level introduction to dockers and containers
Docker - A high level introduction to dockers and containers
 

Ähnlich wie Cloud Foundry the Open PaaS - OpenTour Austin Keynote

Cloud Foundry OpenTour Kiev Keynote
Cloud Foundry OpenTour Kiev KeynoteCloud Foundry OpenTour Kiev Keynote
Cloud Foundry OpenTour Kiev Keynote
Patrick Chanezon
 
Cloud Foundry and Ubuntu - 2012
Cloud Foundry and Ubuntu - 2012Cloud Foundry and Ubuntu - 2012
Cloud Foundry and Ubuntu - 2012
Patrick Chanezon
 
Cloud Foundry Japan Community Meetup
Cloud Foundry Japan Community MeetupCloud Foundry Japan Community Meetup
Cloud Foundry Japan Community Meetup
Patrick Chanezon
 
Portrait of the Developer As "The Artist" - English Version
Portrait of the Developer As "The Artist" - English VersionPortrait of the Developer As "The Artist" - English Version
Portrait of the Developer As "The Artist" - English Version
Patrick Chanezon
 
Ruby conf2010 OpenPaaS
Ruby conf2010 OpenPaaSRuby conf2010 OpenPaaS
Ruby conf2010 OpenPaaS
Derek Collison
 
Portrait of the Developer as the Artist - OpenTour Sofia
Portrait of the Developer as the Artist - OpenTour SofiaPortrait of the Developer as the Artist - OpenTour Sofia
Portrait of the Developer as the Artist - OpenTour Sofia
Patrick Chanezon
 

Ähnlich wie Cloud Foundry the Open PaaS - OpenTour Austin Keynote (20)

Cloud Foundry OpenTour Kiev Keynote
Cloud Foundry OpenTour Kiev KeynoteCloud Foundry OpenTour Kiev Keynote
Cloud Foundry OpenTour Kiev Keynote
 
Cloud Foundry and Ubuntu - 2012
Cloud Foundry and Ubuntu - 2012Cloud Foundry and Ubuntu - 2012
Cloud Foundry and Ubuntu - 2012
 
Cloud Foundry, the Open Platform As A Service
Cloud Foundry, the Open Platform As A ServiceCloud Foundry, the Open Platform As A Service
Cloud Foundry, the Open Platform As A Service
 
Cloud Foundry Japan Community Meetup
Cloud Foundry Japan Community MeetupCloud Foundry Japan Community Meetup
Cloud Foundry Japan Community Meetup
 
Japan Developer Summit (en) - Cloud Foundry, the Open Platform As A Service
Japan Developer Summit (en) - Cloud Foundry, the Open Platform As A ServiceJapan Developer Summit (en) - Cloud Foundry, the Open Platform As A Service
Japan Developer Summit (en) - Cloud Foundry, the Open Platform As A Service
 
UDS 2011 - Cloud Foundry and Ubuntu, a marriage made in heaven
UDS 2011 - Cloud Foundry and Ubuntu, a marriage made in heavenUDS 2011 - Cloud Foundry and Ubuntu, a marriage made in heaven
UDS 2011 - Cloud Foundry and Ubuntu, a marriage made in heaven
 
Portrait of the Developer As "The Artist" - English Version
Portrait of the Developer As "The Artist" - English VersionPortrait of the Developer As "The Artist" - English Version
Portrait of the Developer As "The Artist" - English Version
 
Portrait of the developer as The Artist - SpringOne India 2012
Portrait of the developer as The Artist - SpringOne India 2012Portrait of the developer as The Artist - SpringOne India 2012
Portrait of the developer as The Artist - SpringOne India 2012
 
Cloud Foundry, Spring and Vaadin
Cloud Foundry, Spring and VaadinCloud Foundry, Spring and Vaadin
Cloud Foundry, Spring and Vaadin
 
NATO IST Symposium 2013
NATO IST Symposium 2013NATO IST Symposium 2013
NATO IST Symposium 2013
 
Interop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A ServiceInterop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A Service
 
RubyWorld 2011
RubyWorld 2011RubyWorld 2011
RubyWorld 2011
 
Ruby conf2010 OpenPaaS
Ruby conf2010 OpenPaaSRuby conf2010 OpenPaaS
Ruby conf2010 OpenPaaS
 
Portrait of the Developer as the Artist - OpenTour Sofia
Portrait of the Developer as the Artist - OpenTour SofiaPortrait of the Developer as the Artist - OpenTour Sofia
Portrait of the Developer as the Artist - OpenTour Sofia
 
cloud-application-architectures-oreilly-media.pdf
cloud-application-architectures-oreilly-media.pdfcloud-application-architectures-oreilly-media.pdf
cloud-application-architectures-oreilly-media.pdf
 
Netflix Architecture Tutorial at Gluecon
Netflix Architecture Tutorial at GlueconNetflix Architecture Tutorial at Gluecon
Netflix Architecture Tutorial at Gluecon
 
Tackling complexity in giant systems: approaches from several cloud providers
Tackling complexity in giant systems: approaches from several cloud providersTackling complexity in giant systems: approaches from several cloud providers
Tackling complexity in giant systems: approaches from several cloud providers
 
Cloud development and career path
Cloud development and career pathCloud development and career path
Cloud development and career path
 
Where The Cloud Things Are
Where The Cloud Things AreWhere The Cloud Things Are
Where The Cloud Things Are
 
Yow Conference Dec 2013 Netflix Workshop Slides with Notes
Yow Conference Dec 2013 Netflix Workshop Slides with NotesYow Conference Dec 2013 Netflix Workshop Slides with Notes
Yow Conference Dec 2013 Netflix Workshop Slides with Notes
 

Mehr von Patrick Chanezon

Mehr von Patrick Chanezon (20)

KubeCon 2019 - Scaling your cluster (both ways)
KubeCon 2019 - Scaling your cluster (both ways)KubeCon 2019 - Scaling your cluster (both ways)
KubeCon 2019 - Scaling your cluster (both ways)
 
KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...
KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...
KubeCon China 2019 - Building Apps with Containers, Functions and Managed Ser...
 
Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services
Dockercon 2019 Developing Apps with Containers, Functions and Cloud ServicesDockercon 2019 Developing Apps with Containers, Functions and Cloud Services
Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services
 
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesGIDS 2019: Developing Apps with Containers, Functions and Cloud Services
GIDS 2019: Developing Apps with Containers, Functions and Cloud Services
 
Docker Enterprise Workshop - Intro
Docker Enterprise Workshop - IntroDocker Enterprise Workshop - Intro
Docker Enterprise Workshop - Intro
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - Technical
 
The Tao of Docker - ITES 2018
The Tao of Docker - ITES 2018The Tao of Docker - ITES 2018
The Tao of Docker - ITES 2018
 
Moby KubeCon 2017
Moby KubeCon 2017Moby KubeCon 2017
Moby KubeCon 2017
 
Microsoft Techsummit Zurich Docker and Microsoft
Microsoft Techsummit Zurich Docker and MicrosoftMicrosoft Techsummit Zurich Docker and Microsoft
Microsoft Techsummit Zurich Docker and Microsoft
 
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
Develop and deploy Kubernetes  applications with Docker - IBM Index 2018Develop and deploy Kubernetes  applications with Docker - IBM Index 2018
Develop and deploy Kubernetes applications with Docker - IBM Index 2018
 
Docker Meetup Feb 2018 Develop and deploy Kubernetes Apps with Docker
Docker Meetup Feb 2018 Develop and deploy Kubernetes Apps with DockerDocker Meetup Feb 2018 Develop and deploy Kubernetes Apps with Docker
Docker Meetup Feb 2018 Develop and deploy Kubernetes Apps with Docker
 
DockerCon EU 2017 Recap
DockerCon EU 2017 RecapDockerCon EU 2017 Recap
DockerCon EU 2017 Recap
 
Docker Innovation Culture
Docker Innovation CultureDocker Innovation Culture
Docker Innovation Culture
 
The Tao of Docker - Devfest Nantes 2017
The Tao of Docker - Devfest Nantes 2017The Tao of Docker - Devfest Nantes 2017
The Tao of Docker - Devfest Nantes 2017
 
Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...
Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...
Docker 之道 Modernize Traditional Applications with 无为 Create New Cloud Native ...
 
Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017
 
Moby Introduction - June 2017
Moby Introduction - June 2017Moby Introduction - June 2017
Moby Introduction - June 2017
 
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logiciels
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logicielsDocker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logiciels
Docker Cap Gemini CloudXperience 2017 - la revolution des conteneurs logiciels
 
Weave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapWeave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 Recap
 
Oscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby projectOscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby project
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
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
vu2urc
 

Kürzlich hochgeladen (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 

Cloud Foundry the Open PaaS - OpenTour Austin Keynote

  • 1. Cloud Foundry The Open Platform as a Service Patrick Chanezon Senior Director Developer Relations chanezonp@vmware.com http://twitter.com/chanezon Cloud Foundry OpenTour, Austin, April 2012 Thursday, April 5, 12
  • 2. P@ in a nutshell • French, based in San Francisco • Senior Director, Developer Relations,VMware • Software Plumber, API guy, mix of Enterprise and Consumer • 18 years writing software, backend guy with a taste for javascript • 2 y Accenture (Notes guru), 3 y Netscape/AOL (Servers, Portals), 5 y Sun (ecommerce, blogs, Portals, feeds, open source) • 6 years at Google, API guy (first hired, helped start the team) • Adwords, Checkout, Social, HTML5, Cloud Thursday, April 5, 12
  • 3. Dreams Of my childhood 3 Thursday, April 5, 12
  • 4. Accelerando / Singularity, in a Galaxy far far away § Even if we automate ourselves out of a job every 10 years § ...I don’t think the singularity is near! 4 Thursday, April 5, 12
  • 5. Moore's Law is for Hardware Only § Does not apply to software § Productivity gains not keeping up with hardware and bandwidth § Writing software is hard, painful, and still very much a craft 5 Thursday, April 5, 12
  • 6. Moore's Law’s free lunch is over § Herb Sutter, Welcome to the Jungle http://herbsutter.com/welcome-to-the-jungle/ 6 Thursday, April 5, 12
  • 7. Future “The future is already here — it's just not very evenly distributed” William Gibson 7 Thursday, April 5, 12
  • 8. Haiku - Skylark “Trampling on clouds, inhaling the mist, the skylark soars” —SHIKI 8 Thursday, April 5, 12
  • 9. Haiku - Frog “Crouching, studying the clouds— a frog” CHIYO-JO 9 Thursday, April 5, 12
  • 10. Architecture Changes: 60’s Mainframe Thursday, April 5, 12
  • 11. Architecture Changes: 80’s Client-Server Thursday, April 5, 12
  • 12. Architecture Changes: 90’s Web Thursday, April 5, 12
  • 13. Architecture Changes: 2010’s Cloud, HTML5, Mobile Thursday, April 5, 12
  • 14. Back to Client Server: Groovy Baby! 14 Thursday, April 5, 12
  • 15. What is Cloud Computing? Cloud According to my daughter Eliette 15 Thursday, April 5, 12
  • 16. Cloud Stack - Classic Pyramid Software As A Service Platform As A Service Infrastructure As A Service 16 Thursday, April 5, 12
  • 17. Cloud Stack - By Number Software As A Service Platform As A Service Infrastructure As A Service 17 Thursday, April 5, 12
  • 18. Cloud Stack - By Value Software As A Service Platform As A Service Infrastructure As A Service 18 Thursday, April 5, 12
  • 19. Cloud Stack - Neutral Software As A Service Platform As A Service Infrastructure As A Service 19 Thursday, April 5, 12
  • 20. Cloud Stack - History § What does cloud mean, 4 main angles • Software 1994 Netscape • Infrastructure 2002 Amazon AWS • Platform 2008 Google • Development now! § Industrialization of hardware and software infrastructure like electricity beginning of 20th century § But software development itself is moving towards craftmanship 20 Thursday, April 5, 12
  • 21. Cloud started at Consumer websites solving their needs • Google, Amazon, Yahoo, Facebook, Twitter • Large Data Sets • Storage Capacity growing faster than Moore’s Law • Fast Networks • Horizontal -> Vertical scalability • Open Source Software • Virtualization • Cloud is a productization of these infrastructures • Public Clouds Services: Google, Amazon • Open Source Software: Hadoop, Eucalyptus, Ubuntu, Cloud Foundry Thursday, April 5, 12
  • 22. Infrastructure 22 Thursday, April 5, 12
  • 23. IaaS/Virtualization getting mainstream § AWS, Joyent, Rackspace,... § Open Source projects: OpenStack, DeltaCloud, Eucalyptus § Automation: Chef, Juju § Standardization? DMTF § Inside the Firewall, Virtualization: VMware, Microsoft, Xen, KVM § 50% of workloads are virtualized § Easy to provision, manage instance...BUT § Still need to manage backups, software stacks, monitor, upgrades 23 Thursday, April 5, 12
  • 24. With Infrastructure, you still need to build your own platform § Need to build a distributed platform on top of you infrastructure § Story of the AWS meltdown from last summer • http://blog.reddit.com/2011/03/why-reddit-was-down-for-6-of-last-24.html • http://www.readwriteweb.com/cloud/2010/12/chaos-monkey-how-netflix- uses.php • http://news.ycombinator.com/item?id=2477296 • http://stu.mp/2011/04/the-cloud-is-not-a-silver-bullet.html § Twilio, Smugmug, SimpleGeo survived it because they built their own distributed platform on top of IaaS § Enterprise customers want to consider Infrastructure like CDNs • Multi Cloud usage • Based on Open Source de facto standards, or full standards whenever that happens 24 Thursday, April 5, 12
  • 25. Platforms 25 Thursday, April 5, 12
  • 26. Platforms § Raise the Unit of currency to be application & services instead of infrastructure § Google App Engine, Cloud Foundry, Joyent, Heroku, Stax (Cloudbees), Amazon elastic beanstalk, Microsoft Azure, AppFog § Single or a few languages, services § Start of Multi language Polyglot platforms § Enabler for Agile Developers -> Create Business value faster § Lack of standards: risk, vendor lock-in § Enterprise needs: • Control, customizability • Private/Hybrid Cloud • Avoid lock-in 26 Thursday, April 5, 12
  • 28. Agility as a survival skill § Consumer software is becoming like fashion • Phone apps, social apps, short lifetime, fast lifecycles • Ab testing § Clay shirky situational apps § Kent Beck, Usenix 2011 Talk, “Software G-Forces” change in software process when frequency grows § Cloud Platforms enables an Agile culture, driver for innovation • Scalability is built in the platforms • Can iterate faster • Focus on design § Cloud Platforms lets developers focus on driving business value 28 Thursday, April 5, 12
  • 29. Main Risk: Lock-In Welcome to the hotel california Such a lovely place Such a lovely face Plenty of room at the hotel california Any time of year, you can find it here Last thing I remember, I was Running for the door I had to find the passage back To the place I was before ’relax,’ said the night man, We are programmed to receive. You can checkout any time you like, But you can never leave! 29 Thursday, April 5, 12
  • 30. Cloud Foundry: The Open PaaS • Open Source: Apache 2 Licensed • multi language/frameworks • multi services • multi cloud Ap ce pli vFabric rfa Postgres Private ca nte Data Services tio Clouds rI n e Se Public vid vFabric RabbitMQTM rvi Cloud ro Msg Services ce dP Micro ou Other Cloud Cl Services 30 Thursday, April 5, 12
  • 31. Open Source 31 Thursday, April 5, 12
  • 32. Open Source Advantage § http://code.google.com/p/googleappengine/issues/detail?id=13 • https://github.com/cloudfoundry/vcap/pull/25 32 Thursday, April 5, 12
  • 33. Multi Cloud 33 Thursday, April 5, 12
  • 34. CloudFoundry.COM Cloud Foundry Runtimes & Frameworks Services vCenter / vSphere Infrastructure 34 Thursday, April 5, 12
  • 35. Cloud Foundry.ORG Cloud Foundry The Source Code to Compile & Build Cloud Foundry vCenter / vSphere Download Setup Setup Scripts Deploy Code Environment Behind Firewall 35 Thursday, April 5, 12
  • 36. Micro Cloud Foundry Micro 36 Thursday, April 5, 12
  • 37. What is a Micro Cloud? Or Entire Cloud Running inside of a single VM 37 Thursday, April 5, 12
  • 38. Micro Cloud Foundry… (BETA) A pre-built Micro (Single VM) version of Cloud Foundry… You need a Cloud Foundry.com Account to use Micro Cloud Foundry Signup @ http://cloudfoundry.com/micro 38 Thursday, April 5, 12
  • 39. Micro Cloud Foundry… (BETA) A pre-built Micro (Single VM) version of Cloud Foundry… Micro You need a Cloud Foundry.com Account to use Micro Cloud Foundry Signup @ http://cloudfoundry.com/micro 38 Thursday, April 5, 12
  • 40. What is in Micro Cloud Foundry? .COM Dynamic Updating DNS App Instances Services Open source Platform as a Service project 10.04 39 Thursday, April 5, 12
  • 41. Other Cloud Foundry powered PaaS Private PaaS Added Python and Perl Public PaaS Added PHP Tier3 and Uhuru recently added .NET support 40 Thursday, April 5, 12
  • 42. Development LifeCycle 41 Thursday, April 5, 12
  • 43. Traditional App Deploy and Request/Response Web Request/Allocate Web Build/Setup Install/Configure App Deploy/Test App Scale? Upgrade? DB DB Update? Thursday, April 5, 12
  • 44. How Apps are Deployed on Cloud Foundry Web Web App “vmc push MyApp” DB App Web Scale? “vmc instances MyApp 5” DB Upgrade? “vmc map MyApp MyApp2” Update? “vmc update MyApp” Thursday, April 5, 12
  • 45. How Apps are Deployed on Cloud Foundry Web Web App “vmc push MyApp” DB App Web Scale? “vmc instances MyApp 5” DB Upgrade? “vmc map MyApp MyApp2” Update? “vmc update MyApp” Thursday, April 5, 12
  • 46. How Apps are Accessed on Cloud Foundry Request Web Interface Load Balancing Response and Routing Web App App Instance DB “vmc push MyApp” Service Thursday, April 5, 12
  • 47. How Apps are Scaled on Cloud Foundry Request Load Load Load Balancer(s) Balancing Response Balancer(s) and Routing App Instances Web Web Web App App App DB “vmc instances MyApp 3” Service Thursday, April 5, 12
  • 48. How Apps are Updated on Cloud Foundry Previous Instance Updated New Version Stopped Code Version Web Web Web Web App App App App DB DB Service Service “vmc update MyApp” Thursday, April 5, 12
  • 49. Services 47 Thursday, April 5, 12
  • 50. Current Services Available on Cloud Foundry 48 Thursday, April 5, 12
  • 51. Service Creation and Binding VCAP_SERVICES: {"redis-2.2":[{"name":"redis_sample","label":"redis-2.2","plan":"free", "tags":["redis","redis-2.2","key-value","nosql"], "credentials": {"hostname":"172.30.48.40", "host":"172.30.48.40", "port":5023, "password":"8e9a901f-987d-4544-9a9e-ab0c143b5142", "name":"de82c4bb-bd08-46c0-a850-af6534f71ca3"} }], "mongodb-1.8":[{"name":"mongodb-e7d29","label":"mongodb-1.8","plan":"free","tags”: …………………. 49 Thursday, April 5, 12
  • 52. Service Creation and Binding App Instance 50 Thursday, April 5, 12
  • 53. Service Creation and Binding App Instance Redis Service 50 Thursday, April 5, 12
  • 54. Service Creation and Binding App Instance Redis Service 50 Thursday, April 5, 12
  • 55. Service Creation and Binding App Instance Redis Service MongoDB Service 50 Thursday, April 5, 12
  • 56. How it works 51 Thursday, April 5, 12
  • 57. Logical View Browser VMC client STS plugin (user app access) Routers CloudControllers App App HealthManager Services DEA Pool Messaging 52 Thursday, April 5, 12
  • 58. Architecture 53 Thursday, April 5, 12
  • 59. Register today http://cloudfoundry.com/signup Use Promo Code CFOpenTour2012 To avoid approval queue waiting time 54 Thursday, April 5, 12
  • 60. Cloud for Developers: the true path is PaaS! 55 Thursday, April 5, 12
  • 61. sample app polyglot in action by Mark Lucovsky 56 developer perspective v2.0 Thursday, April 5, 12
  • 62. 57 developer perspective v2.0 Thursday, April 5, 12
  • 63. stac2: load generation system - jQuery, jQuery UI json-p stac2 - 2 x 128mb - haml templates frontend - ruby 1.8.7, sinatra - 100% JS based UI smtp http json email - 16 x 128mb* api server - node.JS, 0.6.8 reports rpush redis api redis blpop redis api blpop - 96 x 128mb - 16 x 128mb* - ruby 1.8.7, sinatra vmc worker http worker - node.JS, 0.6.8 * - api server and http worker share the same node.JS process/instance 58 developer perspective v2.0 Thursday, April 5, 12
  • 64. deployment instructions $ cd ~/stac2 $ vmc push 59 developer perspective v2.0 Thursday, April 5, 12
  • 65. how is this possible? $  cd  ~/stac2;  cat  manifest.yml applications:    ./nabh:        instances:  16        mem:  128M        runtime:  node06        url:  ${name}.${target-­‐base}        services:            nab-­‐redis:                type:  :redis ./nabv:        instances:  96        mem:  128M          runtime:  ruby18        url:  ${name}.${target-­‐base}        services:            nab-­‐redis:                type:  :redis ./stac2:        instances:  2        mem:  128M          runtime:  ruby18        url:  ${name}.${target-­‐base} 60 developer perspective v2.0 Thursday, April 5, 12
  • 66. design tidbits • producer/consumer pattern using rpush/blpop • node.JS: multi-server and high performance async i/o • caldecott – aka vmc tunnel for debugging • redis sorted sets for stats collection • redis expiring keys for rate calculation 61 developer perspective v2.0 Thursday, April 5, 12
  • 67. producer/consumer • core design pattern • found at the heart of many complex apps classic mode: - thread pools - semaphore/mutex, completion ports, etc. - scalability limited to visibility of the work queue producer work work queue work consumer cloud foundry mode: - instance pools - redis rpush/blpop, rabbit queues, etc. - full horizontal scalability, cloud scale 62 developer perspective v2.0 Thursday, April 5, 12
  • 68. producer/consumer: code //  producer function  commit_item(queue,  item)  {    //  push  the  work  item  onto  the  proper  queue      redis.rpush(queue,  item,  function(err,  data)  {        //  optionally  trim  the  queue,  throwing  away        //  data  as  needed  to  ensure  the  queue  does        //  not  grow  unbounded        if  (!err  &&  data  >  queueTrim)  {            redis.ltrim(queue,  0,  queueTrim-­‐1);        }          }); } //  consumer function  worker()  {    //  blocking  wait  for  workitems    blpop_redis.blpop(queue,  0,  function(err,  data)  {                //  data[0]  ==  queue,  data[1]  ==  item        if  (!err)  {            doWork(data[1]);        }        process.nextTick(worker);          }); 63 developer perspective v2.0 Thursday, April 5, 12
  • 69. node.JS multi-server: http API server //  the  api  server  handles  two  key  load  generation  apis //  /http  –  for  http  load,  /vmc  for  Cloud  Foundry  API  load var  routes  =  {“/http”:  httpCmd,  “/vmc”:  vmcCmd} //  http  api  server  booted  by  app.js,  passing  redis  client //  and  Cloud  Foundry  instance   function  boot(redis_client,  cfinstance)  {    var  redis  =  redis_client;        function  onRequest(request,  response)  {        var  u  =  url.parse(request.url);        var  path  =  u.pathname;        if  (routes[path]  &&  typeof  routes[path]  ==  ‘function’)  {            routes[path](request,  response);        }  else  {            response.writeHead(404,  {‘Content-­‐Type’:  ‘text/plain’});            response.write(‘404  Not  Found’);            response.end();        }    }    server  =  http.createServer(onRequest).listen(cfinstance[‘port’]); } 64 developer perspective v2.0 Thursday, April 5, 12
  • 70. node.JS multi-server: blpop server var  blpop_redis  =  null; var  status_redis  =  null; var  cfinstance  =  null; //  blpop  server  handles  work  requests  for  http  traffic //  that  are  placed  on  the  queue  by  the  http  API  server //  another  blpop  server  sits  in  the  ruby/sinatra  VMC  server function  boot(r1,  r2,  cfi)  {    //  multiple  redis  clients  due  to  concurrency  constraints    blpop_redis  =  r1;    status_redis  =  r2;    cfinstance  =  cfi;    worker(); } //  this  is  the  blpop  server  loop function  worker()  {    blpop_redis.blpop(queue,  0,  function(err,  data)  {        if  (!err)  {            doWork(data[1]);        }        process.nextTick(worker);          }); } 65 developer perspective v2.0 Thursday, April 5, 12
  • 71. caldecott: aka vmc tunnel #  create  a  caldecott  tunnel  to  the  redis  server $  vmc  tunnel  nab-­‐redis  redis-­‐cli Binding  Service  [nab-­‐redis]:  OK … Launching  'redis-­‐cli  -­‐h  localhost  -­‐p  10000  -­‐a  ...’   #  enumerate  the  keys  used  by  stac2 redis>  keys  vmc::staging::* 1)  “vmc::staging::actions::time_50” 2)  “vmc::staging::active_workers” … #  enumerate  actions  that  took  less  that  50ms redis>  zrange  vmc::staging::actions::time_50  0  -­‐1  withscores 1)  “delete_app” 2)  “1” 3)  “login” 4)  “58676” 5)  “info” 6)  “80390” #  see  how  many  work  items  we  dumped  due  to  concurrency  constraint redis>  get  vmc::staging::wastegate “7829” 66 developer perspective v2.0 Thursday, April 5, 12
  • 72. redis sorted sets for stats collection #  log  action  into  a  sorted  set,  net  result  is  set  contains #  actions  and  the  number  of  times  the  action  was  executed #  count  total  action  count,  and  also  per  elapsed  time  bucket def  logAction(action,  elapsedTimeBucket)      #  actionKey  is  the  set  for  all  counts    #  etKey  is  the  set  for  a  particular  time  bucket  e.g.,  _1s,  _50ms    actionKey  =  “vmc::#{@cloud}::actions::action_set”    etKey  =  “vmc::#{@cloud}::actions::times#{elapsedTimeBucket}”    @redis.zincrby  actionKey,  1,  action    @redis.zincrby  etKey,  1,  action end #  enumerate  actions  and  their  associated  count redis>  zrange  vmc::staging::actions::action_set  0  -­‐1  withscores 1)  “login” 2)  “212092” 3)  “info” 4)  “212093” #  enumerate  actions  that  took  between  400ms  and  1s redis>  zrange  vmc::staging::actions::time_400_1s  0  -­‐1  withscores 1)  “create-­‐app” 2)  “14” 3)  “bind-­‐service” 4)  “75” 67 developer perspective v2.0 Thursday, April 5, 12
  • 73. redis incrby and expire for rate calcs #  to  calculate  rates  (e.g.,  4,000  requests  per  second) #  we  use  plain  old  redis.incrby.  the  trick  is  that  the   #  key  contains  the  current  1sec  timestamp  as  it’s  suffix  value #  all  activity  that  happens  within  this  1s  period  accumulates #  in  that  key.  by  setting  an  expire  on  the  key,  the  key  is   #  automatically  deleted  10s  after  last  write def  logActionRate(cloud)    tv  =  Time.now.tv_sec    one_s_key  =  "vmc::#{cloud}::rate_1s::#{tv}"    #  increment  the  bucket  and  set  expires,  key    #  will  eventually  expires  Ns  after  the  last  write    @redis.incrby  one_s_key,  1    @redis.expire  one_s_key,  10 end #  return  current  rate  by  looking  at  the  bucket  for  the  previous   #  one  second  period.  by  looking  further  back  and  averaging,  we   #  can  smooth  the  rate  calc def  actionRate(cloud)    tv  =  Time.now.tv_sec  -­‐  1    one_s_key  =  "vmc::#{cloud}::rate_1s::#{tv}"    @redis.get  one_s_key end 68 developer perspective v2.0 Thursday, April 5, 12
  • 74. stac2 demo -or- screencast 69 developer perspective v2.0 Thursday, April 5, 12
  • 75. stac2 demo -or- screencast 69 developer perspective v2.0 Thursday, April 5, 12
  • 76. Lessons for Developers 70 Thursday, April 5, 12
  • 77. Predictions § Software is becoming like fashion, design rules § Welcome to Babel, use the best tool for the job, embrace multiple language & heterogeneity § Our jobs will change, build yourself out of your current job § Sysadmin jobs will morph, there will be less of them § Many opportunities open when you embrace change 71 Thursday, April 5, 12
  • 78. Things to Forget § First normal form § Waterfall model § Single server deployment § Single language skill § Build everything from scratch § Build custom infrastructure 72 Thursday, April 5, 12
  • 79. Things to Learn • Agile, API Design • UI Design, Javacript, HTML5, CSS3 • A/B Testing • Open Source, Open Standards • Architecture, Distributed Computing (CAP theorem, 8 fallacies) • Cloud Platforms and APIs • Multiple types of languages (imperative, object, functional, logic) • Ability to encapsulate domain knowledge in a DSL • Build on the shoulders of giants: reuse, rest APIs • Pick your battles, choose what you need to build yourself to add value • Learn to live in a box (embrace platform limitations) to think outside the box • Use an App Store for distribution 73 Thursday, April 5, 12
  • 80. Be your own bitch “Don’t be a Google Bitch, don’t be a Facebook Bitch, and Don’t be a Twitter Bitch. Be your own Bitch.” Fred Wilson http://techcrunch.com/2011/05/23/fred-wilson-be-your-own-bitch/ 74 Thursday, April 5, 12
  • 81. Such stuff as dreams are made on § Like a kid on a candy store: there's never been a better time to be a software developer! § Welcome to the Cloud: embrace change and reinvent yourselves § “The future is already there, not evenly distributed” Gibson § We Developers, invent the future today 75 Thursday, April 5, 12
  • 82. 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 We’re hiring: www.cloudfoundry.com/jobs 76 Thursday, April 5, 12
  • 83. Questions 77 Thursday, April 5, 12 ?
  • 84. Thank You! t @CloudFoundry t @chanezon Website : www.cloudfoundry.com Blog : blog.cloudfoundry.com Forum : support.cloudfoundry.com Thursday, April 5, 12
  • 85. Books / Articles § Nick Carr, The Big Switch § Eric Raymond, The Art of Unix Programming § Weinberg, Psychology of Computer Programming § Wes python book § Mark html5 book § Kent Beck XP § Hunt, Thomas, The Pragmatic Programmer § Ade Oshineye, Apprenticeship Patterns § Matt Cutt's Ignite Talk IO 2011, Trying different things § Josh Bloch talk about api design § Larry and Sergey, Anatomy of a Search Engine § Rob Pike, The Practice of Programming 79 Thursday, April 5, 12
  • 86. Papers / Talks § Simon Wardley, Oscon 09 “Cloud - Why IT Matters” § Tim O’Reilly article on internet os § Peter Deutsch’s 8 Fallacies of Distributed Computing § Brewer’s CAP Theorem § Gregor Hohpe’s Starbucks Does Not Use Two-Phase Commit § Stuff I tag http://www.delicious.com/chanezon/ § More specifically http://www.delicious.com/chanezon/cloudfoundry § My previous Talks http://www.slideshare.net/chanezon § My list of favorite books http://www.chanezon.com/pat/soft_books.html 80 Thursday, April 5, 12
  • 87. Acknowledgement § Drawings from my daughters Eliette § Slides from Dave McCrory, Derek Collison, Duke Leto § Haiku from Addiss, Stephen; Yamamoto, Fumiko; Yamamoto, Fumiko Y.; Yamamoto, Akira Y. (2011-06-22). Haiku: An Anthology of Japanese Poems (Shambhala Library) § Painting Hiroshige, Sengai 81 Thursday, April 5, 12