poolparty deployment

Upload: michael-fairchild

Post on 30-May-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Poolparty Deployment

    1/77

    Ari LernerMichael Fairchild

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    2/77

    I have a great idea!

    This site,its lets you post messages to your friends,

    and they can follow you...

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    3/77

    write an application...

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    4/77

    write an application...instantiate servers...

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    5/77

    write an application...

    instantiate servers...configure servers...

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    6/77

    write an application...instantiate servers...configure servers...

    scale them up...

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    7/77

    write an application...instantiate servers...

    configure servers...scale them up...reconfigure...

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    8/77

    write an application...instantiate servers...

    configure servers...scale them up...

    reconfigure..scale down...

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    9/77

    and pay for it ?!?

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    10/77

    Wouldnt it be nice if you could just

    write one fileto do all that?

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    11/77

    clouds.rb

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    12/77

    cloud :twitterclonedo

    end

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    13/77

    cloud :twitterclonedoinstances 1..10000

    end

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    14/77

    cloud :twitterclonedo

    instances 1..10000using :ec2

    end

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    15/77

    Its just Ruby

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    16/77

    cloud :twitterclonedo

    instances 1..1000using :ec2

    has_file "/etc/motd"do

    content "hello you"

    endend

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    17/77

    Lets go already!

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    18/77

    write an application...instantiate servers...

    configure servers...scale them up...

    reconfigure..scale down...

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    19/77

    Ew

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    20/77

    cloud-start

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    21/77

    cloud-start -s examples/fairchild.rb

    *** Starting cloud pp1

    0 running instances (1 - 3)

    Adding default gem depdendencies

    ...

    75.101.181.64 stderr => [Sat, 04 Apr 2009 16:46:01 +0000] INFO: Ran

    execute[line_in_/etc/profile] successfully

    [Sat, 04 Apr 2009 16:46:01 +0000] INFO: Chef Run complete in 29.883499

    seconds

    Your cloud has started. Your ip is 75.101.181.64

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    22/77

    launching...

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    23/77

    bootstrapping...

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    24/77

    configuring...

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    25/77

    cloud-list

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    26/77

    $ cloud-list -s examples/fairchild.rb*** Listing cloud pp1****** Active instancesmaster 75.101.181.64 i-516f0f38

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    27/77

    cloud-ssh

    cloud-ssh -s examples/fairchild.rb

    master 75.101.181.64 i-516f0f38Welcome to your PoolParty instanceroot@ip-10-251-201-157:~#

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    28/77

    poolparty core resources

    crondirectoryexecfile

    hostmountpackageremote_file

    symlinkuservariable

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    29/77

    Puppet

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    30/77

    Chef

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    31/77

    Chef

    Chef is a state based, declarative configurationmanagement engine.

    You define recipes of how you want your system tolook and then chef makes it so.

    ~Ezra Zygmuntovich

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    32/77

    chef doinclude_recipies "~/recipies/*"

    has_git_repos :name => "/srv/paparazzi"do

    source "git://github.com/auser/

    paparazzi.git"at "/srv"

    end

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    33/77

    include_recipe "apache2"

    include_recipe "passenger"

    include_recipe "rails"

    web_app "paparazzi"do

    docroot "/var/www/paparazzi/public"

    template "paparazzi.conf.erb"server_name "www.paparazzi.com"

    server_aliases [node[:hostname],

    node[:fqdn],

    "paparazzi.com"]rails_env "production"

    end

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    34/77

    cloud :twitterclonedo

    instances 1..1000

    using :ec2

    chef do

    include_recipes "~/recipies/*"

    has_git_repos :name => "/var/www/paparazzi"do

    source "git://github.com/auser/paparazzi.git"

    at "/var/www" end

    end

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    35/77

    cloud-configure

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    36/77

    Pushes configuration

    changes to the cloud

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    37/77

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    38/77

    Idempotent

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    39/77

    unchanged when

    multiplied by itself

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    40/77

    Run it more than onceand it wont change

    things unless it should

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    41/77

    cloud-configure

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    42/77

    cloud-configure

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    43/77

  • 8/14/2019 Poolparty Deployment

    44/77

  • 8/14/2019 Poolparty Deployment

    45/77

  • 8/14/2019 Poolparty Deployment

    46/77

    OMG!Oprah mentioned

    twitterclone!

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    47/77

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    48/77

  • 8/14/2019 Poolparty Deployment

    49/77

    collective metricsaveraged across the cloud

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    50/77

    Unequal use of resources

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    51/77

    My database server is overloaded,but my web server isnt

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    52/77

    multiple clouds

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    53/77

    pool :twitterclonedo

    instances 1..4000

    cloud :dbdo

    expand_when "memory > 0.9"

    end

    cloud :webserverdo

    maximum_instances 10

    expand_when "load > 1.2"

    end

    end

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    54/77

    :instances => 2..5

    :using => :ec2:ami => 'alestic ubuntu 8.1'

    :contract_when => "load < 0.65"

    :expand_when => "load > 1.9"

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    55/77

    cloud :twitterclonedo

    end

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    56/77

    Decentralized

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    57/77

  • 8/14/2019 Poolparty Deployment

    58/77

    Only cloud architecture

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    59/77

    Ruby

    (my)(postgre)sql(lite)

    python

    c

    PHP

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    60/77

  • 8/14/2019 Poolparty Deployment

    61/77

    transcoding cloudemail blasting cloud

    particle beam simulation cloud(getting girls) social networks

    ...

    Monday, June 22, 2009

    f

  • 8/14/2019 Poolparty Deployment

    62/77

    future

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    63/77

    more remoter bases

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    64/77

    using :ec2

    using :vmware

    using :gogrid

    using :slicehostusing :vbox

    using :ssh

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    65/77

  • 8/14/2019 Poolparty Deployment

    66/77

    launch_new_instance!terminate_instance(id)

    describe_instance(id)describe_instances

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    67/77

  • 8/14/2019 Poolparty Deployment

    68/77

    Butterfly

  • 8/14/2019 Poolparty Deployment

    69/77

    Butterfly

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    70/77

  • 8/14/2019 Poolparty Deployment

    71/77

    tighter integration ofDNS

    round robin load

    balancing

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    72/77

    quorum based actions

    independent nodesnominate actions based

    on local state

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    73/77

    cloud-terminate

    Monday, June 22, 2009

    C it

  • 8/14/2019 Poolparty Deployment

    74/77

    Community

    http://poolpartyrb.com

    #poolpartyrb (@freenode)

    [email protected]@atti.com

    Monday, June 22, 2009

    http://poolpartyrb.com/http://poolpartyrb.com/mailto:[email protected]:[email protected]:[email protected]:[email protected]://poolpartyrb.com/http://poolpartyrb.com/http://poolpartyrb.com/http://poolpartyrb.com/
  • 8/14/2019 Poolparty Deployment

    75/77

    Questions?

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    76/77

    Thank you

    Monday, June 22, 2009

  • 8/14/2019 Poolparty Deployment

    77/77

    Alternatives

    Rightscale

    Heroku

    Scalr