Upload
vinh-le-van
View
226
Download
0
Embed Size (px)
Citation preview
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/Patterns8/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 @