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

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:
- Elle réduit les risques liés aux mises à jour, en limitant le nombre d'utilisateurs exposés à une éventuelle erreur ou à un dysfonctionnement. Elle permet également de revenir en arrière facilement, en annulant la mise à jour si celle-ci s'avère problématique.
- Elle détecte les bugs et les améliorations possibles, en recueillant les retours des utilisateurs (données d'usage, comportement, satisfaction). Elle permet ainsi de corriger les erreurs, d'ajuster les paramètres ou de peaufiner les détails, avant de généraliser la mise à jour.
- Elle améliore continuellement la qualité du service, en validant l'impact réel des mises à jour sur les utilisateurs, et en ne conservant que celles qui apportent une valeur ajoutée.
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 :
- Difficiles à adapter à des changements de contexte, de matériel ou de logiciel. Le développement de nouveaux produit peut nécesiter d’importantes adaptations sur l’outil interne, pas forcément formalisé en tant qu’outil mais souvent constitués de nombreux composants, plus ou moins réutilisables.
- Coûteuses à maintenir et à faire évoluer, c'est la conséquence du point précédent
- Limitées aux cas d’usage essentiels. Rare sont les solutions sur-mesure à proposer des mises à jours résistants aux scénarios innatendus: coupures de réseau, les pannes de courant ou les erreurs de transmission. Le résultat de ces scénarios pouvant se concrétiser par un blocage du système.
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.
- Mender permet de créer des campagnes de mise à jour, et de suivre les statistiques de déploiement et de performance.
- SWUpdate et RAUC peuvent être associé à hawkBit pour des résultats similaires.
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é.