practical cloud patterns s311528

Upload: vinh-le-van

Post on 07-Apr-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/6/2019 Practical Cloud Patterns S311528

    1/38

    Practical Cloud Computing Patterns

    Session S311528

    John StanfordPrincipal Field Technologist

    Scott MattoonPrincipal Field Technologist

    Ken PepplePrincipal Engineer

  • 8/6/2019 Practical Cloud Patterns S311528

    2/38

    22009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone

    Learn How To Combine Softwareand Infrastructure Patterns to

    Effectively Leverage CloudComputing With Your Application

  • 8/6/2019 Practical Cloud Patterns S311528

    3/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 3

    Agenda

    Software and Infrastructure Pattern Introduction Common Web Functional Patterns Cloud Provisioning Patterns

    Cloud Monitoring Patterns Cloud Resource Patterns

  • 8/6/2019 Practical Cloud Patterns S311528

    4/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 4

    Software and Infrastructure Patterns

    Most famously described in Design Patterns: Elementsof Reusable Object-Oriented Software for software

    Single solution that could be implementing manydifferent ways to solve many problems Also applied to infrastructure problems Building blocks of applications and architectures

  • 8/6/2019 Practical Cloud Patterns S311528

    5/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 5

    Web 2.0 Application Functional Architecture

  • 8/6/2019 Practical Cloud Patterns S311528

    6/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 6

    Cloud Compute Instance Provisioning

    Cloud APIs transform provisioning from a proceduremostly done by system admins to code executed inresponse to events (Deployment Engineering)

    Need to be heavily automated so that they can beinvoked dozens of times per day Need to be flexible to cover all tiers of application

    architecture Application servers refreshed daily Database servers updated yearly

    Sometimes a combination of patterns Application code pushed System image static

  • 8/6/2019 Practical Cloud Patterns S311528

    7/382009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 7

    Cloud Provisioning Elements & Participants

    Provisioned Elements Base OS Utilities and agents

    Platforms and frameworks Custom application code Configuration files Data and volumes

    Participants Console Cloud interface Compute instance Image repository CMDB Provisioning system

  • 8/6/2019 Practical Cloud Patterns S311528

    8/382009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 8

    Static Image Provisioning

    Very simple scripted provisioning from golden images Deploys full stack to cloud compute image with little

    customisation

    Appropriate for low complexity, low volatility code bases Easy integration into existing monitoring processes May be more secure could run keyless External orchestration left to console (load balancer) Requires very good Test/QA procedures and

    management of golden images May be used for small parts of the larger strategy

    Appliances like DNS or monitoring servers Low code volatility, highly available servers like databases

  • 8/6/2019 Practical Cloud Patterns S311528

    9/382009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 9

    Static Image Provisioning Sequence

    magic happens

  • 8/6/2019 Practical Cloud Patterns S311528

    10/38

  • 8/6/2019 Practical Cloud Patterns S311528

    11/382009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 11

    Push Provisioning

    Builds on static pattern by pushing additionalprovisioning instructions from console

    Usually implemented as scripted shell commands over

    SSH Requires more administrative knowledge and

    substantial scripting (error handling) Easy integration into existing system administration and

    developer processes

    Appropriate for higher codebase volatility andarchitectural complexity but may not scale Have to login into each new instance from console for many

    long transactions Many open source tools available

  • 8/6/2019 Practical Cloud Patterns S311528

    12/382009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 12

    Push Provisioning Sequence

    This process may interactwith other systems as part ofthe commands. For example,install scripts may pull downpackages from the Internet.

  • 8/6/2019 Practical Cloud Patterns S311528

    13/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 13

    Push Provisioning: Simple Ruby Script (EC2)#!/usr/bin/env rubyrequire'rubygems'require'ec2'require'net/ssh'ACCESS_KEY_ID = ENV['AMAZON_ACCESS_KEY_ID']SECRET_KEY = ENV['AMAZON_SECRET_ACCESS_KEY']KEY_NAME = ARGV[0] # which key to bind to instance for loginKEY_FILE_NAME = ARGV[1] # name of the keyfile

    ec2 = EC2::Base.new(:access_key_id => ACCESS_KEY_ID, :secret_access_key =>SECRET_KEY)instance = ec2.run_instances(:image_id => ami-3c47a355, :key_name => KEY_NAME)my_instance_id = instance.instancesSet.item[0].instanceId

    loopdo begin

    instance_status = ec2.describe_instances(:instance_id => my_instance_id) breakifinstance_status.reservationSet.item[0].instancesSet.item[0].instanceState.name.m

    atch("running") sleep(30) endendsleep(30) # to let sshd fully loadinstance_status = ec2.describe_instances(:instance_id => my_instance_id)

    Net::SSH.start(instance_status.reservationSet.item[0].instancesSet.item[0].dnsName , "root", :keys => KEY_FILE_NAME, :verbose => :info) do |ssh|output = ssh.exec!("touch ~/snuffy.conf")

    end

  • 8/6/2019 Practical Cloud Patterns S311528

    14/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 14

    Pull Provisioning

    Builds on static pattern by introducing client/serverinteractions between compute instance and separateprovisioning server

    Compute instance checks periodically with provisioning serverfor it's configuration

    Provisioning server tracks, compiles and distributesconfiguration rules

    CMDB may be separate or combined for reporting Appropriate for high codebase volatility and

    architectural complexity at great scale Adds several new participants which introduce

    administrative overhead and points of failure Provisioning server handles external orchestration

  • 8/6/2019 Practical Cloud Patterns S311528

    15/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 15

    Pull Provisioning Sequence

    This loops at intervaldepending on

    implementation

  • 8/6/2019 Practical Cloud Patterns S311528

    16/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 16

    Pull Provisioning Example: Puppet

    Node runs facter andpuppetd

    Server runspuppetmasterd

    More info on puppet at http://reductivelabs.com/

  • 8/6/2019 Practical Cloud Patterns S311528

    17/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 17

    Static Push Pull

    High Volatility low medium high

    High Scale high low highRepeatability high low high

    Maintainability high low medium

    Ideal Use appliances small apps large apps

    Comparing Provisioning Patterns Suitability

  • 8/6/2019 Practical Cloud Patterns S311528

    18/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 18

    Monitoring Apps in the Cloud

    Crucial Function of ApplicationService Operations

    Forces (Business Inputs)

    SLA

    Margin Analysis

    Primary Stategies Agent Based

    Polling

  • 8/6/2019 Practical Cloud Patterns S311528

    19/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 19

    Cloud Service Monitoring Elements & Participants

    RunningInstances Images

    ObjectStorage Network

    Availability

    Utilization *

    Latency /Throughput

    *

    Integrity

    MonitoredElements:

    Participants

    Scripts and Agents Management Frameworks Rules Logs Console Gateways / Proxies Cloud interface

  • 8/6/2019 Practical Cloud Patterns S311528

    20/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 20

    Agent Based

    Pros Rich data High control over what's

    observed Realtime event detection

    Cons Resource overhead on

    every instance Data traverses public

    network Lifecycle sustaining

    implications

  • 8/6/2019 Practical Cloud Patterns S311528

    21/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 21

    Agent Based

    Pros Rich data High control over what's

    observed Realtime event detection

    Cons Resource overhead on

    every instance Data traverses public

    network Lifecycle sustaining

    implications

  • 8/6/2019 Practical Cloud Patterns S311528

    22/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 22

    Watch Polling

    Pros No resource overhead Simple Scope is dimensionable No sustaining implications

    Cons Costs 1.5 / Instance / Hr Limited data Lock in

  • 8/6/2019 Practical Cloud Patterns S311528

    23/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 23

    Watch Polling Sequence

  • 8/6/2019 Practical Cloud Patterns S311528

    24/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 24

    Example: Watch Polling Driven Elasticity

  • 8/6/2019 Practical Cloud Patterns S311528

    25/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 25

    Cloud Resource Administration Patterns

    Need to answer complex questions to perform actions Must move away from spreadsheet management Don't want to leave decision making to end customer

    Exposes complexity Opens door to collisions

    Do want to enable Consistency Repeatability

    Resource Types Singleton, pooled, generated

    Allocation Types Owned, shared

  • 8/6/2019 Practical Cloud Patterns S311528

    26/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 26

    Resource Administration The Big Picture

  • 8/6/2019 Practical Cloud Patterns S311528

    27/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 27

    Singleton Resource Overview

    Only one instance of the resource Many to one mapping with consumers Examples of resources:

    DNS server name Load balancer IP Firewall IP

    Why bother? Future-proofing

    Capacity planning Risks

    Depend on consumer good behavior Mitigation

    Implement an auditor to determine which resources are in use

    Consider TTLs on reservations that fail the audit

  • 8/6/2019 Practical Cloud Patterns S311528

    28/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 28

    Singleton Resource Structural Pattern

  • 8/6/2019 Practical Cloud Patterns S311528

    29/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 29

    Singleton Resource Sequence Pattern

  • 8/6/2019 Practical Cloud Patterns S311528

    30/38

  • 8/6/2019 Practical Cloud Patterns S311528

    31/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 31

    Pooled Resource Structural Pattern

  • 8/6/2019 Practical Cloud Patterns S311528

    32/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 32

    Pooled Resource Sequence Pattern

  • 8/6/2019 Practical Cloud Patterns S311528

    33/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 33

    Generated Resource Overview

    Unlimited number of resource instances Created within the system based on policies Examples of resources:

    Host names Instance ID (when there is no max # of instances) Correlated to external information (date, time, moon phase)

    Why bother? Avoids duplication

    Promotes consistency Risks

    Dependent on policy accuracy Mitigation

    Sample data generator

    Testing

  • 8/6/2019 Practical Cloud Patterns S311528

    34/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 34

    Generated Resource Structural Pattern

  • 8/6/2019 Practical Cloud Patterns S311528

    35/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 35

    Generated Resource Sequence Pattern

  • 8/6/2019 Practical Cloud Patterns S311528

    36/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 36

    Summary

    There is substantial reuse of traditional software andinfrastructure patterns in cloud applications

    Characteristics of cloud computing force many of theoperational patterns to be formalized and addressed

    through code during development There are some new functional and non-functional

    areas of patterns for cloud applications The composition of these patterns have new and

    unexpected non-functional implications Architecture is more important than ever

  • 8/6/2019 Practical Cloud Patterns S311528

    37/38

    2009 CommunityOne WEST Conference | san francisco, ca | developers.sun.com/events/communityone 37

    Call to Action

    Visit the pattern library Propose a pattern Comment on an existing pattern

    Propose an anti-pattern https://wikis.sun.com/display/cloud/Patterns

    Learn About The Sun cloud Storage Compute

    OpenOffice Netbeans/Kenai http://www.sun.com/cloud

    Build your own cloud http://kenai.com/projects/suncloudapis

    https://wikis.sun.com/display/cloud/Patternshttp://www.sun.com/cloudhttp://kenai.com/projects/suncloudapishttp://kenai.com/projects/suncloudapishttp://www.sun.com/cloudhttps://wikis.sun.com/display/cloud/Patterns
  • 8/6/2019 Practical Cloud Patterns S311528

    38/38

    Practical Cloud Computing Patterns

    Session S311528

    John Stanfordj h t f d@

    Scott Mattoontt tt @

    Ken Pepplek l @