Penpot Logo

Projet PENPOT

Infrastructure Cloud DevOps

SENAN Anthony

La Capsule - Formation DevOps

8 Décembre 2025

Vue d'ensemble du projet

Contexte Client

Funky Wombat Studio - Agence de design graphique et UX/UI

  • 10 designers en croissance
  • Migration depuis Figma vers solution open-source
  • Objectif: autonomie et maîtrise des outils
  • Besoin de scalabilité future

Mission

Déployer une instance auto-hébergée de Penpot sur une platform Cloud avec une infrastructure complète, automatisée et sécurisée.

Livrables

  • Infrastructure Cloud (staging + production)
  • Déploiement automatisé (Terraform + Ansible)
  • Pipeline CI/CD GitLab automatisé
  • Stack de monitoring Prometheus/Grafana/Loki
  • Documentation technique complète

Besoins Métier et Objectifs

👥 Collaboration & Usage

Permettre à l'équipe de travailler simultanément sur les mêmes fichiers de design avec une expérience fluide.

  • ~10-15 utilisateurs actifs
  • Édition temps réel
  • Commentaires & Partage

⚡ Performance & Disponibilité

L'outil est critique pour la production de l'agence. Toute interruption bloque la chaîne de valeur.

  • Performance adaptée à un usage collaboratif
  • Disponibilité attendue pour un outil de production interne
  • Accès web pour les équipes distantes

🔒 Sécurité & Maîtrise

Protéger le capital intellectuel de l'agence tout en maîtrisant les coûts d'infrastructure.

  • Sauvegarde des données applicatives (solution managée)
  • Propriété et maîtrise des données
  • Budget OPEX maîtrisé

🎯 Objectif Principal

Fournir une alternative fiable à Figma, hébergée sur GCP, sans changement d'habitudes pour les designers.

Objectifs Fonctionnels & DevOps

📋 FONCTIONNEL & MÉTIER

🌐 Accessibilité & Sécurité

Service Penpot accessible via HTTPS avec certificat SSL valide.

💾 Intégrité des Données

Persistance garantie des projets (Cloud SQL) et des assets (S3 AWS). Sauvegarde des données applicatives via services managés.

🔄 Continuité de Service

Disponibilité de la plateforme : service accessible 24/7 (best effort), support cible heures ouvrées.

⚙️ INFRASTRUCTURE & DEVOPS

💻 Infrastructure as Code (IaC)

Provisioning complet de l'infrastructure GCP via Terraform pour garantir la reproductibilité et la traçabilité des environnements.

🚀 Automatisation & CI/CD

Pipelines GitLab CI distincts pour l'applicatif (build, tests, sécurité) et pour l'infrastructure (provisionnement et déploiement). Configuration automatique des serveurs (Ansible - sans action manuelle).

📊 Orchestration & Supervision

Déploiement applicatif conteneurisé sur une plateforme d'orchestration adaptée au projet. Supervision de l'infrastructure via Prometheus & Grafana.

Méthodologie Agile avec Jira

Organisation du projet

  • Epics : Infra GCP, Mise en place Penpot, Configuration & déploiement, CI/CD, Supervision
  • Sprints : 3 sprints de 2-3 jours (8-18 décembre 2025)
  • Tickets : Identifiants PEN-xx avec suivi complet
  • Workflow : TO DO → IN PROGRESS → IN REVIEW → DONE

Sprint 1

Infrastructure GCP de base (VPC, VMs, Cloud SQL, Redis, GCS)

Sprint 2

Configuration serveurs (Docker Swarm, Ansible, déploiement Penpot, AWS S3)

Sprint 3

CI/CD et monitoring (GitLab pipelines, Prometheus/Loki/Grafana, alerting)

Jira Sprint 1 Jira Sprint 3

Workflow Jira personnalisé

Workflow Jira

Étapes du workflow

  • TO DO : Ticket créé et prêt à être traité
  • IN PROGRESS : Développement en cours
  • BLOCKED : Blocage technique nécessitant résolution
  • IN REVIEW : Revue de code et validation
  • DONE : Ticket terminé et validé

Architecture Cloud GCP

Organisation de l'infrastructure

