the agile roots of microservices

40
May 16, 2016 #AgileInTheCloud Extreme Architecture The Agile Roots of Microservices Matt McLarty Vice President, API Academy CA Technologies @mattmclartybc

Upload: matt-mclarty

Post on 15-Feb-2017

513 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: The Agile Roots of Microservices

May 16, 2016

#AgileInTheCloud

Extreme ArchitectureThe Agile Roots of Microservices

Matt McLartyVice President, API AcademyCA Technologies@mattmclartybc

Page 2: The Agile Roots of Microservices

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?

Page 3: The Agile Roots of Microservices

3 #AgileInTheCloud

Some background…

Page 4: The Agile Roots of Microservices

4 #AgileInTheCloud

Who am I?

Page 5: The Agile Roots of Microservices

5 #AgileInTheCloud

CA Technologies in Vancouver

2002-2013 2013-Now

Page 6: The Agile Roots of Microservices

6 #AgileInTheCloud

The API Academy

http://apiacademy.co

Page 7: The Agile Roots of Microservices

7 #AgileInTheCloud

What are “microservices” and where did they come from?

Page 8: The Agile Roots of Microservices

8 #AgileInTheCloud

Microservices

“Microservices are a thing these days”

- Phil Calçado

Page 9: The Agile Roots of Microservices

9 #AgileInTheCloud

The first thing everyone reads about microservices…

http://martinfowler.com/articles/microservices.html

Page 10: The Agile Roots of Microservices

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

Page 11: The Agile Roots of Microservices

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

Page 12: The Agile Roots of Microservices

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

Page 13: The Agile Roots of Microservices

13 #AgileInTheCloud

The Agile Progression

Agile Software Development

Continuous Delivery

DevOps

Microservice Architecture

Page 14: The Agile Roots of Microservices

14 #AgileInTheCloud

Microservices and Agile

Microservice architecture is Agile software architecture

Page 15: The Agile Roots of Microservices

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

Page 16: The Agile Roots of Microservices

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.

Page 17: The Agile Roots of Microservices

17 #AgileInTheCloud

Why are organizations using microservices?

Page 18: The Agile Roots of 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

Page 19: The Agile Roots of Microservices

19 #AgileInTheCloud

The goal of microservices

Speed and safety at scale

Page 20: The Agile Roots of Microservices

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

Page 21: The Agile Roots of Microservices

21 #AgileInTheCloud

Getting started with a design-based approach to microservices

Page 22: The Agile Roots of Microservices

22 #AgileInTheCloud

Page 23: The Agile Roots of Microservices

23 #AgileInTheCloud

Page 24: The Agile Roots of Microservices

24 #AgileInTheCloud

Page 25: The Agile Roots of Microservices

25 #AgileInTheCloud

Outcomes

Page 26: The Agile Roots of Microservices

26 #AgileInTheCloud

Outcomes

Services

Page 27: The Agile Roots of Microservices

27 #AgileInTheCloud

Outcomes

Services

Foundation

Page 28: The Agile Roots of Microservices

28 #AgileInTheCloud

Outcomes

Services

System

Foundation

Page 29: The Agile Roots of Microservices

29 #AgileInTheCloud

Outcomes

Services

System

Organization

Foundation

Page 30: The Agile Roots of Microservices

30 #AgileInTheCloud

Future

Outcomes

Services

System

Organization

Foundation

Page 31: The Agile Roots of Microservices

31 #AgileInTheCloud

Microservices in practice

Page 32: The Agile Roots of Microservices

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

Page 33: The Agile Roots of Microservices

33 #AgileInTheCloud

What to look out for

Page 34: The Agile Roots of Microservices

34 #AgileInTheCloud

Microservices Dependencies

Cloud infrastructure

Continuous delivery

DevOps culture

System management

Adapted from http://martinfowler.com/bliki/MicroservicePrerequisites.html

Page 35: The Agile Roots of Microservices

35 #AgileInTheCloud

Potential Pitfalls

Overemphasizing the technology

Underemphasizing the system

Going for the “Big Bang”

Designing for “Done”

Page 36: The Agile Roots of Microservices

36 #AgileInTheCloud

Blind Spots

System Monitoring and Management

Service Design and

Orchestration

Security and Policy

Enforcement

Integrated Testing

Page 37: The Agile Roots of Microservices

37 #AgileInTheCloud

Summary

Page 38: The Agile Roots of Microservices

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

Page 39: The Agile Roots of Microservices

39 #AgileInTheCloud

Questions?

Page 40: The Agile Roots of Microservices

40 #AgileInTheCloud

Thank you!