Migrer vers des microservices à partir d'une application monolithique

Pour démarrer avec une ancienne application monolithique, vous devez identifier les parties pouvant être dissociées et transférées vers des microservices distincts. Une application monolithique bien structurée présente généralement des divisions très naturelles. Une classe de service fonctionne déjà comme une interface vers une couche de stockage de données et de logique métier. Elle représente la solution idéale pour connecter les appels de clients au microservice.

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

Vous pouvez adopter plusieurs approches pour séparer les fonctionnalités de votre application :

  • Rechercher dans votre application une logique métier pouvant être séparée.
  • Identifier le code isolé naturellement, par exemple en utilisant des outils d'analyse de code statique permettant d'identifier les sections.
  • Examiner votre application afin de déceler une logique vous permettant de définir des paramètres de configuration du scaling ou des besoins en mémoire distincts de ceux du reste de l'application. Vous pourrez ainsi éventuellement réduire les coûts, ce qui peut contribuer à une meilleure utilisation des ressources.

Vous aurez peut-être besoin de refactoriser votre code pour supprimer les dépendances non naturelles. Nous vous recommandons de refactoriser l'ancien code et de le déployer en production avant de diviser l'application en services distincts.

Les microservices sont le plus souvent employés dans les domaines suivants :

  • Informations de compte ou d'utilisateur
  • 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 file d'attente de tâches

Étapes de la migration d'une application

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

  • Le code existant doit être conservé et opérationnel dans l'ancienne application de façon à faciliter le rollback.
  • Créez un dépôt de code ou au moins un sous-répertoire dans le dépôt existant.
  • Copiez les classes dans le nouvel emplacement.
  • Créez une couche d'affichage qui fournit les hooks d'API HTTP et met en forme les documents de réponse de manière appropriée.
  • Formulez le nouveau code sous la forme d'une application distincte (créer un app.yaml).
  • Déployez votre nouveau microservice en tant que service ou projet séparé.
  • Testez le code pour vous assurer qu'il fonctionne correctement.
  • Effectuez la migration des données de l'ancienne application vers le nouveau microservice (reportez-vous à la section ci-après pour en savoir plus).
  • Modifiez l'ancienne application afin d'utiliser la nouvelle application de microservices.
  • Déployez l'ancienne application modifiée.
  • Vérifiez que tout fonctionne comme prévu et qu'il n'est pas nécessaire de rétablir l'ancienne application.
  • Supprimez tout le code mort de l'ancienne application.

Migrer les données d'une application en live

La migration des données d'une application en live peut s'avérer délicate et dépend fortement de votre situation. Pour faciliter le déploiement et le rollback, il convient généralement d'écrire du code qui est inséré à la fois dans les anciennes et les nouvelles entités Cloud Datastore, éventuellement à l'aide d'une API temporaire sur le microservice. Il faut ensuite créer du code qui migre l'ensemble de données existant, par exemple dans le cadre d'une opération MapReduce. Ce processus implique généralement l'utilisation de code temporaire et de données redondantes. En fonction de votre situation, vous devrez peut-être également exécuter une migration de données de rattrapage après le lancement. Veillez à ne pas écraser les données récentes avec les données anciennes.

Même si ces tâches semblent nécessiter beaucoup de travail, elles sont courantes. Il faut pouvoir procéder au déploiement et au rollback dans le cas où la transition vers le nouveau microservice échoue. Vous ne pouvez vous débarrasser du code temporaire et supprimer les données de l'ancien emplacement de stockage qu'après avoir vérifié que tous les éléments ont été migrés correctement et que tout fonctionne comme prévu. Veillez à effectuer des sauvegardes tout au long du processus.

Étapes suivantes