Skip to content

Instantly share code, notes, and snippets.

@dfparker2002
Forked from remibantos/microservices.md
Created November 15, 2019 06:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dfparker2002/8e8140ebbdb989f0b298d20c358c961b to your computer and use it in GitHub Desktop.
Save dfparker2002/8e8140ebbdb989f0b298d20c358c961b to your computer and use it in GitHub Desktop.
Microservices - Cheat sheet

Microservices - Cheat sheet

Based on Microservices presentation by Martin Fowler recorded at GOTO Berlin 2014.

Common caracteristics

  1. Components (= independently upgradable, replaçable) communicating through services (instead of libs for monoliths)
  2. Organized around business capabilities
  3. Smart endpoints and dumb pipes. Routing logic is managed by end-points
  4. Decentralized data management. Each Microservice manages its own data
  5. Infrastructure automation. Automatic delivery, Continuous deployment and monitoring tools are necessary
  6. Designed for failure. You have to design thinking about faults and unavailibility of one or many Microservices
  7. Evolutive design

MicroService vs SOA

  • SOA, different definitions for different people. For some of them, this means ESB. But ESB are not compatible with third Microservices common caracteristic.
  • MicroServices ⊂ SOA. Microservices architecture is a subset of SOA.

Main advantages

  • Allows different technologies per components
  • Component internal evolution minimise impacts compared to a functionnality or module evolution within a Monolith
  • Different Microservices deployed on different machines compared to a Monolith cluster. If Microservice A is more loaded than B, A can be scaled horizontally but not B
  • Feature teams organization (Catalog, order management, ...) compared to teams organized by technologies (DBA, .Net Devs, ...)
  • No unique database mess which leads to hard model refactoring, deadlocks between different functionalities.
  • Platform / Technologies best suited for a specific Microservice

Monolith vs MicroService

Monolith

  • Simplicity
  • Consistence
  • Inter-module refactoring

Microservice

  • Partial deployment
  • Avaibility (If A Microservice fails, users still can use a fonctionnality managed by B, with a design for failure)
  • Preserve modularity
  • Platform / Technology best suited

Prerequisites

  • Rapid provisioning (rapid environment set-up)
  • Basic monitoring
  • Rapid applications deployment
  • Devops culture

Links

Microservices - Martin Fowler

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment