BT

Nouveau Early adopter ou innovator ? InfoQ a travaillé sur de nouvelles fonctionnalités pour vous. En savoir plus

Migrer d'un monolithe vers des micro services chez SoundCloud

| par Jan Stenberg Suivre 6 Abonnés , traduit par Chris Woodrow Suivre 0 Abonnés le 15 juil. 2014. Durée de lecture estimée: 2 minutes |

Migrer SoundCloud vers une architecture à base de micro services a été crucial pour permettre à nos équipes de créer de nouvelles fonctionnalités plus rapidement. Phil Calçado nous livre une série de trois articles où il partage leur expérience en abandonnant leur système monolithique.

SoundCloud, une plate-forme de distribution de contenus audio chez qui Phil Calçado est Directeur technique, a longtemps été une unique application Ruby on Rails, mais passer leur temps à patcher le système au lieu de résoudre le problème de scalabilité les a amené à prendre la décision de complètement changer leur mode de conception. La première étape était l'architecture, et plus précisément la décision de migrer vers une architecture basée sur des micro-services. A cause de mauvaises expériences passées dûes à des problèmes de big-bang refactoring, ils ont adopté une approche consistant à ne plus rien ajouter au système existant mais, à la place, de créer les nouvelles fonctionnalités sous la forme de micro-services.

Un problème qui a été rapidement soulevé était que, dans la mesure où beaucoup de logique métier était conservée dans l'ancien système, la plupart des services devaient communiquer avec celui-ci. La solution à ce problème a été d'utiliser l'API publique conjointement avec une nouvelle API interne, ce qui a aussi aidé à maintenir les micro-services découplés de l'ancien système.

Après que des changements aient été effectués au niveau de l'architecture, le défi suivant était d'extraire des fonctionnalités de la vieille application. Le concept de bounded context issu du Domain-Driven Design (DDD) a été choisi pour définir un ensemble de fonctionnalités bien maîtrisées. Éviter les big-bang refactorings a nécessité, pour chaque ensemble de fonctionnalités extraites, le nouveau micro-service devait être compatible avec l'ancien système aussi longtemps qu'il était nécessaire pour déplacer la logique métier. Durant cette transition, le nouveau service accédait à l'ancienne base de données, impliquant que seule la lecture pouvait être implémentée jusqu'à ce que le service soit totalement fonctionnel. En appliquant ces principes, les équipes ont été capables d’extraire la plupart des fonctionnalités existantes du vieux système et de les porter en micro-services.

Selon leur préférences, ils ont choisi de conserver la plate-forme JVM ainsi que les différents langages disponibles. En cherchant des frameworks qui correspondaient à leur besoin en matière de RPC, de résilience et de gestion des accès concurrents, ils ont choisi Finagle, un système RPC agnostique au protocole, après avoir passé un peu de temps à gérer des problèmes mineurs.

En s'appuyant sur l'expérience apportée par leur travail, Phil Calçado résume le projet en déclarant que la nouvelle architecture basée sur des micro-services s'est déjà montrée cruciale dans le développement de fonctionnalités prêtes pour la production et disposant d'un cycle de développement très court.

L'objectif de Phil Calçado est maintenant de terminer sa série d'articles en décrivant la manière dont ils ont utilisé Finagle et Scala pour migrer d'une simple API RESTful vers des back-ends optimisés.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de l'industrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT