Effectuer une migration d'une application monolithique vers des microservices

Lorsque vous démarrez avec une ancienne application monolithique, vous devez rechercher des parties pouvant être découpées et déplacées vers des microservices distincts. Bien souvent, une application monolithique bien structurée présente des sections naturellement définies. Dès lors, une classe de services fonctionne déjà comme une interface vers une couche de stockage de données et une logique métier. Ce type de classe est l'endroit idéal pour connecter les appels clients au microservice.

Séparer les fonctionnalités d'une application monolithique

Plusieurs possibilités s'offrent à vous pour scinder votre application :

  • Rechercher dans votre application une logique métier pouvant être séparée.
  • Rechercher du code naturellement isolé, par exemple à l'aide d'outils d'analyse de code statique pour identifier les sections.
  • Identifier les éléments logiques de votre application pouvant être configurés différemment en matière de scaling ou d'utilisation mémoire. Vous pourriez ainsi réaliser des économies de coûts et optimiser l'utilisation de vos ressources.

Vous aurez peut-être besoin de refactoriser votre code pour supprimer les dépendances non naturelles. Nous vous recommandons d'effectuer la refactorisation dans votre ancien code et de le déployer en production avant de tenter de scinder l'application en plusieurs services.

Les microservices sont généralement employés dans les domaines suivants :

  • Informations sur l'utilisateur ou le compte
  • Gestion des autorisations et des sessions
  • Préférences ou paramètres de configuration
  • Notifications et services de communication
  • Photos et contenus multimédias, en particulier les métadonnées
  • Nœuds de calcul de files d'attente de tâches

Étapes pour effectuer la migration d'une application

Voici les étapes à suivre après avoir identifié un ensemble de classes pouvant devenir un microservice :

  • Laisser le code existant en place et opérationnel dans l'ancienne application pour faciliter le rollback.
  • #NOTYPO
  • Créer un dépôt de code, ou au moins un sous-répertoire dans votre dépôt existant.
  • #NOTYPO
  • Copier les classes dans le nouvel emplacement.
  • Écrire une couche d'affichage qui fournit les hooks d'API HTTP et assure la mise en forme appropriée des documents de réponse.
  • Formuler le nouveau code en tant qu'application distincte (création d'un fichier app.yaml).
  • Déployer le nouveau microservice en tant que service ou projet distinct.
  • Tester le code pour s’assurer qu’il fonctionne correctement.
  • Effectuer la migration des données de l'ancienne application vers le nouveau microservice (reportez-vous à la section ci-après pour en savoir plus).
  • Modifier votre ancienne application existante pour utiliser la nouvelle application de microservices.
  • Déployer l'ancienne application modifiée.
  • Vérifier que tout fonctionne comme prévu et qu'il n'est pas nécessaire de revenir à l'ancienne application.
  • Supprimer tout le code mort de l'ancienne application.

Effectuer la migration de données vers une application active

La migration de données vers une application active peut être délicate et dépend beaucoup de votre situation. Bien souvent, pour faciliter le déploiement et le rollback, vous devrez écrire du code qui renseignera à la fois les anciennes et les nouvelles entités Cloud Datastore, en utilisant éventuellement une API temporaire sur le microservice, puis écrire le code qui effectuera la migration de l'ensemble de données existant, par exemple, en tant que MapReduce. Ce processus implique généralement la présence d'une certaine quantité de code temporaire et de données redondantes. En fonction de votre situation particulière, vous devrez peut-être exécuter aussi une migration de données de rattrapage après le lancement. Veillez à ne pas écraser les données les plus récentes avec des données plus anciennes.

Bien que cela semble nécessiter beaucoup de travail, cette démarche est assez courante. Il est en outre très important de prévoir un déploiement avec possibilité de rollback, si le transfert vers le nouveau microservice échoue. Avant de supprimer votre code temporaire et les données de l'ancien emplacement de stockage, assurez-vous d'avoir vérifié que tous les éléments ont bien été transférés et que tout fonctionne comme prévu. Veillez également à effectuer des sauvegardes tout au long du processus.

Étapes suivantes

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Python