Présentation
Je reste dans les vieux buzzwords en regardant un peu du côté des MicroServices et ServerLess. A ce stade, j’ai un peu de mal à bien faire la différence entre les deux et à bien ce que cela représente…
Un peu de lecture
Comme d’habitude un peu de lecture :
- https://ippon.developpez.com/tutoriels/spring/microservices-netflixoss/
- https://martinfowler.com/articles/microservices.html
- https://martinfowler.com/bliki/TolerantReader.html
- https://www.edureka.co/blog/what-is-microservices/
- https://www.edureka.co/blog/microservices-tutorial-with-example#Hands-On
- https://blog.myagilepartner.fr/index.php/2017/01/03/mettre-en-place-une-plateforme-microservices/
- https://martinfowler.com/articles/serverless.html
- Une traduction: https://blog.ippon.fr/2017/06/09/les-architectures-serverless/
- https://blog.osones.com/serverless-avec-aws-cas-concret.html
- https://hackernoon.com/what-is-serverless-architecture-what-are-its-pros-and-cons-cc4b804022e9
Micro-Services
A ce stade, je vois les micro-services comme du SOA plus précis avec un découplage plus fort. J’aime assez une définition trouvé dans le premier lien d’Andrian Cockoft :
Loosely coupled service oriented architecture with bounded contexts.
Adrian Cockroft
En fait, d’un première abord, je pense que je me suis laissé abuser par micro : cela ne veut pas dire “une seule fonctionnalité”. En fait, l’idée est de regrouper / découper des éléments qui font sens ensemble.
A service may consist of multiple processes that will always be developed and deployed together, such as an application process and a database that’s only used by that service.
Deuxième erreur, le stockage des données … Je ne voyais pas comment cela pouvait fonctionner si deux “microservices” utilisent la même base : comment assurer la consistance des données ?
En fait, il semble que dans ce mode, on accepte cette inconsistance et les corrections qui vont avec. Mais encore une fois, tout est une question de coût :
The trade-off is worth it as long as the cost of fixing mistakes is less than the cost of lost business under greater consistency.
ServerLess
La lecture des articles permet de se donner une vision de cette notion. Spécialement celui-ci :
https://martinfowler.com/articles/serverless.html
Par contre, il est difficile de donner une définition car c’est à la fois peu de choses et beaucoup de choses.
Donc ma vision (toute relative et basée sur quelques heures de lecture) …
une architecture servless est une architecture basée sur des composants Faas (Function as a service) ou Baas (BackEnd as a service). L’idée est de composée notre architecture avec des composants existants et finalement de déléguer l’infra à à des fournisseurs de services.
C’est d’ailleurs assez intéressant de voir que tous les articles prennent en exemple les services d’Amazon et dans une moindre mesure Azure …