28
Microservices In Practice Irakli Nadareishvili, Director of Strategy, API Academy CA Technologies

MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

Microservices In Practice

Irakli Nadareishvili,

Director of Strategy, API Academy

CA Technologies

Page 2: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

2 ©2015CA.ALLRIGHTSRESERVED. inadarei

Page 3: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

3 ©2015CA.ALLRIGHTSRESERVED. inadarei

But, why?

Page 4: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

4 ©2015CA.ALLRIGHTSRESERVED. inadarei

Microservices can greatly improve your capabilities in:

CONTINUOUSDELIVERY

PRODUCINGEVOLVABLEANDSCALABLEARCHITECTURE

ENABLINGAGILESOFTWAREDEVELOPMENTLIFECYCLE

1

2

3

Page 5: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

5 ©2015CA.ALLRIGHTSRESERVED. inadarei

Page 6: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

6 ©2015CA.ALLRIGHTSRESERVED. inadarei

COMMUNICATEUSINGLANGUAGE-AGNOSTICAPIS

AREINDEPENDENTLYDEPLOYABLEVIAUNIVERSALCONTAINERS

PRACTICEDECENTRALIZEDDATAMANAGEMENT

1

2

3

Microservices is an architectural style, in which a complex software application is de-composed into smaller components ("micro services") that:

Page 7: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

7 ©2015CA.ALLRIGHTSRESERVED. inadarei

Challenge:De-centralized Data Management

Page 8: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

8 ©2015CA.ALLRIGHTSRESERVED. inadarei

Tool 1:Think of Capabilities,

not: Data Models

Page 9: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

9 ©2015CA.ALLRIGHTSRESERVED. inadarei

Bounded Contexts

Page 10: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

10 ©2015CA.ALLRIGHTSRESERVED. inadarei

Eric Evans: Bounded ContextsAn application domain consists of multiple bounded contexts. Residing within each BC are models that do not need to be shared outside, as well as other models that are shared externally.

Page 11: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

11 ©2015CA.ALLRIGHTSRESERVED. inadarei

Bounded Context = Capabilities.

“In your organization, you should be thinking not in terms of data that is shared, but about the capabilities those contexts provide the rest of the domain.”

– Sam Newman, Building Microservices

Page 12: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

12 ©2015CA.ALLRIGHTSRESERVED. inadarei

Caution: DDD and Bounded Context Identification

Are Far From Trivial or Easy Tasks

Page 13: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

13 ©2015CA.ALLRIGHTSRESERVED. inadarei

Domain-Driven Design – More Information

Eric Evans: "Domain-Driven Design: Tackling Complexity in the Heart of Software" - 2003

Vaughn Vernon: "Implementing Domain-Driven Design" - 2013

Scott Millett: "Patterns, Principles, and Practices of Domain-Driven Design" - 2015

Page 14: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

14 ©2015CA.ALLRIGHTSRESERVED. inadarei

Tool 2: Event Sourcing & CQRS

Page 15: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

15 ©2015CA.ALLRIGHTSRESERVED. inadarei

Event SourcingUse an append-only store to record the full series of events that describe actions taken on data in a domain, rather than storing just the current state, so that the store can be used to materialize the domain objects.

https://msdn.microsoft.com/en-gb/library/dn589792.aspx

Page 16: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

16 ©2015CA.ALLRIGHTSRESERVED. inadarei

Command and Query Responsibility Segregation (CQRS)

Segregate operations that read data from operations that update data by using separate interfaces.

This pattern can maximize performance, scalability, and security; support evolution of the system over time through higher flexibility; and prevent update commands from causing merge conflicts at the domain level.

https://msdn.microsoft.com/en-us/library/dn568103.aspx

Page 17: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

17 ©2015CA.ALLRIGHTSRESERVED. inadarei

Deposit Money Microservice

Deposit MessageQueue EventStore(e.g.Cassandra)

Transactions List/Query Microservice

Query IndexStore(e.g.ElasticSearch)

Validation

Page 18: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

18 ©2015CA.ALLRIGHTSRESERVED. inadarei

What About Them Transactions?

Page 19: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

19 ©2015CA.ALLRIGHTSRESERVED. inadarei

Tool 3: Sagas (Long-LivedDistributedTransactions)

Page 20: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

20 ©2015CA.ALLRIGHTSRESERVED. inadarei

Booking Travel

Page 21: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

21 ©2015CA.ALLRIGHTSRESERVED. inadarei

No Shared State = No Distr. Transactions

Source:http://vasters.com/clemensv/2012/09/01/Sagas.aspx

We ♥ Sagas!Designedby:HectorGarcia-Molina&KennethSalem,Princeton,1987

Page 22: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

22 ©2015CA.ALLRIGHTSRESERVED. inadarei

One More Thing…

Page 23: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

23 ©2015CA.ALLRIGHTSRESERVED. inadarei

Page 24: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

24 ©2015CA.ALLRIGHTSRESERVED. inadarei

“Bounded context should be asbig as it needs to be in order tofully express its completeUbiquitous Language”

– Vaughn Vernon, Implementing Domain –Driven Design.

Page 25: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

25 ©2015CA.ALLRIGHTSRESERVED. inadarei

Many start coarse-grained and become more granular over time.

That said, companies that have been building Microservices for long, report that they end with hundredsof Microservices.

Page 26: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

26 ©2015CA.ALLRIGHTSRESERVED. inadarei

Where do we gethundreds of servers?

Page 27: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

27 ©2015CA.ALLRIGHTSRESERVED. inadarei

How do we afford so many servers?

Page 28: MicroservicesIn Practice - Irakli NadareishviliMicroservicesIn Practice Irakli Nadareishvili, ... . inadarei Microservices can greatly improve your capabilities in: CONTINUOUS DELIVERY

DirectorofStrategy,APIAcademyIrakliNadareishvili

@inadarei

@apiacademy

@cainc