Searching...
Français
English
Español
简体中文
Français
Deutsch
日本語
Português
Italiano
한국어
Русский
Nederlands
العربية
Polski
हिन्दी
Tiếng Việt
Svenska
Ελληνικά
Türkçe
ไทย
Čeština
Română
Magyar
Українська
Bahasa Indonesia
Dansk
Suomi
Български
עברית
Norsk
Hrvatski
Català
Slovenčina
Lietuvių
Slovenščina
Српски
Eesti
Latviešu
فارسی
മലയാളം
தமிழ்
اردو
Building Microservices

Building Microservices

Designing Fine-Grained Systems
by Sam Newman 2015 280 pages
Technology
Programming
Computer Science
Écouter

Points clés

1. Microservices : Petits services autonomes qui travaillent ensemble

Les microservices sont de petits services autonomes qui travaillent ensemble.

Fondation des microservices. L'architecture des microservices repose sur le principe de développer des logiciels sous forme d'une suite de petits services indépendants. Chaque service se concentre sur une tâche spécifique, fonctionne dans son propre processus et communique via des mécanismes légers comme les API HTTP/REST. Cette approche permet une plus grande flexibilité, évolutivité et maintenabilité par rapport aux architectures monolithiques.

Avantages et défis. Les principaux avantages des microservices incluent :

  • Amélioration de la modularité
  • Évolutivité plus facile des composants individuels
  • Diversité technologique
  • Meilleure isolation des pannes
  • Cycles de déploiement plus rapides

Cependant, les microservices introduisent également des défis tels que :

  • Complexité opérationnelle accrue
  • Problèmes de systèmes distribués (par exemple, latence réseau, tolérance aux pannes)
  • Cohérence des données entre les services

2. Architecture évolutive : S'adapter aux exigences changeantes

Le rôle de l'architecte est de voir la situation dans son ensemble et de comprendre cet équilibre.

Adopter le changement. L'architecture évolutive met l'accent sur la nécessité pour les systèmes de s'adapter aux exigences changeantes au fil du temps. Cette approche reconnaît qu'il est impossible de prévoir tous les besoins futurs, et se concentre donc sur la création d'une base flexible qui peut évoluer.

Principes clés :

  • Changement incrémental : Faire de petites mises à jour fréquentes plutôt que de grandes mises à jour rares
  • Changement guidé : Utiliser des principes et des pratiques pour guider les décisions architecturales
  • Architectures multiples : Reconnaître que différentes parties du système peuvent évoluer à des rythmes différents

Les architectes dans ce modèle agissent davantage comme des urbanistes, établissant des lignes directrices et des contraintes, plutôt que de dicter chaque détail. Cela permet aux équipes de prendre des décisions locales tout en assurant la cohésion globale du système.

3. Modélisation des services : Définir les limites et les contextes

Nous concentrons les limites de nos services sur les limites commerciales, rendant évident l'emplacement du code pour une fonctionnalité donnée.

Conception pilotée par le domaine. Modéliser efficacement les services nécessite une compréhension approfondie du domaine commercial. La conception pilotée par le domaine (DDD) fournit des concepts précieux pour définir les limites des services :

  • Contextes délimités : Zones du domaine avec des limites claires
  • Langage ubiquitaire : Un langage commun partagé par les développeurs et les experts du domaine
  • Agrégats : Groupes d'objets de domaine traités comme une unité

Identifier les limites des services :

  • S'aligner sur les capacités commerciales
  • Encapsuler les données et les comportements
  • Minimiser les dépendances entre les services
  • Considérer la structure de l'équipe et les schémas de communication

Des limites bien définies conduisent à des services plus cohérents et à un couplage plus lâche entre eux, facilitant le développement et le déploiement indépendants.

4. Stratégies d'intégration : Choisir la bonne approche pour la communication

Soyez conservateur dans ce que vous faites, soyez libéral dans ce que vous acceptez des autres.

Importance de l'intégration. Une intégration efficace est cruciale pour que les microservices fonctionnent ensemble de manière transparente. Le choix de la technologie d'intégration a un impact significatif sur la flexibilité, les performances et la maintenabilité du système.

Principaux modèles d'intégration :

  • Communication synchrone : REST, gRPC
  • Communication asynchrone : Files de messages, diffusion d'événements
  • Passerelles API : Pour le routage et la composition des requêtes
  • Maillage de services : Pour gérer la communication entre services

Meilleures pratiques :

  • Utiliser des protocoles indépendants de la technologie (par exemple, HTTP)
  • Mettre en œuvre des lecteurs tolérants pour gérer les changements avec grâce
  • Concevoir pour l'échec avec des disjoncteurs et des cloisons
  • Envisager des architectures pilotées par les événements pour un couplage lâche

La bonne stratégie d'intégration dépend de votre cas d'utilisation spécifique, des exigences de performance et de l'expertise de l'équipe.

5. Fractionner le monolithe : Transition vers les microservices

Pensez à notre monolithe comme à un bloc de marbre. Nous pourrions tout faire exploser, mais cela se termine rarement bien. Il est beaucoup plus logique de le tailler progressivement.