Composant Technologie Rôle
Réseau VPC GCP Isolation subnet public/privé + PSA
Reverse Proxy Traefik Reverse proxy + HTTPS + Let's Encrypt
Application Docker Swarm Frontend, Backend, Exporter (2 réplicas)
Base de données Cloud SQL PostgreSQL Stockage applicatif avec backups 7j
Cache Memorystore Redis Performances applicatives
Assets AWS S3 Designs et fichiers utilisateurs
Monitoring Prometheus + Loki + Grafana Supervision complète
CI/CD GitLab + Runner GCP Automatisation déploiements

Séparation Staging / Production

  • Staging: 10.10.0.0/20 (privé) + 10.10.32.0/24 (public)
  • Production: 10.20.0.0/20 (privé) + 10.20.32.0/24 (public)
  • Bases de données et Redis séparés
  • Clusters Docker Swarm indépendants

Schéma d'architecture micro

Schéma d'architecture micro détaillé

Infrastructure GCP déployée

Console GCP - Instances VM

Décision technique

OS Login vs SSH classique

Choix: OS Login (Google IAM)

  • Centralisation des accès via console GCP
  • Révocation immédiate lors du départ d'un membre
  • Auditabilité complète via Cloud Audit Logs
  • Pas de clés SSH stockées sur les VMs
  • Compatible CI/CD via Service Accounts

Docker Swarm vs Kubernetes

