Platform Engineering avec Backstage.io : construire un Internal Developer Portal
← Retour au blogDevOps

Platform Engineering avec Backstage.io : construire un Internal Developer Portal

7 octobre 202510 min de lecturePlatform EngineeringBackstageIDP

Le Platform Engineering transforme l'expérience développeur en centralisant les outils, templates et documentation dans un portail unifié. Découvrez comment déployer Backstage.io chez Move2Cloud.

La crise de l'expérience développeur

Dans une organisation qui scale, les développeurs font face à une explosion de la charge cognitive. Chaque équipe a ses propres outils : Jira pour le suivi, Confluence pour la doc, Jenkins ou GitHub Actions pour le CI, SonarQube pour la qualité, Datadog pour la supervision, Vault pour les secrets. Un développeur junior qui rejoint l'entreprise doit apprendre des dizaines d'URL, de credentials et de workflows avant de pouvoir déployer son premier service.

Ce tool sprawl a un coût réel : les études DORA montrent qu'une mauvaise expérience développeur peut réduire la fréquence de déploiement de 40 %. Le Platform Engineering est la réponse organisationnelle à ce problème : créer une équipe platform dédiée qui construit et maintient les outils internes, permettant aux équipes produit de se concentrer sur la valeur métier.

Qu'est-ce qu'un Internal Developer Portal ?

Un Internal Developer Portal (IDP) est le point d'entrée unique pour tout ce dont un développeur a besoin : catalogue de services, documentation, templates de nouveaux projets, métriques de performance des équipes, et accès aux pipelines CI/CD. Backstage.io, créé par Spotify et donné à la CNCF en 2020, est devenu le standard de facto pour construire un IDP.

  • Software Catalog : inventaire de tous les services, librairies, APIs et ressources de l'organisation
  • Software Templates (Scaffolder) : création de nouveaux projets en quelques clics à partir de templates prédéfinis
  • TechDocs : documentation as code générée depuis les dépôts Git et centralisée dans Backstage
  • Plugins : intégrations avec GitHub, PagerDuty, Datadog, Kubernetes, Vault, etc.

Architecture de Backstage

Backstage est une application Node.js full-stack composée de deux parties :

backstage-app/
  ├── packages/
  │   ├── app/          # Frontend React (ce que voient les développeurs)
  │   └── backend/      # API Node.js + moteur de plugins backend
  ├── plugins/          # Plugins custom développés en interne
  └── app-config.yaml   # Configuration principale

Le core de Backstage est extensible via un système de plugins. Chaque plugin peut apporter des pages frontend, des API backend, et des intégrations avec des services tiers. L'écosystème compte aujourd'hui plus de 200 plugins open-source maintenus par la communauté.

Déploiement sur Kubernetes avec Helm

Move2Cloud recommande de déployer Backstage sur Kubernetes via le Helm chart officiel. Voici un exemple de configuration pour un cluster EKS :

# values.yaml pour le chart backstage
backstage:
  image:
    registry: ghcr.io
    repository: votre-org/backstage
    tag: "1.28.0"
  extraEnvVarsSecrets:
    - backstage-secrets   # Secret K8s contenant GITHUB_TOKEN, POSTGRES_PASSWORD
  appConfig:
    app:
      baseUrl: https://backstage.votre-entreprise.fr
    backend:
      baseUrl: https://backstage.votre-entreprise.fr
      database:
        client: pg
        connection:
          host: ${POSTGRES_HOST}
          port: 5432
          user: backstage
          password: ${POSTGRES_PASSWORD}
postgresql:
  enabled: true
  auth:
    password: ${POSTGRES_PASSWORD}
ingress:
  enabled: true
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
  host: backstage.votre-entreprise.fr
  tls: true
helm repo add backstage https://backstage.github.io/charts
helm upgrade --install backstage backstage/backstage   -f values.yaml   --namespace platform   --create-namespace

Définir des entités dans le catalog

Chaque service, API ou ressource est décrit par un fichier catalog-info.yaml à la racine du dépôt Git. Backstage découvre automatiquement ces fichiers via ses intégrations GitHub/GitLab.