Approche incrémentale. La transition d'une architecture monolithique vers des microservices se fait mieux progressivement. Cela permet aux équipes d'apprendre et de s'adapter tout en minimisant les risques.

Étapes pour fractionner un monolithe :

  1. Identifier les coutures dans la base de code existante
  2. Extraire les contextes délimités en modules séparés
  3. Refactoriser les structures de données et les bases de données partagées
  4. Créer des API pour la communication inter-modules
  5. Extraire les modules en services séparés
  6. Implémenter de nouvelles fonctionnalités sous forme de microservices

Défis à considérer :

  • Dépendances de données entre les services
  • Intégrité transactionnelle à travers les limites des services
  • Impact des performances de la communication réseau
  • Complexité opérationnelle de la gestion de multiples services

Commencez par les extractions les plus faciles et les moins risquées pour acquérir de la confiance et de l'expérience avant de s'attaquer aux parties plus complexes du système.

6. Techniques de déploiement : Assurer la fiabilité et l'évolutivité

Si faire quelque chose est juste mais difficile, nous devrions nous efforcer de rendre les choses plus faciles.

Déploiement automatisé. Un déploiement fiable et évolutif est crucial pour le succès des microservices. Les pratiques d'intégration continue et de livraison continue (CI/CD) sont essentielles pour gérer la complexité accrue des déploiements.

Principales techniques de déploiement :

  • Infrastructure en tant que code (IaC)
  • Conteneurisation (par exemple, Docker)
  • Plateformes d'orchestration (par exemple, Kubernetes)
  • Déploiements blue-green
  • Releases canary

Considérations de déploiement :

  • Découverte de services et gestion de la configuration
  • Surveillance et journalisation
  • Sécurité et contrôle d'accès
  • Migrations de bases de données et cohérence des données

Investissez dans les outils et l'automatisation pour rendre les déploiements plus faciles, plus rapides et plus fiables. Cela permet aux équipes de déployer fréquemment en toute confiance, réalisant ainsi tous les avantages de l'architecture des microservices.

7. Tester les microservices : Maintenir la qualité dans un système distribué

Plus il y a de pièces mobiles, plus nos tests peuvent être fragiles et moins ils sont déterministes.

Stratégie de test complète. Tester les microservices nécessite une approche multi-couches pour garantir à la fois la qualité des services individuels et le comportement global du système.

Pyramide de test pour les microservices :

  • Tests unitaires : Tests rapides et ciblés pour les composants individuels
  • Tests d'intégration : Vérifier les interactions entre les services
  • Tests de contrat : Assurer que les services respectent les interfaces convenues
  • Tests de bout en bout : Valider le comportement de l'ensemble du système

Défis de test :

  • Complexité accrue due à la nature distribuée
  • Gestion des données de test entre les services
  • Simulation d'environnements proches de la production
  • Gestion des interactions asynchrones

Mettez l'accent sur des boucles de rétroaction rapides avec des tests unitaires et d'intégration, tout en utilisant moins de tests de bout en bout, soigneusement choisis, pour valider les chemins critiques. Envisagez d'utiliser des contrats pilotés par les consommateurs pour gérer efficacement les dépendances des services.

8. Surveillance et sécurité : Maintenir les microservices en bonne santé et protégés

Une bonne journalisation, et spécifiquement la capacité d'agréger les journaux de plusieurs systèmes, ne concerne pas la prévention, mais peut aider à détecter et à récupérer des incidents.

Approche holistique. Une surveillance et une sécurité efficaces sont cruciales pour maintenir un écosystème de microservices en bonne santé. Ces aspects deviennent plus complexes et importants dans les systèmes distribués.

Meilleures pratiques de surveillance :

  • Journalisation centralisée et agrégation des journaux
  • Traçage distribué (par exemple, en utilisant des identifiants de corrélation)
  • Alertes en temps réel et tableaux de bord
  • Surveillance des performances des applications (APM)
  • Surveillance synthétique pour les chemins critiques

Considérations de sécurité :

  • Authentification et autorisation entre services
  • Passerelles API pour la sécurité des bords
  • Gestion des secrets
  • Segmentation du réseau
  • Audits de sécurité réguliers et tests de pénétration

Mettez en œuvre une stratégie de défense en profondeur, sécurisant à la fois le périmètre et les services individuels. Utilisez l'automatisation pour assurer l'application cohérente des politiques de sécurité à tous les services.

9. Loi de Conway : Aligner l'organisation et la conception du système

La loi de Conway souligne les dangers de tenter d'imposer une conception de système qui ne correspond pas à l'organisation.

Impact organisationnel. La loi de Conway stipule que la conception du système reflète les structures de communication au sein d'une organisation. Ce principe a des implications significatives pour l'architecture des microservices.

Aligner les équipes et les services :

  • Organiser les équipes autour des capacités commerciales
  • Donner aux équipes la responsabilité de bout en bout des services
  • Minimiser les dépendances entre les équipes
  • Favoriser une culture de collaboration et de responsabilité partagée

