Microsserviços
Arquitetura
Backend
API
Escalabilidade
Mobile

Microservices dans les applications : architecture distribuée pour mobile

Microservices dans les applications : architecture distribuée pour mobile

Les microservices divisent le système en petits services indépendants. Pour les applications mobiles, cela signifie des API évolutives et évolutives. Ce guide présente comment implémenter et exploiter les microservices pour les applications.

Que sont les microservices

Définition

Architecture où l'application est composée de petits services indépendants.

Fonctionnalités

  • Indépendance de déploiement
  • Seul responsable du domaine -Communication via réseau
  • Peut avoir différentes technologies

Différence monolithique

Monolithe : tous ensemble. Microservices : séparés par responsabilité.

Avantages

Évolutivité indépendante

Chaque service évolue en fonction de la demande.

Déploiement indépendant

La mise à jour de l’un n’affecte pas les autres.

Résilience

En échouer un ne fait pas tout tomber.

Technologies multiples

Utilisez le meilleur outil pour chaque tâche.

Équipes indépendantes

Propriété claire, moins de dépendances.

Inconvénients

Complexité opérationnelle

Plus de pièces à gérer.

Latence du réseau

La communication entre les services ajoute de la latence.

Débogage dur

Suivez les problèmes dans tous les services.

Cohérence des données

Les transactions distribuées sont complexes.

Frais généraux

Pour les petits systèmes, cela peut être trop.

Quand l'utiliser

Bon pour

  • Grandes équipes
  • Domaines complexes
  • Nécessité d'une échelle indépendante
  • Evolutions fréquentes

Éviter

  • Petites équipes
  • MVP
  • Domaines simples

Décomposition

Par domaine

Contextes DDD limités.

Par fonctionnalité

Authentification, paiements, catalogue, etc.

Par cas d'utilisation

Flux d'utilisateurs indépendants.

Passerelle API

Fonction

Point d'entrée unique pour les clients.

Responsabilités

Routage, authentification, limitation de débit, agrégation.

Outils

Kong, passerelle API AWS, Nginx.

BFF (Backend pour Frontend)

###Concept

Passerelle spécifique au type de client.

Utilisation

BFF pour mobile, un autre pour le web.

Avantages

Optimisé pour chaque client.

##Communication

Synchrone

REPOS, gRPC. Demande/réponse.

Asynchrone

Files d'attente de messages. Événements.

Compromis

Le synchrone est simple, l’asynchrone est résilient.

Découverte de services

Problème

Comment les services se retrouvent-ils ?

###Solutions

Consul, Kubernetes DNS, AWS Cloud Map.

Observabilité

Journalisation

Journaux centralisés avec ID de corrélation.

Traçage

Traçage distribué avec Jaeger, X-Ray.

Métriques

Par service et agrégat.

Résilience

Disjoncteur

Arrêtez d'appeler le service défaillant.

Réessayer

Réessayez avec recul.

Délai d'expiration

N'attendez pas éternellement.

###Clôture

Isoler les ressources.

Gestion des données

Base de données par service

Chaque service avec sa banque.

Cohérence éventuelle

Transactions distribuées évitées.

Événements

Communiquer les changements via des événements.

Sagas

Transactions longues via clearing.

Déploiement

Conteneurs

Docker pour encapsuler les services.

###Orchestration

Kubernetes à gérer.

### CI/CD

Pipeline par service.

Bleu-Vert/Canari

Déploiements sécurisés.

Pour mobile

API optimisée

Moins d'appels, données agrégées.

###Cache

Mise en cache CDN et API.

###Hors ligne

Résilience en cas de panne du réseau.

Gestion des versions

API versionnées pour la compatibilité.

Tests

###Unité

Pour le service.

Intégration

Communication entre services.

###Contrat

Le consommateur et le fournisseur conviennent du contrat.

De bout en bout

Des flux complets via les services.

Migration

Modèle d'étrangleur

Remplace progressivement monolithe.

Commencez petit

Commencez par un service.

###Extrait

Identifiez des domaines bien définis.

Erreurs courantes

Distribution prématurée

Microservices avant d’en avoir besoin.

Nano-services

Services trop petits.

Aucune observabilité

Impossible à déboguer.

Ignorer la latence

Plusieurs appels réseau.

Conclusion

Les microservices offrent évolutivité et flexibilité, mais avec complexité. Évaluez si nécessaire votre contexte, investissez dans l’observabilité et opérez avec discipline. Pour les applications mobiles, concentrez-vous sur les API optimisées et la résilience.

##FAQ

1) Ai-je besoin de Kubernetes pour les microservices ? Pas nécessairement. Mais cela aide beaucoup à grande échelle.

2) Combien de services, c'est trop ? Il n’y a pas de chiffre magique. Si l’équipe n’y parvient pas, c’est trop.

3) Le mobile doit appeler directement microservices ? Généralement non. Utilisez API Gateway ou BFF.

4) Les microservices sont-ils toujours meilleurs ? Non. Un monolithe bien conçu peut être meilleur dans de nombreux cas.

5) Comment démarrer avec les microservices ? Démarrez monolithe modulaire. Extraire si nécessaire.

A lire aussi

-Backend pour les applications : architecture, technologies et bonnes pratiques