About us Expertises Offer References Contact us Blog
FR EN

Déployez vos mises à jours Linux embarqué à la manière de Netflix

La mise à jour des flottes de produits Linux embarqué représente un enjeu stratégique. Risques et solutions, découvrez comment la méthode de mise à jour de Netflix peut être adaptée à votre produit IoT.

Dernière modification: 25/03/2024

Nathanaël Landais

image blog Intégrez de l’open source dans votre produit IoT commercial

La mise à jour des systèmes embarqués Linux : un enjeu stratégique

Que vous soyez un grands industriels ou une startup, vous êtes inévitablement confrontés à la problématique de la mise à jour de vos produits embarquant Linux. Une fois déployés, ces systèmes doivent être mis à jour régulièrement pour corriger des bugs, améliorer les performances, ajouter des fonctionnalités ou renforcer la sécurité.

Mais comment gérer efficacement les mises à jour de ces systèmes embarqués Linux ? Quelles sont les solutions disponibles sur le marché ? Quels sont les avantages et les inconvénients de chacune d'entre elles ? Et comment s'inspirer des meilleures pratiques du SaaS, comme la méthode Netflix, pour optimiser la qualité et la fiabilité des mises à jour ?

Dans cet article, je vais vous présenter les différents enjeux et solutions liés à la mise à jour des systèmes embarqués Linux, en m'appuyant sur des exemples concrets et des retours d'expérience. Nous verrons notamment comment la méthode de déploiement utilisée par Netflix peut être adaptée au contexte des systèmes embarqués, pour réduire les risques, détecter les bugs et améliorer continuellement la qualité des mises à jour.


Gestion de flottes Linux embarqué

Comment Netflix met à jour sa flotte d’applications installées dans le monde entier

Netflix est le leader mondial du divertissement en ligne, avec plus de 250 millions d'abonnés dans le monde. Avec une telle base d’utilisateur, le déploiement de mise à jours est critique et la moindre modification est susceptible de dégrader l’image de marque, bloquer des utilisateurs ou simplement impacter négativement leur temps d’utilisation de la plateforme. C’est en partie cette même raison qui fait que les géants du e-commerce font très peu évoluer leur interface utilisateur dans le temps.

Netflix se distingue par sa capacité à faire évoluer constamment son produit malgrès ces risques et contraintes.
Leur solution: un déploiement des mises à jours intelligent. Les nouvelles versions ne sont pas déployées partout en même temps, ils ont deux stratégies principales pour deux objectifs distincts: le canary testing et l’A/B testing.

Le canary testing

Le canary testing consiste à limiter la propagation d’une mise à jour à un nombre restreint d’utilisateurs. C’est une stratégie efficace pour mesurer l’impact sur le terrain d’une nouvelle version avec une prise de risque limitée. La remontée de statistiques, notamment de succès ou d’échecs, permet de valider la mise à jour avant de la déployer à l’ensemble des utilisateurs.

L’A/B Testing

La seconde stratégie, l’A/B Testing est une technique qui consiste à comparer deux versions d'un produit ou d'un service, en les proposant à un échantillon représentatif d'utilisateurs, et en mesurant les différences de comportement ou de satisfaction entre les deux groupes. Cette technique permet de valider ou d'invalider des hypothèses, et d'optimiser les performances du produit ou du service.

Les bénéfices de ces stratégies

Si la mise à jour a un impact positif sur les indicateurs, elle est déployée progressivement sur l'ensemble des utilisateurs.
Si la mise à jour a un impact négatif ou neutre, elle est abandonnée ou modifiée, en tenant compte des raisons du succès ou de l'échec.

La méthode présente plusieurs avantages applicables directement à la gestion de flottes de produits embarquant Linux:

Des réels bénéfices pour vous distinguer de vos concurrents et protéger votre image.

Les solutions propriétaires pour la mise à jour des systèmes embarqués Linux

Nombreux sont les industriels developpant en interne leurs propres solutions pour gérer les mises à jour de leurs produits basés sur Linux. Ces solutions sont souvent spécifiques à chaque projet, et reposent sur des protocoles et des formats de données propriétaires.

Les raisons de ce choix peuvent être variées, parmis elle on citera: l'ancienneté de la solution (avant l'arrivé d'alternatives robustes), la méconnaissance des outils existants, la recherche d’une solution sur mesure à des problèmatiques qui semblent très spécifiques à leurs cas d’usages.

