Computational
Patterns of the
Cloud
QCon NYC 2014
Inés
SombraData Engineer
@Randommood
ines@engineyard.com
Continuous
Everything
Today’s Agenda
Distributed
Systems
Harvesting
Services
Reclaimable
Resources
Reclaimable Resources
Pattern 1: Where things start
Pre-Cloud Applications
We have an
application ready
for deployment
Ticket to
request
resources
( budgets )
Procurement
Rol...
Cloud Applications
We have an
application ready
for deployment
Provision servers on
demand (via APIs) & 

deploy to produc...
gordolo.engineyard.com
Pets vs Cattle
vm002.engineyard.com
Both
are
adorbs!
Maintain
Cloud resources are Reused
ConsumeProvision
Release
* And things are ”elastic”
Our experience + a few stories
Everything
fails.
* At the worst time, for realsies
Excel at Process
Anticipate failure
and plan for it
Use postmortems, checklists,
retrospectives, and play-books
Take them ...
Everything is a recipe
Infrastructure is maintained as code
Resources are used to increase the
availability & redundancy o...
Challenges
Importance of 

Monitoring &
Benchmarking
Know your baseline *
Alerting & monitoring
are critical
Benchmarking is still
mi...
What does 

healthy mean?
Many elements in place to
determine health
These visualizations fail us.
We need better ones
Com...
What does 

healthy mean?
Many elements in place to
determine health
These visualizations fail us.
We need better ones
Com...
Resource families
match use cases
Some awareness is needed
Cloud resources are
different than hardware-
based
Capacity pla...
Think about cloud
resources in fluid
terms: compute &
release
compute with: the cloud as A collection of disposable resour...
Harvesting Services
Pattern 2: We have resources, now let’s leverage services
App Design for the cloud
Surrender the filesystem1
Our app becomes an
aggregate of services
2
Consume services via APIs3
Service oriented architecture
NoSQL Distilled: Fowler & Sadalage
My awesome e-commerce site
Shopping cart &
session data
C...
Our experience + a few stories
Cloud
The monorail that grew
UI
Provisioning
API
Billing
Partners
Cloud
The monorail that grew
UI
Provisioning
API
Billing
Partners
ui.engineyard.com
Provisioner (Smithy)
API (Core)
Billin...
The coupling that shouldn’t be
Cloud
UI
Provisioning
API
Billing
Partners
The coupling that shouldn’t be
Provisioner (Smithy)
Cloud
UI
Provisioning
API
Billing
Partners
Challenges
Operational
experience
can become 

siloed
Teams built around
services
Knowledge boundaries
Geographical distribution
Service 

dependency
and failure
planning
Difficult to assert health in
apps that consume services
Each service it’s its o...
Importance of
API design,