# catalog-info.yaml
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: payment-service
  description: Service de paiement gérant les transactions Stripe
  annotations:
    github.com/project-slug: move2cloud/payment-service
    backstage.io/techdocs-ref: dir:.
    datadog.com/site: datadoghq.eu
    pagerduty.com/service-id: P1234AB
  tags:
    - payment
    - critical
    - nodejs
  links:
    - url: https://runbook.move2cloud.fr/payment
      title: Runbook
      icon: book
spec:
  type: service
  lifecycle: production
  owner: group:team-payments
  providesApis:
    - payment-api
  dependsOn:
    - component:postgres-payment
    - resource:aws-sqs-payment-queue

Software Templates : créer un microservice en un clic

Les Software Templates (Scaffolder) permettent aux développeurs de créer un nouveau service pré-configuré en remplissant un formulaire dans l'UI Backstage. Le template génère le dépôt Git, configure le CI/CD, ajoute le catalog-info.yaml, et enregistre le service dans le catalog.

# template.yaml
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: nodejs-microservice
  title: Node.js Microservice
  description: Crée un microservice Node.js avec CI/CD GitHub Actions
spec:
  owner: group:platform-team
  type: service
  parameters:
    - title: Informations du service
      properties:
        name:
          title: Nom du service
          type: string
          pattern: '^[a-z0-9-]+$'
        owner:
          title: Équipe propriétaire
          type: string
          ui:field: OwnerPicker
  steps:
    - id: fetch-template
      name: Fetch Template
      action: fetch:template
      input:
        url: ./skeleton
        values:
          name: ${{ parameters.name }}
          owner: ${{ parameters.owner }}
    - id: create-repo
      name: Create GitHub Repo
      action: publish:github
      input:
        repoUrl: github.com?owner=move2cloud&repo=${{ parameters.name }}
        defaultBranch: main
    - id: register
      name: Register in Catalog
      action: catalog:register
      input:
        repoContentsUrl: ${{ steps['create-repo'].output.repoContentsUrl }}
        catalogInfoPath: /catalog-info.yaml

Intégration GitHub pour la découverte automatique

Backstage peut scanner automatiquement toute votre organisation GitHub pour découvrir les fichiers catalog-info.yaml. Configurez l'intégration dans app-config.yaml :

integrations:
  github:
    - host: github.com
      token: ${GITHUB_TOKEN}

catalog:
  providers:
    github:
      move2cloud-org:
        organization: move2cloud
        catalogPath: /catalog-info.yaml
        filters:
          branch: main
          repository: '.*'   # Tous les dépôts
        schedule:
          frequency: { minutes: 30 }
          timeout: { minutes: 3 }

Tech Radar : gouvernance technologique

Le plugin Tech Radar permet à l'équipe platform de communiquer les recommandations technologiques (Adopt/Trial/Assess/Hold) à toute l'organisation, directement dans Backstage. C'est un outil puissant pour standardiser les choix techniques et éviter la prolifération de technologies non supportées.

ROI et métriques DORA

Les entreprises qui ont déployé un IDP basé sur Backstage rapportent des améliorations significatives sur les métriques DORA :

  • Deployment Frequency : +60 % grâce aux templates standardisés qui éliminent la configuration manuelle
  • Lead Time for Changes : -50 % car les développeurs trouvent immédiatement la documentation et les runbooks
  • Time to Onboard : de 2 semaines à 2 jours pour un nouveau développeur
  • Cognitive Load : réduction mesurable du nombre d'outils qu'un développeur doit connaître (de 15+ à 1 portail)

Chez Move2Cloud, nous avons accompagné plusieurs clients dans le déploiement de Backstage. L'investissement initial (2-3 semaines pour un MVP) est largement rentabilisé en quelques mois par la réduction du temps perdu à chercher de la documentation ou à configurer de nouveaux projets.

Conclusion

Le Platform Engineering avec Backstage n'est pas un projet technique — c'est un projet organisationnel. Le succès dépend autant de l'adoption par les développeurs que de la qualité technique. Commencez par un MVP avec le catalog et TechDocs, mesurez l'adoption, puis étendez avec les templates et les intégrations. L'équipe platform doit traiter les développeurs comme ses clients et itérer en fonction de leurs retours.

← Retour au blog