Microservices

Why and when you should consider it...

...And when you shouldn't.

Definition

In short, the microservice architectural style 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.


-- James Lewis and Martin Fowler

About me

  • Lead Engineer at 8 Securities
  • Back-End development (mainly .NET, .NET Core)
  • DevOps / Cloud Architecture and Web Services (Azure & AWS)
  • Agile development and project management

What is a Monolith

Resources

Service Layer

Repositories

Data Mappers / ORMs

Gateways

Domain

Http Client

Simple design

Easy communications

Why need more...

What is a Monolith

...And it scales.

Load Balancer

Cons of Monolith

  • Software
    • Maintenance
    • Stack / framework / language
  • Hardware
    • Slow and risky deployment
    • Slow scaling
  • Human
    • Power centralization
    • Bureaucracy

How To MicroService

Resources

Service Layer

Repositories

Data Mappers / ORMs

Gateways

Domain

Http Client

Ordering

Payment

Product

Shipment

How To MicroService

Ordering

Payment

Product

Shipment

Ordering

Payment

Product

Shipment

How To MicroService

Ordering

Payment

Product

Shipment

How To MicroService

Ordering

Payment

Product

Shipment

Product

Payment

Shipment

Shipment

Ordering

PROS of MICROSERVICES

  • Software
    • Less maintenance
    • Independent stack / framework / language
  • Hardware
    • Independent / faster / safer deployment
    • Independent / faster scaling
  • Human
    • Less power centralization
    • Less bureaucracy

Cons of MICROSERVICES

  • Software
    • Asynchronous messaging needed
    • Needs better software architect skills to set up
  • Hardware
    • Continuous deployment more complex​ to set up
    • More network calls
    • Needs better DevOps skills
  • Human
    • Migration might encounter resistance
    • You might have to fire a few middle managers

CI/CD For MICROSERVICES

Build Server

Code Repo

Build

Run unit tests

Clone

Run integration tests

https://my.microservice.com/

Swap

Destroy

https://my.microservice.com/

Webhook

Microsoft - Microservices

By Ambroise Couissin

Microsoft - Microservices

  • 94