Qu'est-ce que le Platform Engineering ?
Le Platform Engineering consiste a construire et maintenir une plateforme interne qui permet aux equipes de developpement de livrer du logiciel de maniere autonome, sans dependre de tickets vers l'equipe Ops.
Les piliers d'une IDP
- Self-service : les developpeurs provisionnent eux-memes leurs ressources
- Golden paths : des chemins balisees et optimises pour les cas courants
- Guardrails : des contraintes automatiques qui garantissent la conformite
- Observabilite integree : monitoring, logs et traces accessibles sans configuration
Backstage : portail developpeur
Backstage (Spotify) est un framework open-source pour construire des portails developpeur :
# Creer un projet Backstage
npx @backstage/create-app@latest
# Structure du catalogue
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: mon-api
description: API de gestion des commandes
annotations:
github.com/project-slug: mon-org/mon-api
backstage.io/techdocs-ref: dir:.
spec:
type: service
lifecycle: production
owner: team-backend
system: e-commerce
providesApis:
- orders-api
dependsOn:
- resource:default/postgres-db
# Template pour creer un nouveau service
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
name: nouveau-service
title: Creer un nouveau microservice
spec:
owner: team-platform
type: service
parameters:
- title: Informations du service
properties:
name:
title: Nom du service
type: string
language:
title: Langage
type: string
enum: [go, python, java, nodejs]
steps:
- id: fetch
name: Generer le code
action: fetch:template
input:
url: ./skeleton
values:
name: ${{ parameters.name }}
- id: publish
name: Publier sur GitHub
action: publish:github
input:
repoUrl: github.com?owner=mon-org&repo=${{ parameters.name }}
- id: register
name: Enregistrer dans le catalogue
action: catalog:register
input:
repoContentsUrl: ${{ steps.publish.output.repoContentsUrl }}
catalogInfoPath: /catalog-info.yaml
Golden Paths
Les golden paths sont des workflows optimises et documentes pour les operations courantes :
- Creer un nouveau microservice (template + CI/CD + monitoring)
- Deployer en production (merge request -> review -> deploy automatique)
- Ajouter une base de donnees (Terraform module self-service)
- Configurer un domaine (DNS + certificat TLS automatique)
Self-service avec Terraform Modules
# Module self-service pour une base de donnees
module "database" {
source = "git::https://git.example.com/modules/rds.git?ref=v2.1"
name = "orders-db"
engine = "postgres"
version = "15"
environment = "production"
team = "backend"
# Les guardrails sont dans le module :
# - Chiffrement active par defaut
# - Backups automatiques
# - Monitoring configure
# - Acces restreint au VPC
}
Guardrails avec OPA/Gatekeeper
# Politique : toutes les images doivent venir du registre interne
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAllowedRepos
metadata:
name: only-internal-registry
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
parameters:
repos:
- "registry.example.com/"
Best practice : Commencez petit. Identifiez les 3-5 operations les plus frequentes et creez des golden paths pour celles-ci. Iterez en fonction des retours des equipes.