AWS Innovate: Smaller IS Better – Exploiting Microservices on AWS, Craig Dickson
1. Smaller IS Better - Exploiting
Microservices on AWS
Craig S. Dickson, Solutions Architect, Amazon Web Services
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. Who am I?
• Solutions Architect at AWS since 2012
• Software Engineer / Architect / Manager prior to that
• Based in Brisbane, Australia
4. Who are you?
• Architect
• Developer
• SysOps / Server Admin / Networking
• Development Manager
• CTO
8. “Microservices are the first post
DevOps revolution architecture”
– Neal Ford
(Director, Software Architect, and
Meme Wrangler at ThoughtWorks)
Image: http://nealford.com/bio
10. What’s wrong with a monolith?
Self Contained Tightly Coupled Lacks Modularity
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.
13. “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
14. 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?
15. 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)
16. 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
17. 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
26. 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
27. The Hybrid Microservice API
Amazon API
GatewayClients
HTTP
REST
Amazon
EC2
AWS
Lambda
Lambda
Blueprints
Amazon ECS
Elastic Load
Balancing
28. 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
30. • 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 …
31. 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
32. • 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 …
33.
34. “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
35. • 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 …
36. • 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 …
37. • 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 …
39. • 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 …
40. • 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 …
42. "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
43. “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
44. • 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 …
45. • 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 …
46. • 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 …
47. • 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 …
48. • 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 …
50. 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/
51. 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 …
52. “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)
54. 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
55. 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.
56. 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
58. µ
Summary
7 tenets
7 architecture patterns 8 business problems
6 technical problems 1 big warning
3 tips for evolving 13 awesome jokes (at least)
59. What You Should Do Next
µ
AWS Lambda Amazon API Gateway Identify problems
Hunt MonolithsChampion Microservices Get Help
60. 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
61. 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
62. 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.