Matthieu Vincent

@yodamad03

avatar
avatar

Fan d’Aligot
Tech Advocate

me.yodamad.fr

Nicolas Grohmann

avatar
avatar

Fan de choucroute
Tech Lead

đź’Ľ nicolas-grohmann

Qu’est le “As Code” ?

Approche qui consiste à gérer des éléments traditionnellement manuels
sous forme de code versionné, reproductible et automatisé.


— infrastructure, configuration, sécurité, documentation, pipelines —

Un peu d’histoire

Il y a vingt ans…

  • sudo nano /etc/config.yaml : ça ne peut que bien se passer non ?
  • Documentation Word : le fichier docs_v3_final.docx perdu dans l’arborescence de rĂ©pertoires
  • Tu as pensĂ© Ă  appliquer l’étape 7 de la checklist de mise en production ?
  • L’application est dĂ©ployĂ©e oĂą dĂ©jĂ  ?

L’explosion du “As Code”

  • 2005-2008 : Config-As-Code, automatisation de la gestion des configurations
  • 2011-2014 : Infra-As-Code, automatisation de la gestion de l’infrastructure
  • 2015 : Pipeline-As-Code, gestion de pipelines via des fichiers comme gitlab-ci.yml et Jenkinsfile
  • 2016 : Policy-As-Code, automatisation de la gouvernance et l’application de règles
  • 2018 : Docs-As-Code, documentations en Markdown ou AsciiDoc couplĂ© Ă  des outils
  • 2019 : Security-As-Code, popularisation
  • 2020 Ă  Aujourd’hui : Tout ce qui est manuel, incohĂ©rent ou fragile peut ĂŞtre automatisĂ© : Everything As Code

Contexte

Notre application d’élévage de Tech’Rex


  • Une appli full vibe-codĂ©e 🤖
  • Classique pet shop mais pour des dinosaures 🦖
  • Un front en React, un back en Go

Infra-As-Code

đź§±

Les concepts

  • DĂ©finition dĂ©clarative : dĂ©crire ce que l’infrastructure doit ĂŞtre, pas comment la construire.
  • Versionnement : l’infrastructure vit dans Git
  • ReproductibilitĂ© et cohĂ©rence : la mĂŞme configuration produit le mĂŞme environnement
  • Automatisation et Ă©volutivitĂ© : crĂ©ation, destruction ou mise Ă  l’échelle automatique
  • Les outils les plus rĂ©pandus:
    • Terraform pour construire, modifier et versionner l’infrastructure
    • OpenTofu un fork open source de Terraform
    • Pulumi qui a l’avantage de couvrir IaC et CaC

Démo

demo
demo

Config-As-Code

📚

Les concepts

  • Dans la continuitĂ© de l’Infra-as-Code mais orientĂ© stack applicative et environnements
  • Permet de dĂ©crire l’architecture applicative / les composants et gĂ©rer leur cycle de vie
  • Description des composants, leurs versions, leurs configurations, leurs dĂ©pendances
  • Les outils les plus rĂ©pandus :

Démo

demo
demo

Policy-as-Code

🛂

Les concepts

  • Description des contrĂ´les (policies) de votre environnement
    • ContrĂ´les de sĂ©curitĂ©, de conformitĂ© (compliance), de bonnes pratiques (best practices)
    • Règles de dĂ©ploiement (des images autorisĂ©es, …)
    • Règles de sĂ©curitĂ© (RBAC, Network Policies, …)
    • Optimisation des resources (scaling, horaires d’activitĂ©, …)
  • Les outils les plus rĂ©pandus :

Démo

demo
demo

Doc-as-Code

📝

Les concepts

  • La documentation versionnĂ©e : la doc vit dans le mĂŞme dĂ©pĂ´t que le code
  • Le texte en format brut : on Ă©crit en Markdown ou AsciiDoc
  • L’automatisation de la gĂ©nĂ©ration : des outils comme MkDocs ou Docusaurus transforment le texte en sites statiques ou PDF
  • La documentation continue : intĂ©grĂ©e au pipeline CI/CD

Démo

demo
demo

CICD as code

🦊

Les concepts

Démo

demo
demo

Conclusion

Pour aller plus loin encore

Récapitulons

flowchart TD
    IaC[Infrastructure as Code]
    CaC[Configuration as Code]
    CI[CI/CD as Code]
    PaC[Policy as Code]
    DoC[Documentation as Code]
    SaC[Slides as Code]
    DaC[Database as Code]
    DgC[Diagram as Code]
    
    App[Application]
    
    IaC ---|provisions| App
    CaC ---|configures| App
    CI ---|builds & deploys| App
    PaC ---|validates| App
    App ---|documents| DoC
    App ---|presents| SaC
    App ---|migrates| DaC
    App ---|visualizes| DgC
    
    style App fill:#4CAF50,stroke:#2E7D32,stroke-width:4px,color:#fff
    style IaC fill:#2196F3,stroke:#1565C0,color:#fff
    style CaC fill:#FF9800,stroke:#E65100,color:#fff
    style CI fill:#9C27B0,stroke:#4A148C,color:#fff
    style PaC fill:#F44336,stroke:#B71C1C,color:#fff
    style DoC fill:#00BCD4,stroke:#006064,color:#fff
    style SaC fill:#FFEB3B,stroke:#F57F17,color:#333
    style DaC fill:#795548,stroke:#3E2723,color:#fff
    style DgC fill:#607D8B,stroke:#263238,color:#fff

Nos conclusions

  • On peut “tout” faire “as-code”
    • Permet de versionner
    • Permet d’automatiser
    • Permet de dupliquer/reproduire/…
  • Attention Ă  l’overdose de yaml
  • Mettre en place des standards, guidelines
  • Automatiser les contrĂ´les

qrcode
qrcode
devfest
devfest

Merci !

A Bientot !
🕺

company
company