Aller au contenu principal

Qu'est-ce que le Platform Engineering

Après DevOps, Site Reability Engineering, voilà qu'on nous parle de Plateform Engineering. Mais de quoi s'agit-il ?

Je vais m'appuyer sur le site de la communauté platformengineering.org.

Voici la définition qu'on y retrouve : "Platform engineering is the discipline of designing and building toolchains and workflows that enable self-service capabilities for software engineering organizations..."

En français, c'est donc une discipline dont l'objectif est de concevoir et de construire des chaînes d’outils et des workflows qui permettent de mettre à disposition des organisations d’ingénierie logicielle des environnements à la demande, leur permettant ainsi de travailler plus efficacement et de manière autonome.

On peut lire aussi que cette discipline est née des cendres du DevOps. Mais comment ça le DevOps est mort ?

Pourquoi dire que le DevOps est mort ?

La première chose que l'on remarque, à la différence du DevOps le mouvement du Platform Engineering c'est la présence d'un site officiel. Sur ce site tout est écrit dans le marbre. Le DevOps, lui, est plus un mouvement culturel qu'une norme, on ne trouve pas de définition officielle.

Et pour cela, Lucas Galante, qui a rédigé cette définition du Platform Engineering, a tiré ce constat : Le DevOps n'étant pas une norme, cela a laissé place à beaucoup d'interprétations qui sont devenus pour la plupart des anti-patterns.

Pour rappel, l’objectif principal du DevOps au sein d’une entreprise est d’améliorer la création de valeur pour les clients et l’entreprise. Ce n'est donc pas en soi un moyen de réduire les coûts, dont l'objectif est de tout automatiser et de tout piloter avec de la gestion de configuration...

Les anti-patterns du DevOps

Matthew Skelton et Manuel Pais ont ainsi recensé la plupart de ces anti-patterns. Vous pouvez les retrouver ici:

  • Le DevOps coincé entre les Dev et les Ops
  • le NoOps des Dev qui n'ont pas besoin d'Ops
  • le DevOps qui est qu'un outil
  • le SysOps dont on a juste changé le nom en DevOps
  • L'Ops intégré dans l'équipe Dev
  • ...

Ils ne font pas que recenser des anti-types, mais des solutions pour intégrer correctement la démarche DevOps :

  • Collaboration entre les Dev et Ops (le vrai DevOps)
  • Responsabilités partagées entre les Dev et les Ops
  • Ops en tant que PAAS
  • ...

Le Platform Engineering, c'est...

Le DevOps n'est pas mort, Platform Engineering propose plutôt de l'implémenter correctement. En traitant la plateforme de développement comme un produit, une Platform As A Service, en se concentrant sur ce qui apporte une valeur réelle à nos clients internes, les développeurs d’applications entre autres.

Le Platform Engineering consiste à concevoir, développer et gérer des plateformes techniques délivrant un ensemble de services et d’outils permettant aux développeurs de travailler de manière efficace.

Comment démarrer ?

Comme pour le DevOps, nous utiliserons la fameuse boucle de rétroaction dont l'objectif est de rendre la route des équipes de développement la plus lisse possible.

Dans un premier temps, il convient de lister tous les pavés et de les traiter en priorisant ceux qui apportent le plus de valeur.

Quelques exemples :

  • Comment je déploie un environnement qui me permette de développer mon application dans des conditions proches de la réalité ?
  • J'ai vérolé mon environnement, comment je le reconstruis en peu de temps ?
  • Pour tester mon API, j'ai besoin de valider que je respecte le contrat que j'ai avec d'autres outils. Mais voilà, cet outil n'est pas disponible dans mon environnement. Existe-t-il un mock ?
  • ...

Ce sont sur ce genre de pavés (Paved Roads) que les Platform Engineers doivent travailler pour que la route semée de pavés devienne un chemin doré (Golden Paths).

Quels outils pour le Platform Engineering ?

Beaucoup d'outils utilisés dans le Platform Engineering sont similaires, voire les mêmes, que ceux utilisés dans une plateforme DevOps. Les deux disciplines partagent un objectif commun de faciliter le développement, le déploiement et la gestion des applications de manière agile et automatisée. Cependant, le Platform Engineering met davantage l'accent sur la création d'une plateforme unifiée et self-service pour les développeurs, appelée IDP, tandis que le DevOps se concentre sur la collaboration et l'intégration entre les équipes de développement et d'opérations. Malgré ces différences d'approche, les outils sous-jacents restent largement les mêmes.

Voici une liste des types d'outils couramment utilisés :

  1. Internal Developer Platforms (IDP) : Plateformes pour automatiser les flux de travail de développement et d'opération.
  2. Cloud Management Platforms (CMP) : Outils pour gérer les ressources dans des environnements cloud.
  3. Containers et Orchestration : Outils comme Docker et Kubernetes pour la gestion de conteneurs.
  4. Infrastructure as Code (IaC) : Outils tels que Terraform et Ansible pour automatiser la gestion de l'infrastructure.
  5. CI/CD Tools : Outils d'intégration et de déploiement continus comme Jenkins, GitLab CI et CircleCI.
  6. Observabilité : Outils pour surveiller les performances et la santé des applications, comme Prometheus et Grafana.
  7. Log Management : Outils pour la gestion et l'analyse des logs, comme ELK Stack.
  8. Sécurité : Outils pour la gestion de la sécurité des applications et des infrastructures.
  9. Gestion de Base de Données : Outils pour la gestion et l'automatisation des bases de données.

Conclusion

J'ai été le premier à crier "au loup" quand on m'a parlé de Platform Engineering. Je me disais que le DevOps en soi suffisait.

L'exploration du Platform Engineering révèle une évolution cruciale au-delà des pratiques traditionnelles du DevOps. Cette discipline émerge non seulement comme une réponse aux limites du DevOps, mais aussi comme une avancée vers une automatisation plus raffinée, une autonomie accrue pour les équipes de développement et une efficacité opérationnelle optimisée. Les outils et stratégies du Platform Engineering, bien que partageant des similitudes avec ceux du DevOps, se distinguent par leur approche centrée sur la création de plateformes unifiées et facilement accessibles. Cette évolution marque un pas important vers un avenir où les équipes peuvent se concentrer davantage sur l'innovation et moins sur les aspects opérationnels. Le Platform Engineering n'est pas simplement une mode passagère ; il s'agit d'un concept essentiel pour les entreprises qui cherchent à rester agiles et compétitives dans un paysage technologique en rapide évolution.