Choix: Docker Swarm (pour l'instant)

  • Simplicité de mise en œuvre
  • Coûts maîtrisés (pas de Control Plane payant)
  • Suffisant pour 10 utilisateurs
  • Migration GKE envisagée lors de la croissance

Situation de recherche approfondie

Problématique: Stockage des assets Penpot

Contexte: Architecture initiale prévoyait GCS pour tous les assets

Symptômes

  • Échecs de connexion au bucket GCS
  • Erreurs d'authentification dans logs backend
  • Impossibilité de sauvegarder les projets

Analyse

Le backend Penpot utilise le SDK AWS S3 (API v2). Google Cloud Storage implémente une API S3-compatible, mais avec des différences dans l'authentification et les signatures de requêtes.

Solutions envisagées

Solution Avantages Inconvénients Décision
Modifier code Penpot Architecture 100% GCP Complexe, maintenance difficile ❌ Rejeté
Utiliser AWS S3 Compatible natif, simple Multi-cloud ✅ Retenu

Résultat

  • Architecture multi-cloud pragmatique
  • Compatibilité garantie avec Penpot
  • Mises à jour futures facilitées
  • Performances optimales (S3 natif)

Compétence : Automatiser le déploiement

Infrastructure as Code (IaC)

Automatisation complète du provisionnement avec:

  • Terraform - Ressources GCP (VPC, VMs, Cloud SQL, Redis)
  • Ansible - Configuration automatisée des serveurs
  • Docker Swarm - Orchestration des conteneurs

Terraform

Provisionnement déclaratif de l'infrastructure cloud avec modules réutilisables

Ansible

Configuration automatisée: Docker, monitoring, sécurité, déploiement applicatif

Docker Swarm

Orchestration: 1 master + 2 workers pour haute disponibilité

Bénéfices

  • Infrastructure reproductible en quelques minutes
  • Pas d'intervention manuelle sur les serveurs
  • Versioning complet via Git

Compétence : Sécuriser l'infrastructure

Approche défense en profondeur

Couche Réseau

  • VPC avec subnets publics et privés séparés
  • Firewall GCP Cloud avec règles restrictives
  • Bastion unique pour accès SSH
  • Private Service Access (PSA) pour bases de données

Couche Application

  • HTTPS obligatoire avec Let's Encrypt (Traefik)
  • Authentification OS Login via Google IAM
  • Service Accounts avec principe du moindre privilège
  • Secrets gérés par Google Secret Manager

Couche CI/CD

  • Scan automatique des vulnérabilités (Trivy)
  • Analyse de qualité code (SonarCloud)
  • Images Docker signées et vérifiées

Compétence : Déploiement continu

Pipeline GitLab CI/CD

Repository "penpot-app" - Application

Lint
Test
E2E
Security
Sonar
Build & Push
  • Tests unitaires automatisés (Jest)
  • Tests E2E avec Playwright (3 workers, 3 retries)
  • Scan sécurité Trivy (HIGH + CRITICAL)
  • Analyse qualité SonarCloud
  • Build et push vers GitLab Container Registry

Repository "penpot" - Infrastructure

Lint
Terraform
Validate
Deploy
  • Validation syntaxe Terraform
  • Plan/Apply automatique (staging) ou manuel (prod)
  • Validation playbooks Ansible
  • Déploiement automatisé via Ansible

Déclencheurs

  • staging branch → Déploiement auto staging
  • main branch → Déploiement manuel production

Pipeline CI/CD Applicatif en exécution

Pipeline GitLab CI/CD Applicatif

Pipeline Infrastructure - Validation manuelle Production

Validation manuelle Terraform Production

Compétence : Superviser les services

Stack de monitoring complète

Prometheus

Collecte et agrégation des métriques système et applicatives

Loki

Centralisation et analyse des logs Docker

Grafana

Dashboards et visualisation en temps réel

Node Exporter

Métriques système (CPU, RAM, disque, réseau)

Promtail

Agent de collecte des logs conteneurs

Alerting automatisé

  • Alerte critique: VM down > 2 minutes
  • Notification par email (admin@pen-pot.com)
  • Dashboard accessible: grafana.pen-pot.com

Métriques surveillées

  • Uptime des serveurs et conteneurs
  • Utilisation CPU, RAM, disque, réseau
  • Nombre de connexions applicatives
  • Logs applicatifs en temps réel

Dashboard Grafana Production - Vue d'ensemble

Dashboard Grafana Production

Dashboard Grafana - Logs conteneurs en temps réel

Grafana Logs temps réel

Bilan de mission

État des lieux sur la base du périmètre actuel

Domaine État Détails
Sécurité & Data EN PLACE Bastion, OS Login, PSA, Secret Manager, HTTPS
CI/CD EN PLACE Pipelines GitLab automatisés (infra + app)
Supervision Infra EN PLACE Prometheus + Grafana + Loki + alerting
Haute Disponibilité PARTIEL Docker Swarm (1 master + 2 workers)
Migration Kubernetes ÉVOLUTION V2 GKE envisagé selon croissance

Difficultés rencontrées et arbitrages

Stockage objet

Incompatibilité GCS/SDK Penpot → Solution: AWS S3 (multi-cloud pragmatique)

Orchestration

K8s vs Swarm → Solution: Docker Swarm (périmètre actuel, migration K8s en V2)

Périmètre projet

Priorisation d'un socle stable, automatisé et exploitable plutôt que complexité excessive

Perspectives d'évolution

Migration vers Kubernetes (GKE)

Contexte: À mesure que l'agence grandit

Avantages GKE

  • Auto-scaling complet (pods + nodes)
  • Haute disponibilité native
  • Écosystème riche (Helm, Operators)
  • Monitoring intégré

Architecture actuelle

Docker Swarm: auto-scaling horizontal des conteneurs, mais pas des VMs

Centralisation du monitoring

Évolution: VM monitoring unique pour les 2 environnements

Bénéfices

  • Dashboard Grafana unique avec filtrage staging/prod
  • Réduction des coûts (1 VM au lieu de 2)
  • Maintenance simplifiée
  • Logs filtrables par environnement ET service

Améliorations sécurité

  • WAF (Web Application Firewall) devant Traefik
  • Scan de vulnérabilités des VMs (Cloud Security Scanner)
  • Politique de rotation automatique des secrets
  • Alertes enrichies (CPU, RAM, erreurs HTTP 5xx)

Compétences maîtrisées

✓ Infrastructure as Code

Terraform + Ansible pour automatisation complète

✓ Sécurité multi-couches

Réseau, application, CI/CD avec OS Login et Secret Manager

✓ Cloud Production

GCP avec services managés et architecture staging/prod

✓ CI/CD GitLab

Pipelines automatisés avec tests, sécurité et déploiement

✓ Orchestration conteneurs

Docker Swarm avec haute disponibilité

✓ Monitoring & Alerting

Prometheus + Loki + Grafana avec notifications

Technologies maîtrisées

Terraform
Ansible
Docker
GCP
GitLab CI
Prometheus
Grafana

Méthodologie

  • Gestion de projet Agile avec Jira (3 sprints)
  • Architecture modulaire et réutilisable
  • Documentation technique complète
  • Approche pragmatique et orientée résultats

Merci

Questions ?

Projet Penpot

Infrastructure DevOps complète sur GCP

1 / 23