The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

37
Matteo Codogno: I am a software developer at WellD, with a particular focus on Java EE technologies. I love to experiment with new technologies, open source projects and design Software architectures. Simone D’Avico: I recently attained a Master of Informatics at USI, Lugano, and joined the software development team at WellD shortly afterwards. I am particularly passionate about functional programming and software architecture. 1 ABOUT US

Transcript of The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

Page 1: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

• Matteo Codogno: I am a software developer at WellD, with a particular focus on Java EE technologies. I love to experiment with new technologies, open source projects and design Software architectures.

• Simone D’Avico: I recently attained a Master of Informatics at USI, Lugano, and joined the software development team at WellD shortly afterwards. I am particularly passionate about functional programming and software architecture.

1ABOUT US

Page 2: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

DON’T PANIC !THE BIRTH AND EVOLUTION OF A MICROSERVICES ARCHITECTURE

Lugano Tech Talk Meetup, March 2017

Page 3: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

3THE PRODUCT

Source 1

Source N

Orders repository

Distributed File

System

Search

API

Page 4: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

+ Few features

- Huge, distributed document repository (file system based)

- Complex search criteria involving an algorithm to determine which paths to explore during the search

+ Granular scalability was a key concern

+ We had a container orchestrator available

4IDEA: LEVERAGE MICROSERVICES

Page 5: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17
Page 6: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17
Page 7: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

7HOW DO WE DESIGN A MICROSERVICES ARCHITECTURE ?

Monolithic

Application

Service 1

Service 2

Service 3

Page 8: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

8THE MONOLITH

UsersGroups

Auth

Orders

Products

Search

Files

SOAP API

SettingsUI

Auth

UserManager

SecurityService

OrderService SearchServiceSettingManger

User

Group

Role

Order

OrderType

Product

FileFaq

News

Page 9: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

9THE MONOLITH

UsersGroups

Auth

Orders

Products

Search

Files

SOAP API

SettingsUI

Auth

UserManager

SecurityService

OrderService SearchServiceSettingManger

User

Group

Role

Order

OrderType

Product

FileFaq

News

Authentication Orders Search Settings UI

Page 10: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

• User authentication

• User authorisation

• CRUD user, group and role

10AUTH MICROSERVICE

Auth

Page 11: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

11ORDERS MICROSERVICE

• Load orders from external

sources

• Provide an API to access orders

details

Auth

Orders

Page 12: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

12SEARCH MICROSERVICE

• Complex search into file system

to extract order files

• Download files

Auth

Orders

Search

Page 13: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

13AUTHENTICATION IN A DISTRIBUTED CONTEXT

How can microservices authenticate external requests?

:( Replicate Auth service logic into every microservice

:) Leverage the auth service to handle the authentication for other microservices

OAuth2 (Token-based)

Auth

Orders

Search

Page 14: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

14CURRENT STATE OF THE SYSTEM

OAuth2

Auth

Orders

Search

Page 15: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

HOW DO MICROSERVICES TALK TO EACH OTHER?

INTER SERVICE COMMUNICATION

Page 16: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

16HOW CAN MICROSERVICES FIND EACH OTHER?

Auth

Orders

Search

Page 17: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

IF YOU DON'T KNOW WHERE YOU GO, THEN IT DOESN'T MATTER WHICH PATH YOU TAKE.

Cheshire Cat

17WHERE ARE YOU?

Page 18: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

18DISCOVERY MICROSERVICE

Orders

Auth

Search

Page 19: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

19EUREKA !!

Orders

Auth

Search

Discovery

Page 20: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

20UI MICROSERVICE

Auth Orders Search UI

Discovery

Page 21: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

21GATEWAY MICROSERVICE

• Single entry point

• Routing

• Solves CORS

• Reverse proxying

• Downstream authentication

• Request filtering

Auth Orders Search UI

Discovery

Service Gateway

Page 22: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17
Page 23: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

23SCALING MICROSERVICES CONFIGURATION

DEV

Page 24: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

24SCALING MICROSERVICES CONFIGURATION

DEV TEST

Page 25: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

25SCALING MICROSERVICES CONFIGURATION

DEV

QA

TEST

Page 26: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

26SCALING MICROSERVICES CONFIGURATION

DEV

QA

TEST

PROD

Page 27: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

27SCALING MICROSERVICES CONFIGURATION

DEV

QA

TEST

PROD

4 ENVIRONMENTS

X

N MICROSERVICES

=

CONFIGURATION MADNESS!

Page 28: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

28CONFIG MICROSERVICES

Auth Orders Search UI

Discovery

Config

Gateway

Page 29: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

29MICROSERVICES ARCHITECTURE WORKS!

Page 30: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

+ Modularity

+ Flexibility

+ Scalability

+ Decoupling

- Additional overhead: services > features!

- Scalability

- Decoupling

30TAKEAWAY MESSAGES

Page 31: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

The failure of one service can potentially cascade to other services throughout the application.

31CASCADING FAILURE

Consumer

Consumer

Service A

Service B

Service C

Service D

Page 32: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

The failure of one service can potentially cascade to other services throughout the application.

32CASCADING FAILURE

Consumer

Consumer

Service A

Service B

Service C

Service D

Page 33: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

The failure of one service can potentially cascade to other services throughout the application.

33CASCADING FAILURE

Consumer

Consumer

Service A

Service B

Service C

Service D

Page 34: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

The failure of one service can potentially cascade to other services throughout the application.

34CIRCUIT BREAKING

A B

A B

A B

Timeout, Repeated Failure

Available

Loaded/Unavailable

Circuit Breaking

Request

Response

Request

Fallback

Page 35: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

Load balancing improves the distribution of workloads across multiple computing resources.

35LOAD BALANCING

A

A

Bal

ance

r B1B2

BN

B1B2

BN

Dedicated Balancer

Client-Side Balancer

Discovery

Page 37: The birth and evolution of a Microservices architecture - Lugano Tech Talk 03/'17

…SO LONG, AND THANKS FOR ALL THE FISH !!