Cependant, ces solutions peuvent présenter des limites importantes, notamment en termes de coûts, de flexibilité, de sécurité et de fiabilité. En effet, ces solutions sont souvent :

Sur ce dernier point, une solution consiste à faire valider les mises à jours par un opérateur humain capable de remettre le système dans son état précedent en cas de problème. Le constructeur automobile demande un passage en concession pour mettre à jour son système, le gestionnaire de parcs de distributeurs automatique fait effectuer les mises à jours par des techniciens. C’est sans conteste une contrainte dans le déploiement de mise à jours sur d’importantes flottes de produits. Cela limite également la capacité à réagir rapidement à des failles de sécurité, ou à des bugs critiques.

Mais alors, si on veut s’inspirer de l’agilité de Netflix et tous les bénéfices apportés par sa méthode, on s’y prend comment ?

Les solutions open-source pour la mise à jour des systèmes embarqués Linux

Si vous connaissez Lenewt vous m’avez vu venir, je veux vous parler des solutions de déploiement de mise à jour open-source. Il en existe aujourd’hui plusieurs, matures et activement supportées par la communauté. Plus complètes, flexibles et robustes qu’aucune solution développée sur-mesure ne peut l’être.

SWUpdate, Mender, RAUC

Parmi les les plus populaires, on peut citer SWUpdate, Mender et RAUC. Ces solutions se basent sur le principe de la mise à jour atomique: une mise à jour est soit appliquée dans son intégralité, soit annulée.

L'implémentation de la mise à jour atomique

Dans le détails ces systèmes fonctionnent avec deux partitions (ou deux images) pour le système :
une partition active, qui contient le système en cours d’utilisation, et une partition passive, qui reçoit la nouvelle version du système.

Lors de la mise à jour, la partition passive est écrite avec la nouvelle image, puis le système redémarre sur cette partition. Si la mise à jour échoue ou si le nouveau système ne fonctionne pas correctement, il est possible de revenir à la partition active, qui contient l’ancienne version du système. Ce mécanisme permet d’éviter les risques de blocage ou de corruption du système lors de la mise à jour.

La robustesse de cette stratégie de mise à jour élimine la nécessite d’une présence humaine auprès de la machine et permet de déployer simplement des mises à jours sur de grandes flottes de produits embarquants Linux.

Des cas d'usage trop spécifiques ?

Vous trouvez votre cas spécifique incompatible avec ces solutions génériques ? Ces outils sont plus flexible que vous l’imaginez. Par exemple si vous devez mettre à jour un firmware d'un autre composant communiquant avec votre système Linux en UART, SWUpdate permet d’implémenter ce qu’ils appellent un handler, qui vous permettra même d’y intégrer d’éventuels outils et processus propriétaires dans vos packages de mise à jour.

Ces outils sont utilisées dans de grands projets industriels aux cas d’usages très variés, votre cas d’usage même spécifique est très probablement paramètrable dans ces outils.
Et si ce n’est pas le cas ? C’est open-source, vous pouvez contribuer à enrichir l’outil de votre choix, avec en bonus le support de la communauté qui pourra vous aider à intégrer votre besoin à l’outil, pour le bénéfice de tous.

Des solutions pour le déploiement différencié

Et la méthode Netflix dans tout ça, comment faire du canary testing, pour s’assurer de leur stabilité, ou de l’A/B testing pour étudier leur impact sur les utilisateurs ?

Les trois outils mentionnés permettent d’une manière ou une autre de faire du déploiement par campagne.

Conclusion

La mise à jour des systèmes embarqués Linux est un enjeu stratégique pour les entreprises, qui doivent assurer la qualité, la sécurité et la fiabilité de leurs produits, tout en répondant aux attentes et aux besoins de leurs clients. Les conséquence d’un déploiement de mises à jour ratées peuvent être importantes autant d’un point de vue financier qu’en terme d’image.

Si l’inertie et les processus en place peuvent dissuader d’abandonner les solutions de mise à jour dévéloppées en interne, ils peuvent également représenter un réel frein dans l’évolution des produits. Les solutions open-source modernes améliorent l’expérience utilisateur et rendent de nouveaux usages possibles en permettant notamment la mise à jour à distance (OTA) de flottes complètes.

Un tournant à prendre bien accompagnés. Contactez-nous pour bénéficier de nos conseils experts sur les sujets Linux embarqué.