maintenance,
& deprecation
API design is a core
business competency
Prioritize maintenance
Reti...
Think about your
app as a: collection
of services
connected via APIs
compute with: Cloud applications leveraging services
Distributed Systems
Pattern 3: Resources + services make distributed systems
as the new norm
It’s a clustered world
with properties & constraints
* Tip: Read `Distributed systems and the end of the API in references
Distributed systems ex...
Our experience + a few stories
Availability & 

Coordination
Failures & latency
Degradation
Dependencies
Find the failing node
Stressing
Failures and
adding
automation
Serf cluster membershipHomegrown stonith
Challenges
What does it 

mean to be up?
Distributed systems will
break in interesting and
painful ways
Know your dependencies
Distributed
tracing is
necessary
Debugging the “it’s slow”
problem sucks
Inherently complex to
simulate & test
Awareness
of theory
Matters
@seancribbs
Distributed systems
are the foundation
of our infrastructure
& services
compute with: Cloud apps forming distributed syste...
Continuous Everything
Pattern 4: cloud systems enable continuity
CD and the importance of tests
Are they fast?
Can we trust them?
What coverage
do we have?
What type of tests?
* Don’t ign...
Our experience + a few stories
Our
continuous
Integration
Branches
Pull Requests
Test suites
Merge & deploy
Any prod
deploy
Kicks off a
suite
Our testing evolution
Master
PRs
Kick off a
suite
Dredd
Tests
Systems,
boundaries, &
int...
Any prod
deploy
Kicks off a
suite
Our testing evolution
Master
PRs
Kick off a
suite
Dredd
Tests
Systems,
boundaries, &
int...
Challenges
Many testing
choices. And a
random note.
Testing is critical and
frameworks should help by
streamlining choices
Automation...
All planning
tools suck
Stop thinking that a tool will fix
your agile problems
Continuous delivery can
make flaws in goals...
Cloud-based apps,
resources, and
services enable
agility
compute with: Cloud (resources, apps, services) as continuous
* “...
Quickly provision resources &
release them when they are
not needed
Reclaimable
Resources
Leverage services to simplify
ar...
Cloud computing next
“…This is how cloud computing will continue to
evolve. Developers will worry less about the
thousands...
Thank you
@randommood 

ines@engineyard.com
github.com/Randommood/Qconnyc2014
Computational Patterns of the Cloud - QCon NYC 2014
Upcoming SlideShare
Loading in …5
×

Computational Patterns of the Cloud - QCon NYC 2014

1,009 views

Published on

The Cloud has undoubtedly changed the way we think about computing, IT operations, innovation, and entrepreneurship. But what are the computational patterns that have emerged from the pervasiveness of public clouds? What can we leverage to improve our organizations? And what are the challenges that we face going forward?

In this talk, I will introduce you to cloud computing’s paradigms and discuss their applications with practical examples from Engine Yard’s customers, peers, and partners. We will also cover antipatterns and myths. If you are curious about Cloud computing or want to improve your cloud strategy this talk is for you.

NOTE: Open an issue if you want me to explain something in more detail at the accompanying github repo: https://github.com/Randommood/QConNYC2014/

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,009
On SlideShare
0
From Embeds
0
Number of Embeds
531
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Computational Patterns of the Cloud - QCon NYC 2014

  1. 1. Computational Patterns of the Cloud QCon NYC 2014
  2. 2. Inés SombraData Engineer @Randommood ines@engineyard.com
  3. 3. Continuous Everything Today’s Agenda Distributed Systems Harvesting Services Reclaimable Resources
  4. 4. Reclaimable Resources Pattern 1: Where things start
  5. 5. Pre-Cloud Applications We have an application ready for deployment Ticket to request resources ( budgets ) Procurement Roll to production 
 on a hand-crafted server Maintenance Uptime Burden
  6. 6. Cloud Applications We have an application ready for deployment Provision servers on demand (via APIs) & 
 deploy to production Maintenance ( for used resources only) Pay Uptime Burden
  7. 7. gordolo.engineyard.com Pets vs Cattle vm002.engineyard.com Both are adorbs!
  8. 8. Maintain Cloud resources are Reused ConsumeProvision Release * And things are ”elastic”
  9. 9. Our experience + a few stories
  10. 10. Everything fails. * At the worst time, for realsies
  11. 11. Excel at Process Anticipate failure and plan for it Use postmortems, checklists, retrospectives, and play-books Take them seriously Also know that state can bite
  12. 12. Everything is a recipe Infrastructure is maintained as code Resources are used to increase the availability & redundancy of applications “A self service cloud makes impossible things instant” @adrianco
  13. 13. Challenges
  14. 14. Importance of 
 Monitoring & Benchmarking Know your baseline * Alerting & monitoring are critical Benchmarking is still misunderstood
  15. 15. What does 
 healthy mean? Many elements in place to determine health These visualizations fail us. We need better ones Complexity is complex
  16. 16. What does 
 healthy mean? Many elements in place to determine health These visualizations fail us. We need better ones Complexity is complex Instance provisioned? IaaS Firewalls set up? IaaS Chef succeeded? PaaSVolumes provisioned? IaaS Process running? Role Replica up? PaaS
  17. 17. Resource families match use cases Some awareness is needed Cloud resources are different than hardware- based Capacity planning is tricky
  18. 18. Think about cloud resources in fluid terms: compute & release compute with: the cloud as A collection of disposable resources * Awareness is not optional
  19. 19. Harvesting Services Pattern 2: We have resources, now let’s leverage services
  20. 20. App Design for the cloud Surrender the filesystem1 Our app becomes an aggregate of services 2 Consume services via APIs3
  21. 21. Service oriented architecture NoSQL Distilled: Fowler & Sadalage My awesome e-commerce site Shopping cart & session data Completed orders Inventory and item pricing Session Storage service K/V Store Order Persistence service Document Store Inventory & Price service RDBMS Nodes and relations service Graph Store Recommendations engine
  22. 22. Our experience + a few stories
  23. 23. Cloud The monorail that grew UI Provisioning API Billing Partners
  24. 24. Cloud The monorail that grew UI Provisioning API Billing Partners ui.engineyard.com Provisioner (Smithy) API (Core) Billing (Johnny Cash) Partners (Tres Fiestas)
  25. 25. The coupling that shouldn’t be Cloud UI Provisioning API Billing Partners
  26. 26. The coupling that shouldn’t be Provisioner (Smithy) Cloud UI Provisioning API Billing Partners
  27. 27. Challenges
  28. 28. Operational experience can become 
 siloed Teams built around services Knowledge boundaries Geographical distribution
  29. 29. Service 
 dependency and failure planning Difficult to assert health in apps that consume services Each service it’s its own (smaller) failure domain
  30. 30. Importance of API design,
 maintenance, & deprecation API design is a core business competency Prioritize maintenance Retirement will happen
  31. 31. Think about your app as a: collection of services connected via APIs compute with: Cloud applications leveraging services
  32. 32. Distributed Systems Pattern 3: Resources + services make distributed systems as the new norm
  33. 33. It’s a clustered world
  34. 34. with properties & constraints * Tip: Read `Distributed systems and the end of the API in references Distributed systems exhibit a set of uniformly unintuitive behaviors related to causality, consistency, and availability *
  35. 35. Our experience + a few stories
  36. 36. Availability & 
 Coordination Failures & latency Degradation Dependencies
  37. 37. Find the failing node Stressing Failures and adding automation Serf cluster membershipHomegrown stonith
  38. 38. Challenges
  39. 39. What does it 
 mean to be up? Distributed systems will break in interesting and painful ways Know your dependencies
  40. 40. Distributed tracing is necessary Debugging the “it’s slow” problem sucks Inherently complex to simulate & test
  41. 41. Awareness of theory Matters @seancribbs
  42. 42. Distributed systems are the foundation of our infrastructure & services compute with: Cloud apps forming distributed systems
  43. 43. Continuous Everything Pattern 4: cloud systems enable continuity
  44. 44. CD and the importance of tests Are they fast? Can we trust them? What coverage do we have? What type of tests? * Don’t ignore their maintenance Tests 
 are critical
  45. 45. Our experience + a few stories
  46. 46. Our continuous Integration Branches Pull Requests Test suites Merge & deploy
  47. 47. Any prod deploy Kicks off a suite Our testing evolution Master PRs Kick off a suite Dredd Tests Systems, boundaries, & integration Stacks OS + Our Image Scenario Live setup + assertions Suite Collection of scenarios
  48. 48. Any prod deploy Kicks off a suite Our testing evolution Master PRs Kick off a suite Dredd Tests Systems, boundaries, & integration Stacks OS + Our Image Scenario Live setup + assertions Suite Collection of scenarios Are Databas es? Inst al l ing Ba cki ng Up Re stor ing Setti ng Up Re p li c ation Pro m ot ing Re p li c as Wr ite a b le
  49. 49. Challenges
  50. 50. Many testing choices. And a random note. Testing is critical and frameworks should help by streamlining choices Automation helps with process & certifications (SOCS2)
  51. 51. All planning tools suck Stop thinking that a tool will fix your agile problems Continuous delivery can make flaws in goals & direction obvious. Is your vision clear?
  52. 52. Cloud-based apps, resources, and services enable agility compute with: Cloud (resources, apps, services) as continuous * “The bottleneck is never code or creativity; it's lack of clarity.”Scott Berkun
  53. 53. Quickly provision resources & release them when they are not needed Reclaimable Resources Leverage services to simplify areas of responsibility in our app Harvesting services Theoretical foundation as a core competency for correctness Distributed Systems The holy grail. Will reshape your company & make everything awesome Continuous Delivery tl;dr this will save you 40 minutes
  54. 54. Cloud computing next “…This is how cloud computing will continue to evolve. Developers will worry less about the thousands of machines needed to run their application and more about the design of the application itself.” Eric Brewer
  55. 55. Thank you @randommood 
 ines@engineyard.com github.com/Randommood/Qconnyc2014

×