May 16, 2016 #AgileInTheCloud Extreme Architecture The Agile Roots of Microservices Matt McLarty Vice President, API Academy CA Technologies @mattmclartybc
May 16, 2016
#AgileInTheCloud
Extreme ArchitectureThe Agile Roots of Microservices
Matt McLartyVice President, API AcademyCA Technologies@mattmclartybc
2 #AgileInTheCloud
Topics in this talk…
Background on CA and the API Academy
What are microservices and where did they come from?
Why do microservices matter?
How and when can an organization get started with microservices?
Who has implemented microservices effectively?
Where are the trouble spots?
3 #AgileInTheCloud
Some background…
4 #AgileInTheCloud
Who am I?
5 #AgileInTheCloud
CA Technologies in Vancouver
2002-2013 2013-Now
7 #AgileInTheCloud
What are “microservices” and where did they come from?
8 #AgileInTheCloud
Microservices
“Microservices are a thing these days”
- Phil Calçado
9 #AgileInTheCloud
The first thing everyone reads about microservices…
http://martinfowler.com/articles/microservices.html
10 #AgileInTheCloud
Microservices = Service-Oriented Architecture?
“For us service orientation means encapsulating the data with the business logic that operates on the data, with the only access through a published service interface.”- Werner Vogels, AWS CTOhttps://queue.acm.org/detail.cfm?id=1142065
“Microservices is SOA with emphasis on small ephemeral components.”- Adrian Cockroft, Battery Ventures, ex-Netflixhttps://twitter.com/adrianco/status/542850261782237184
11 #AgileInTheCloud
Microservice principles
Decompose into discrete services to enable continuous delivery
Reduce dependencies to facilitate frequent change
Remove bottlenecks to speed up development
Developed and supported by small, empowered, business-aligned teams
Break the system down into understandable and manageable parts
Reduce the amount of unchanged code that gets deployed
12 #AgileInTheCloud
These are Agile principles!
Decompose into discrete services to enable continuous delivery
Reduce dependencies to facilitate frequent change
Remove bottlenecks to speed up development
Developed and supported by small, empowered, business-aligned teams
Break the system down into understandable and manageable parts
Reduce the amount of unchanged code that gets deployed
13 #AgileInTheCloud
The Agile Progression
Agile Software Development
Continuous Delivery
DevOps
Microservice Architecture
14 #AgileInTheCloud
Microservices and Agile
Microservice architecture is Agile software architecture
15 #AgileInTheCloud
Agile Software Architecture
“If we look at the characteristics of an agile software architecture, we tend to think of something that is built using a collection of small, loosely coupled components/services that collaborate together to satisfy an end-goal. This style of architecture provides agility in a number of ways. Small, loosely coupled components/services can be built, modified and tested in isolation, or even ripped out and replaced depending on how requirements change. This style of architecture also lends itself well to a very flexible and adaptable deployment model, since new components/services can be added and scaled if needed.”
- Simon Brown, September 2013http://www.codingthearchitecture.com/2013/09/03/what_is_agile_software_architecture.html
16 #AgileInTheCloud
Microservice Definitions
A microservice is an independently deployable component of bounded scope that supports interoperability through message-based communication. Microservice architecture is a style of engineering highly-automated, evolvable software systems made up of capability-aligned microservices.
17 #AgileInTheCloud
Why are organizations using microservices?
18 #AgileInTheCloud
Business Value Stories“We can scale our operation independently, maintain unparalleled system availability, and introduce new services quickly without the need for massive reconfiguration.”
• Werner Vogels, Amazon (2006) https://queue.acm.org/detail.cfm?id=1142065
“…the next generation [architecture] that we are building will give Netflix a strong foundation to meet the needs of our massive and growing scale, enabling us to delight our global audience.”
• Netflix (2015) http://techblog.netflix.com/2015/01/netflixs-viewing-data-how-we-know-where.html
“Lessens dependencies between teams - resulting in faster code to production.”• Adrian Trenaman, Gilt (2015) http://www.infoq.com/news/2015/04/scaling-microservices-gilt
“With the new architecture framework, we were able to reduce our lead time for new features to something that…was much more acceptable for a company trying to play in the highly competitive music industry.”
• Phil Calçado, SoundCloud (2015) http://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.html
19 #AgileInTheCloud
The goal of microservices
Speed and safety at scale
20 #AgileInTheCloud
Microservice Architecture Maturity Model
Independent Deployability
Polyglotism
Independent Manageability
Testability
Organizational Alignment
Composability
Replaceability
Efficiency
Agility
Comprehensibility
Resiliency/ Availability
Runtime Scalability
Modularized“Establish the foundation”
Cohesive“Design the services”
Systematized“Design the system”
Speed SafetyA microservice architecture that is…
Scal
e &
Com
plex
ity
21 #AgileInTheCloud
Getting started with a design-based approach to microservices
22 #AgileInTheCloud
23 #AgileInTheCloud
24 #AgileInTheCloud
25 #AgileInTheCloud
Outcomes
26 #AgileInTheCloud
Outcomes
Services
27 #AgileInTheCloud
Outcomes
Services
Foundation
28 #AgileInTheCloud
Outcomes
Services
System
Foundation
29 #AgileInTheCloud
Outcomes
Services
System
Organization
Foundation
30 #AgileInTheCloud
Future
Outcomes
Services
System
Organization
Foundation
31 #AgileInTheCloud
Microservices in practice
32 #AgileInTheCloud
Microservices at Hootsuite
Outcomes
Increase development velocity and scale
Allow more
operational flexibility
Services
Distributed Domain Driven
Design and contracts
Tiered services:
Data, Functional,
Façade
Foundation
Skyline platform
for cross-
service communication
System
Dynamic service
discovery at
runtime and
design time
Organization
Product-aligned teams of 5-7
people, cross-functional
“guilds”, central platform team
Governance by “eventual consistency”
Future
Technology
Architecture
Group for cross-
cutting concerns
33 #AgileInTheCloud
What to look out for
34 #AgileInTheCloud
Microservices Dependencies
Cloud infrastructure
Continuous delivery
DevOps culture
System management
Adapted from http://martinfowler.com/bliki/MicroservicePrerequisites.html
35 #AgileInTheCloud
Potential Pitfalls
Overemphasizing the technology
Underemphasizing the system
Going for the “Big Bang”
Designing for “Done”
36 #AgileInTheCloud
Blind Spots
System Monitoring and Management
Service Design and
Orchestration
Security and Policy
Enforcement
Integrated Testing
37 #AgileInTheCloud
Summary
38 #AgileInTheCloud
In summary…
Microservice architecture is Agile software architecture
Microservices can bring speed and safety at scale
Take a design-based approach to microservices
Early microservice adopters take a holistic approach
Be aware of pre-requisites, pitfalls and blind spots
39 #AgileInTheCloud
Questions?
40 #AgileInTheCloud
Thank you!