Aller au contenu

L'architecture MACH, pourquoi faire?

Quels sont les avantages qu'offrent l'architecture MACH dans la création d'applications ?

Pourquoi franchir le cap de l'architecture MACH?

L'architecture MACH permet de concevoir des applications modernes qui soient résiliantes, scalables, modulaires et facilement maintenables.

Microservices

Les microservices étant indépendants, l'application en devient modulaire. De ce fait, il n'est pas nécessaire de mettre à niveau l'intégralité de l'application pour le besoin d'un seul microservice. Par ailleurs, la mise à jour d'un microservice aura un impact et un risque minime sur le reste de l'application.

Exemple métaphorique

Vous avez le choix entre un smartphone entièrement modulaire ou un smartphone totalement "verrouillé". Lequel choisiriez-vous ?

Approche microservices : Le téléphone modulaire vous permet de pouvoir changer la batterie, la mémoire, la carte sim, l'écran, voire même l'OS selon vos besoins ou vos envies.

Approche monolithe : Les composants du téléphones ne sont pas indépendants les uns des autres. La batterie tombe en panne, vous pouvez racheter un téléphone complet!

API-First

Cette stratégie permet d'isoler et de définir le besoin métier au travers des APIs exposées. Cela permet par exemple de pouvoir valider le besoin métier sans attendre qu'un front-end soit développé. L'intérêt est donc l'agilité en cas d'évolution dans le besoin exprimé.

Exemple métaphorique

Imaginez que votre besoin est simplement de retirer de l'argent en liquide. Grâce à l'API first, la banque comprend ce besoin et peut vous le fournir de différentes manières : au guichet ou en borne automatique. Peu importe la manière dont le service vous est offert, vous devez pouvoir accéder à ce service. La manière dont le service est fourni doit être indépendant de ce que doit faire le service et l'approche API-First permet de se concentrer en priorité sur le service à fournir.

Cloud-native

En comparaison avec les applications de type "monolithe", le coût du déploiement des applications cloud-native est très bas et bien plus fiable. Par ailleurs, il devient facile d'allouer des ressources en fonction des pics de demande.

Exemple métaphorique

Vous voulez construire... Poudlard. Bon, une maquette hein ! Supposons que vous le fassiez en Lego. On pourrait dire que votre projet est "cloud-native" dans le sens où chaque pièce de Lego est relativement standard et donc remplaçable. Les Legos ont justement été conçus pour s'adapter au changement et pour pouvoir créer de la modularité. Si une pièce de Lego est défaillante, il est aisé de la remplacer, et si on n'a pas exactement la bonne taille, il est facile d'assembler deux pièces pour n'en faire qu'une.

Headless

Le front-end et le back-end sont complètement indépendants. Une fois l'API décidée, le front-end peut être implémenté sans attendre le back-end. De même, le back-end offrant une API, peut être testé et validé sans attendre qu'un front-end soit disponible pour l'appeler. Cela améliore donc grandement l'agilité des équipes de développement ainsi que leur réactivité.

Exemple métaphorique

Vous êtes metteur en scène ! Vous êtes donc en charge du rendu de la pièce de théâtre finale. L'approche API First dirait qu'il n'y a pas besoin d'attendre que les costumes soient prêts pour faire répéter les comédiens. Il suffit de donner les mesures (la spécification) au costumier (le front-end) en fonction des comédiens pour que le costumier puisse travailler. De même, les comédiens (le back-end) peuvent répéter sans avoir besoin de revêtir leurs costumes !

Conclusion : L'architecture MACH pour des projets modernes

L'architecture MACH permet de se concentrer sur les besoins métiers tout en modularisant les briques permettant de répondre à ce besoin. Grâce à l'approche API-First, ce dernier est en effet au centre des préoccupations. Cette architecture met également en surbrillance les problématiques de pics de demande, de scalabilité et de continuité de service. Elle y répond via sa composante de cloud-native et de microservices. Les principaux objectifs de cette architecture sont donc : scalabilité, robustesse, indépendance des composants, modularité et approche orientée métier.

Dernier