Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Smaller IS Better - Exploiting
Microservices on AWS
Craig S. Dickson, Solutions Architect, Amazon Web Services
Presentation Takeaways
When we are finished today, you will be able to answer the
following questions:
• What are microser...
Who am I?
• Solutions Architect at AWS since 2012
• Software Engineer / Architect / Manager prior to that
• Based in Brisb...
Who are you?
• Architect
• Developer
• SysOps / Server Admin / Networking
• Development Manager
• CTO
What is a Microservice?
Google has been getting a workout …
https://www.google.com/trends/explore#q=microservices
High Expectations …
Microservices
https://www.gartner.com/doc/3102217/hype-cycle-application-architecture-
“Microservices are the first post
DevOps revolution architecture”
– Neal Ford
(Director, Software Architect, and
Meme Wran...
Why does everyone
hate me? 
Image: 1869 / ptwo / license
What’s wrong with a monolith?
Self Contained Tightly Coupled Lacks Modularity
A Definition of Microservices
“… is an approach to developing a single application as a suite of small
services, each runn...
“Say hello to my micro friend!”
- Tony Montaña
(Cuban Software Architect)
Image: http://www.amazon.com/Scarface-Limited-Ed...
Um, isn’t this just SOA?
SOA Microservices
Smart pipes, dumb endpoints Simple pipes, smart endpoints
Centralized governanc...
A Well-Architected Microservice on AWS
1. cannot be made any smaller
• has a single functional purpose
• has minimized tot...
A Well-Architected Microservice on AWS (2)
3. has a well defined interface (API)
• can be versioned
• provides SDKs & docu...
A Well-Architected Microservice on AWS (3)
6. is operationally mature
• horizontally scalable
• self healing
• metrics & l...
Microservice Patterns on AWS
The Poor-Man’s Microservice
Clients
Elastic IP
RDS
HTTP
REST
Running EC2
Instance
Auto Scaling Group
AZ-A
AZ-B
Min = 1, Ma...
The Traditional Microservice
Clients
RDS
HTTP
REST
EC2
Instance
Auto Scaling Group
AZ-A
AZ-B
Min > 1
Elastic Load
Balancin...
That’s nice, but can we make
it smaller?
Image: http://www.nowverybad.com/honey-i-shrunk-the-kids-1989/
The Elastic Container Service Microservice
Clients
RDS
HTTP
REST
ECS Fleet
AZ-A
AZ-B
Elastic Load
Balancing
Servers? Where we’re going,
we don’t need servers
Doc Brown
(Early Cloud Adopter)
Image: http://memorydelta.wikia.com/wiki...
“No server is easier to
manage than no server”
Werner Vogels
(CTO, Amazon.com)
Image: 20081108 DDP Werner_Vogels / Guido v...
The Serverless Microservice
Clients
HTTP
REST
AWS
Lambda RDS
Never pay for idle!
The Serverless Microservice API
Amazon API
GatewayClients
HTTP
REST
AWS
Lambda
Amazon
S3
Amazon
DynamoDB
Amazon Machine
Le...
The Hybrid Microservice API
Amazon API
GatewayClients
HTTP
REST
Amazon
EC2
AWS
Lambda
Lambda
Blueprints
Amazon ECS
Elastic...
The Micro-Microservice API
Clients
Amazon API
Gateway
Free
Amazon API
Gateway
Premium
Amazon API
Gateway
Partner
Amazon AP...
Exploiting Microservices to
Address Business Problems
• Product Management has a great idea
• Even better: Product Management has many
great ideas, but are not sure which ones ...
Conway’s Law
”organizations which design systems
... are constrained to produce
designs which are copies of the
communicat...
• Large pieces of software, require large teams
• Increased inertia, lack of agility
• Hard to integrate work from other t...
“Being woken up at 3am every night
by your pager is certainly a powerful
incentive to focus on quality when
writing your c...
• Monoliths lead to “shared” responsibilities
• Focus is on project deliverables, not full lifecycle
Problem: Lack of Owne...
• Geographically, Temporally, Organizationally
• Burden of orchestration
Problem: Distributed Teams
• Provide a mechanism ...
• Upskilling takes time
• Unable to make use of temporary resources
Problem: Inelastic Human Capacity
• Reduce the surface...
Netflix slide
• Lack of Availability = Loss of Revenue
• Small issues rendering whole applications
unusable
Problem: Availability
• Enco...
• Cannot create à la carte application offerings to
users
• Cannot easily get feedback about new ideas
before investing la...
Exploiting Microservices to
Address Technical Problems
"I suppose it is tempting, if the only tool you have is a
hammer, to treat everything as if it were a nail.”
- Abraham Mas...
“Give a small boy a
hammer, and he
will find that
everything he
encounters needs
pounding.”
- Abraham
Kaplan (1964)
Image:...
• Different teams forced to use/learn technologies
that they are not effective with, just because it is
“the standard”
• I...
• Fear of deployments due to assumed risk
• Large deployment sizes due to dependencies
Problem: Constrained Delivery Veloc...
• Large functional surface area
• All potential failure scenarios are hard to define
• Long running tests delay feedback
P...
• Standardizing onto limited EC2 instance types
• Using generic scaling strategies
• Scaling every thing, every time
• Fai...
• Inability to easily/safely try new algorithms or
patterns
• Inability to quickly adopt disruptive technologies
Problem: ...
Evolving to Microservices
Microservices may not be
the right choice for you.
Image: http://insec.in/blog/2015/01/09/discounts-ethical-hacking-course...
Before Adopting Microservices
• Are you are a startup?
• Is this a brand new green field project?
• Do you have a deep und...
“A microservices-first approach for a
brand new project that we didn’t fully
understand the domain for led to a lot of
une...
Mo’ services, mo’ problems
The Notorious B.I.G.
(Influential East-Coast Software Architect)
Image: http://www.neontommy.co...
Focus on DevOps and Automation
• Even a medium scale microservices architecture (10s or 100s of
services) is difficult to ...
Focus on Your Organisation
• Evolve team sizes and responsibilities
• Moving towards smaller, cross-functional teams
• Wit...
Focus on Your Services
• Business capability, rather than technical function
• Everything fails, all the time
• retry, fai...
Conclusion
µ
Summary
7 tenets
7 architecture patterns 8 business problems
6 technical problems 1 big warning
3 tips for evolving 13 a...
What You Should Do Next
µ
AWS Lambda Amazon API Gateway Identify problems
Hunt MonolithsChampion Microservices Get Help
Resources
• Microservices – Martin Fowler & James Lewis
• http://martinfowler.com/articles/microservices.html
• Introducti...
Online Labs & Training
Gain confidence and hands-on
experience with AWS.
Watch free Instructional Videos and
explore Self-...
Thank You for Attending AWS Innovate
We hope you found it interesting!
Do provide us with your feedback for the session an...
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
Upcoming SlideShare
Loading in …5
×

AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson

1,053 views

Published on

AWS Innovate 2016

Published in: Technology
  • Be the first to comment

AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson

  1. 1. Smaller IS Better - Exploiting Microservices on AWS Craig S. Dickson, Solutions Architect, Amazon Web Services
  2. 2. Presentation Takeaways When we are finished today, you will be able to answer the following questions: • What are microservices? • What do they look like on AWS? • What problems can you address using a microservices architecture? • Is there a customer success story I can leverage? • How do I get “microserviced”?
  3. 3. Who am I? • Solutions Architect at AWS since 2012 • Software Engineer / Architect / Manager prior to that • Based in Brisbane, Australia
  4. 4. Who are you? • Architect • Developer • SysOps / Server Admin / Networking • Development Manager • CTO
  5. 5. What is a Microservice?
  6. 6. Google has been getting a workout … https://www.google.com/trends/explore#q=microservices
  7. 7. High Expectations … Microservices https://www.gartner.com/doc/3102217/hype-cycle-application-architecture-
  8. 8. “Microservices are the first post DevOps revolution architecture” – Neal Ford (Director, Software Architect, and Meme Wrangler at ThoughtWorks) Image: http://nealford.com/bio
  9. 9. Why does everyone hate me?  Image: 1869 / ptwo / license
  10. 10. What’s wrong with a monolith? Self Contained Tightly Coupled Lacks Modularity
  11. 11. A Definition of Microservices “… is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.” - Martin Fowler (Chief Scientist, ThoughtWorks) - James Lewis (Principal Consultant, ThoughtWorks)
  12. 12. “Say hello to my micro friend!” - Tony Montaña (Cuban Software Architect) Image: http://www.amazon.com/Scarface-Limited-Edition-Blu-ray-Digital/dp/B0019N94X6
  13. 13. Um, isn’t this just SOA? SOA Microservices Smart pipes, dumb endpoints Simple pipes, smart endpoints Centralized governance (ESB) Minimal governance Proprietary standards Open standards Services provide myriad functions Services are single purposed Distributed monoliths?
  14. 14. A Well-Architected Microservice on AWS 1. cannot be made any smaller • has a single functional purpose • has minimized total lines of code, architecture components, etc. • is cost optimized 2. is vertically isolated • runs in its own process • uses the best fit-for-purpose architecture (app. & infra.) • uses the best fit-for-purpose programming language • uses the best fit-for-purpose persistance option(s)
  15. 15. A Well-Architected Microservice on AWS (2) 3. has a well defined interface (API) • can be versioned • provides SDKs & documentation for clients • no backdoors 4. is automatically and independently deployed • first deploy and all updates • to all environments, not just test and dev. 5. is automatically tested thoroughly • functional, integration, performance, etc. • baseline metrics collected and evaluated
  16. 16. A Well-Architected Microservice on AWS (3) 6. is operationally mature • horizontally scalable • self healing • metrics & logs collected centrally • elegantly handles failures of downstream services 7. is managed by a small team (2 pizzas?) • co-located & cross-functional • back-end devs, UX, ops, DBA, etc. • with cradle-to-grave responsibilities
  17. 17. Microservice Patterns on AWS
  18. 18. The Poor-Man’s Microservice Clients Elastic IP RDS HTTP REST Running EC2 Instance Auto Scaling Group AZ-A AZ-B Min = 1, Max = 1 Future EC2 Instance
  19. 19. The Traditional Microservice Clients RDS HTTP REST EC2 Instance Auto Scaling Group AZ-A AZ-B Min > 1 Elastic Load Balancing EC2 Instance AWS OpsWorks AWS Elastic Beanstalk And don’t forget … .
  20. 20. That’s nice, but can we make it smaller? Image: http://www.nowverybad.com/honey-i-shrunk-the-kids-1989/
  21. 21. The Elastic Container Service Microservice Clients RDS HTTP REST ECS Fleet AZ-A AZ-B Elastic Load Balancing
  22. 22. Servers? Where we’re going, we don’t need servers Doc Brown (Early Cloud Adopter) Image: http://memorydelta.wikia.com/wiki/Emmett_Brown
  23. 23. “No server is easier to manage than no server” Werner Vogels (CTO, Amazon.com) Image: 20081108 DDP Werner_Vogels / Guido van Nispen / license
  24. 24. The Serverless Microservice Clients HTTP REST AWS Lambda RDS Never pay for idle!
  25. 25. The Serverless Microservice API Amazon API GatewayClients HTTP REST AWS Lambda Amazon S3 Amazon DynamoDB Amazon Machine Learning Amazon SNS Amazon SQS Amazon Kinesis Lambda Blueprints
  26. 26. The Hybrid Microservice API Amazon API GatewayClients HTTP REST Amazon EC2 AWS Lambda Lambda Blueprints Amazon ECS Elastic Load Balancing
  27. 27. The Micro-Microservice API Clients Amazon API Gateway Free Amazon API Gateway Premium Amazon API Gateway Partner Amazon API Gateway Experimental Amazon EC2 Amazon ECS AWS Lambda Lambda Blueprints
  28. 28. Exploiting Microservices to Address Business Problems
  29. 29. • Product Management has a great idea • Even better: Product Management has many great ideas, but are not sure which ones are winners • Takes weeks, months or worse to get them in front of a customer • A massive barrier to innovation Problem: Long Feature Cycle Times • Create an architecture that enables rapid change, inherently supports agility and encourages innovation Exploit Microservices to …
  30. 30. Conway’s Law ”organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations” - Melvin Conway Image: https://twitter.com/conways_law
  31. 31. • Large pieces of software, require large teams • Increased inertia, lack of agility • Hard to integrate work from other teams • Many problems are actually people problems, not technology problems Problem: Large Teams • Create an architecture that encourages smaller software components • Better align team size and responsibilities to services Exploit Microservices to …
  32. 32. “Being woken up at 3am every night by your pager is certainly a powerful incentive to focus on quality when writing your code.” - Martin Fowler Image: https://en.wikipedia.org/wiki/Martin_Fowler
  33. 33. • Monoliths lead to “shared” responsibilities • Focus is on project deliverables, not full lifecycle Problem: Lack of Ownership • Create small teams working on small pieces of functionality • Provide an opportunity for cradle-to-grave ownership • Foster a “You build it, you run it” philosophy Exploit Microservices to …
  34. 34. • Geographically, Temporally, Organizationally • Burden of orchestration Problem: Distributed Teams • Provide a mechanism to divide work up so that only co-located teams have to collaborate heavily • Define service level APIs that allow distributed teams to move at different velocities Exploit Microservices to …
  35. 35. • Upskilling takes time • Unable to make use of temporary resources Problem: Inelastic Human Capacity • Reduce the surface area that individuals need to understand at any one time • Enable temporary resources to work quickly and integrate easily Exploit Microservices to …
  36. 36. Netflix slide
  37. 37. • Lack of Availability = Loss of Revenue • Small issues rendering whole applications unusable Problem: Availability • Encourage a design-for-failure attitude • Enable individual services to implement appropriate fall-back plans and continue to provide value to customers Exploit Microservices to …
  38. 38. • Cannot create à la carte application offerings to users • Cannot easily get feedback about new ideas before investing large resources Problem: Product Management • Enable flexibility for product management and increase innovation • Quickly test ideas by combining strategies such as Feature Toggling and A/B Testing Exploit Microservices to …
  39. 39. Exploiting Microservices to Address Technical Problems
  40. 40. "I suppose it is tempting, if the only tool you have is a hammer, to treat everything as if it were a nail.” - Abraham Maslow (1966) Maslow’s Hammer Image: DSC_1607 / Justin Baeder / license
  41. 41. “Give a small boy a hammer, and he will find that everything he encounters needs pounding.” - Abraham Kaplan (1964) Image: Thor and his hammer / tenthousandcubans / license
  42. 42. • Different teams forced to use/learn technologies that they are not effective with, just because it is “the standard” • Inability to adopt different or emerging technologies Problem: Single Technology Syndrome • Encourage a polyglot attitude • Allow the best solution for each problem to be selected Exploit Microservices to …
  43. 43. • Fear of deployments due to assumed risk • Large deployment sizes due to dependencies Problem: Constrained Delivery Velocities • Allow different parts of applications to move at different speeds for development and deployment activities • Minimize risk by reducing the deployment sizes down to single services Exploit Microservices to …
  44. 44. • Large functional surface area • All potential failure scenarios are hard to define • Long running tests delay feedback Problem: Lack of Testability • Provide well defined APIs that can be deployed in isolation • Allow for quicker, yet more complete testing Exploit Microservices to …
  45. 45. • Standardizing onto limited EC2 instance types • Using generic scaling strategies • Scaling every thing, every time • Failing to use existing AWS services Problem: Inefficient Scaling • Allow the correct scaling option for each service to be selected • Scale services independently • Quickly adopt new AWS services Exploit Microservices to …
  46. 46. • Inability to easily/safely try new algorithms or patterns • Inability to quickly adopt disruptive technologies Problem: Lack of Technical Innovation • To encourage vertical decoupling of components • Evolve individual services quickly without interfering with other parts of an application Exploit Microservices to …
  47. 47. Evolving to Microservices
  48. 48. Microservices may not be the right choice for you. Image: http://insec.in/blog/2015/01/09/discounts-ethical-hacking-course-in-kolkata/shocked-woman-1/
  49. 49. Before Adopting Microservices • Are you are a startup? • Is this a brand new green field project? • Do you have a deep understanding of the domain? • Is your organisational structure compatible? • Have you adopted DevOps practices? Consider these questions …
  50. 50. “A microservices-first approach for a brand new project that we didn’t fully understand the domain for led to a lot of unexpected complexity. We are however, having great success on another project refactoring an existing monolithic service into microservices.” Mark Bond (Group Architect, Dominos Pizza Enterprises)
  51. 51. Mo’ services, mo’ problems The Notorious B.I.G. (Influential East-Coast Software Architect) Image: http://www.neontommy.com/news/2014/03/notorious-big-top-ten-songs
  52. 52. Focus on DevOps and Automation • Even a medium scale microservices architecture (10s or 100s of services) is difficult to manage by hand • Invest in automating EVERYTHING • Code builds and testing (CI) • Code deployments to all environments (CD) • Operational monitoring • CloudWatch Metrics, CloudWatch Logs, custom dashboards etc. • A/B testing, function toggling
  53. 53. Focus on Your Organisation • Evolve team sizes and responsibilities • Moving towards smaller, cross-functional teams • With cradle-to-grave responsibilities • Integrate Product Management, QA, Ops, etc.
  54. 54. Focus on Your Services • Business capability, rather than technical function • Everything fails, all the time • retry, fail-over and service down scenarios • the circuit-breaker pattern • Netflix Hystrix • Centralized metrics and logging collection
  55. 55. Conclusion
  56. 56. µ Summary 7 tenets 7 architecture patterns 8 business problems 6 technical problems 1 big warning 3 tips for evolving 13 awesome jokes (at least)
  57. 57. What You Should Do Next µ AWS Lambda Amazon API Gateway Identify problems Hunt MonolithsChampion Microservices Get Help
  58. 58. Resources • Microservices – Martin Fowler & James Lewis • http://martinfowler.com/articles/microservices.html • Introduction to Microservices – Chris Richardson • https://www.nginx.com/blog/introduction-to-microservices/ • Are You Well Architected? – AWS Blog • https://aws.amazon.com/blogs/aws/are-you-well-architected/ • Netflix Hystrix • https://github.com/Netflix/Hystrix
  59. 59. Online Labs & Training Gain confidence and hands-on experience with AWS. Watch free Instructional Videos and explore Self-Paced Labs Instructor Led Classes Learn how to design, deploy and operate highly available, cost-effective and secure applications on AWS in courses led by qualified AWS instructors Validate your technical expertise with AWS and use practice exams to help you prepare for AWS Certification AWS Certification More info at http://aws.amazon.com/training
  60. 60. Thank You for Attending AWS Innovate We hope you found it interesting! Do provide us with your feedback for the session and complete the feedback form. Let us know your thoughts of today’s event and how we can improve the event experience for you in the future.

×