Considérations :

  • Taille et composition des équipes
  • Schémas de communication et outils
  • Processus de prise de décision
  • Développement des compétences et partage des connaissances

Reconnaissez que la structure organisationnelle et l'architecture du système sont interdépendantes. Faites évoluer les deux en tandem pour créer un environnement propice au développement et à l'exploitation réussis des microservices.

10. Évoluer les microservices : Gérer la croissance et les pannes

À grande échelle, même si vous achetez le meilleur équipement, le matériel le plus cher, vous ne pouvez pas éviter le fait que les choses peuvent et vont échouer.

Concevoir pour l'échelle et la résilience. Les architectures de microservices doivent être conçues pour gérer à la fois la croissance de la demande et les pannes inévitables de manière gracieuse.

Stratégies d'évolutivité :

  • Évolutivité horizontale (ajout de plus d'instances)
  • Évolutivité verticale (augmentation des ressources par instance)
  • Mise en cache (en mémoire, distribuée)
  • Partitionnement et réplication des bases de données
  • Traitement asynchrone et architectures pilotées par les événements

Modèles de résilience :

  • Disjoncteurs pour prévenir les pannes en cascade
  • Cloisons pour l'isolation des pannes
  • Timeouts et nouvelles tentatives avec backoff exponentiel
  • Dégradation gracieuse des fonctionnalités

Considérations du théorème CAP :

  • Cohérence
  • Disponibilité
  • Tolérance aux partitions

Comprenez que des compromis sont nécessaires lors de l'évolutivité des systèmes distribués. Priorisez en fonction de vos exigences et contraintes spécifiques. Mettez en œuvre des pratiques d'observabilité et d'ingénierie du chaos pour améliorer continuellement la résilience du système.

Last updated:

Avis

4.21 out of 5
Average of 4k+ ratings from Goodreads and Amazon.

Building Microservices reçoit des avis mitigés, beaucoup louant son aperçu complet des concepts de microservices et ses conseils pratiques. Les lecteurs apprécient l'approche prudente de l'auteur et les exemples concrets tirés du monde réel. Les critiques soulignent le manque de profondeur sur certains sujets et le potentiel du livre à survendre les microservices. Nombreux sont ceux qui le trouvent précieux pour les débutants mais moins utile pour les architectes expérimentés. Le livre couvre divers aspects des microservices, y compris la conception, le déploiement, les tests et la mise à l'échelle. Certains lecteurs auraient souhaité plus de détails concrets sur la mise en œuvre, tandis que d'autres ont apprécié sa perspective globale sur l'architecture logicielle.

À propos de l'auteur

Sam Newman est un architecte logiciel et consultant de renom, spécialisé dans les microservices, l'informatique en nuage et la livraison continue. Fort d'une vaste expérience dans le domaine, il a collaboré avec de nombreuses organisations pour mettre en œuvre et améliorer leurs architectures logicielles. Newman est un conférencier fréquent lors de conférences et a écrit plusieurs livres sur le développement logiciel. Son style d'écriture est loué pour sa clarté, son aspect pratique et son caractère engageant, s'inspirant de ses expériences réelles. En tant que leader d'opinion dans le domaine des microservices, le travail de Newman a considérablement influencé l'approche de l'industrie en matière de construction de systèmes distribués. Son expertise va au-delà des aspects purement techniques, englobant également les considérations organisationnelles et culturelles dans le développement logiciel.

0:00
-0:00
1x
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Listening – audio summariesListen to the first takeaway of every book for free, upgrade to Pro for unlimited listening.
Unlock unlimited listening
Your first week's on us
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 5: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Sep 26,
cancel anytime before.
What our users say
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Compare Features
Free Pro
Read full text summaries
Listen to full summaries
Unlimited Bookmarks
Unlimited History
Benefits
Get Ahead in Your Career
People who read at least 7 business books per year earn 2.3 times more on average than those who only read one book per year.
Unlock Knowledge Faster (or Read any book in 10 hours minutes)
How would your life change if we gave you the superpower to read 10 books per month?
Access 12,000+ hours of audio
Access almost unlimited content—if you listen to 1 hour daily, it’ll take you 33 years to listen to all of it.
Priority 24/7 AI-powered and human support
If you have any questions or issues, our AI can resolve 90% of the issues, and we respond in 2 hours during office hours: Mon-Fri 9 AM - 9 PM PT.
New features and books every week
We are a fast-paced company and continuously add more books and features on a weekly basis.
Fun Fact
2.8x
Pro users consume 2.8x more books than free users.
Interesting Stats
Reduced Stress: Reading for just 6 minutes can reduce stress levels by 68%
Reading can boost emotional development and career prospects by 50% to 100%
Vocabulary Expansion: Reading for 20 minutes a day are exposed to about 1.8 million words per year
Improved Cognitive Function: Reading can help reduce mental decline in old age by up to 32%.
Better Sleep: 50% of people who read before bed report better sleep.
Can I switch plans later?
Yes, you can easily switch between plans.
Is it easy to cancel?
Yes, it's just a couple of clicks. Simply go to Manage Subscription in the upper-right menu.
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.