Platform.sh : L'Hébergement qui Révolutionne la Maintenance et Réduit les Coûts
Après 15 ans à configurer des serveurs, optimiser des infrastructures et déboguer des déploiements nocturnes qui tournent mal, j'ai découvert Platform.sh. Cette plateforme change la donne pour nous, développeurs Symfony.
Le Problème de l'Hébergement Traditionnel
Coûts Cachés de l'Infrastructure Classique
# Coûts réels d'un projet Symfony traditionnel
Infrastructure mensuelle:
Serveur de production: 80€/mois
Serveur de staging: 40€/mois
Serveur de backup: 30€/mois
CDN: 25€/mois
Monitoring: 20€/mois
SSL/Certificats: 15€/mois
TOTAL: 210€/mois
Temps de maintenance (40€/h):
Configuration initiale: 16h = 640€
Mises à jour sécurité: 4h/mois = 160€/mois
Monitoring et alertes: 2h/mois = 80€/mois
Déploiements manuels: 3h/mois = 120€/mois
TOTAL maintenance: 360€/mois
COÛT TOTAL: 570€/mois + 640€ initial
Les Vraies Difficultés
En tant que développeur senior, voici ce qui me prenait le plus de temps :
1. Configuration des Environnements
# Chaque nouveau projet = même galère
sudo apt update && sudo apt upgrade -y
sudo apt install nginx php8.2-fpm php8.2-mysql php8.2-redis mysql-server redis-server
sudo systemctl enable nginx php8.2-fpm mysql redis-server
# Configuration Nginx
sudo nano /etc/nginx/sites-available/monprojet.conf
# ... 50 lignes de configuration
# Configuration PHP
sudo nano /etc/php/8.2/fpm/php.ini
# ... modifications des limites, timezone, etc.
# Configuration SSL avec Let's Encrypt
sudo snap install certbot --classic
sudo certbot --nginx -d mondomaine.com
2. Gestion des Déploiements
# Script de déploiement "fait maison"
#!/bin/bash
set -e
echo "🚀 Déploiement en cours..."
# Backup de la base
mysqldump -u root -p$DB_PASSWORD $DB_NAME > backup_$(date +%Y%m%d_%H%M%S).sql
# Pull du code
git pull origin main
# Installation des dépendances
composer install --no-dev --optimize-autoloader
# Migrations
php bin/console doctrine:migrations:migrate --no-interaction
# Clear cache
php bin/console cache:clear --env=prod
# Permissions
sudo chown -R www-data:www-data var/
echo "✅ Déploiement terminé"
3. Monitoring et Alertes
# Configuration Prometheus/Grafana
# 2 jours de configuration pour avoir des métriques basiques
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'symfony-app'
static_configs:
- targets: ['localhost:9090']
metrics_path: /metrics
scrape_interval: 5s
Platform.sh : Une Révolution
Configuration en 1 Fichier
# .platform.app.yaml - TOUTE la configuration !
name: app
type: php:8.2
dependencies:
php:
composer/composer: '^2'
web:
locations:
'/':
root: 'public'
passthru: '/index.php'
disk: 2048
mounts:
'/var': { source: local, source_path: var }
hooks:
build: |
set -e
composer install --no-dev --optimize-autoloader
deploy: |
set -e
php bin/console doctrine:migrations:migrate --no-interaction
php bin/console cache:clear
variables:
env:
APP_ENV: 'prod'
relationships:
database: "mysql:mysql"
redis: "redis:redis"
Services Automatiques
# .platform/services.yaml
mysql:
type: mysql:10.6
disk: 2048
redis:
type: redis:7.0
elasticsearch:
type: elasticsearch:7.9
disk: 1024
Routes Intelligentes
# .platform/routes.yaml
"https://www.{default}/":
type: upstream
upstream: "app:http"
"https://{default}/":
type: redirect
to: "https://www.{default}/"
Comparaison des Coûts Réels
Projet E-commerce Symfony (Trafic Moyen)
Hébergement Traditionnel
Infrastructure:
- Serveur web (4 CPU, 8GB): 120€/mois
- Base de données MySQL: 60€/mois
- Redis cache: 40€/mois
- CDN Cloudflare Pro: 25€/mois
- SSL et certificats: 15€/mois
- Backup automatique: 30€/mois
- Monitoring (DataDog): 45€/mois
TOTAL: 335€/mois
Maintenance (développeur senior 50€/h):
- Configuration initiale: 20h = 1000€
- Mises à jour mensuelles: 6h = 300€/mois
- Surveillance et incidents: 4h/mois = 200€/mois
- Optimisations performance: 3h/mois = 150€/mois
TOTAL maintenance: 650€/mois
TOTAL MENSUEL: 985€ + 1000€ initial
TOTAL ANNUEL: 12 820€
Platform.sh
Plan Development:
- Environnements illimités
- 3 environnements actifs
- 5GB stockage par environnement
- Trafic inclus: 1TB/mois
PRIX: 50€/mois
Plan Standard (production):
- CPU/RAM auto-scaling
- 10GB stockage
- CDN inclus
- SSL automatique
- Backups automatiques
- Monitoring inclus
PRIX: 100€/mois
TOTAL MENSUEL: 150€/mois
TOTAL ANNUEL: 1 800€
ÉCONOMIE: 11 020€/an (86% d'économies!)
Fonctionnalités Révolutionnaires
1. Environnements Ă la Demande
# Chaque branche Git = environnement automatique
git checkout -b feature/new-payment-system
git push origin feature/new-payment-system
# Platform.sh crée automatiquement :
# - https://feature-new-payment-system-abc123.eu-3.platformsh.site/
# - Base de données dédiée
# - Cache Redis dédié
# - Variables d'environnement
2. Snapshots et Rollback Instantanés
# Créer un snapshot avant déploiement
platform snapshot:create
# Rollback en 30 secondes si problème
platform environment:restore abc123
# Comparé au traditionnel :
# 1. Restaurer backup MySQL (15 minutes)
# 2. Rollback code Git
# 3. Clear cache
# 4. Redémarrer services
# TOTAL: 30-45 minutes de downtime
3. Intégration Native avec Symfony
// config/packages/platformsh.php
<?php
use Platformsh\ConfigReader\Config;
$config = new Config();
if ($config->inRuntime()) {
// Base de données automatiquement configurée
$credentials = $config->credentials('database');
return [
'doctrine' => [
'dbal' => [
'driver' => 'pdo_mysql',
'host' => $credentials['host'],
'port' => $credentials['port'],
'dbname' => $credentials['path'],
'user' => $credentials['username'],
'password' => $credentials['password'],
],
],
];
}
4. Variables d'Environnement Intelligentes
# Variables automatiques par environnement
variables:
env:
# Production
APP_ENV: 'prod'
APP_DEBUG: false
MAILER_DSN: $MAILER_PROD_DSN
# Staging (automatique sur les branches)
APP_ENV: 'staging'
APP_DEBUG: true
MAILER_DSN: $MAILER_TEST_DSN
Cas d'Usage Concrets
Migration d'un Client : Boutique Sylius
Avant Platform.sh
Problèmes rencontrés:
- Déploiements de 2h le weekend
- 3 pannes par mois (mise Ă jour PHP/MySQL)
- Temps de résolution moyen: 4h
- Coût hébergement: 450€/mois
- Temps maintenance: 12h/mois = 600€
Incidents marquants:
- Migration PHP 7.4 → 8.1: 2 jours de travail
- Panne disque dur: 6h de downtime
- Attaque DDoS: configuration manuelle pare-feu
Après Platform.sh
Améliorations:
- Déploiement automatique: 3 minutes
- Zero panne en 8 mois
- Rollback instantané si problème
- Coût total: 120€/mois
- Temps maintenance: 1h/mois = 50€
Nouvelles possibilités:
- 15 environnements de test actifs
- Tests de performance automatiques
- Environnement par feature
Développement d'API avec API Platform
# .platform.app.yaml pour API Platform
name: api
type: php:8.2
dependencies:
php:
composer/composer: '^2'
web:
locations:
'/':
root: 'public'
passthru: '/index.php'
allow: false
rules:
'\.(jpe?g|png|gif|svgz?|css|js|map|ico|bmp|eot|woff2?|otf|ttf)$':
allow: true
'^/robots\.txt$':
allow: true
hooks:
build: |
set -e
composer install --no-dev --optimize-autoloader
php bin/console doctrine:schema:validate --skip-sync
deploy: |
php bin/console doctrine:migrations:migrate --no-interaction
php bin/console cache:clear
variables:
env:
APP_ENV: 'prod'
CORS_ALLOW_ORIGIN: '^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
relationships:
database: "mysql:mysql"
redis: "redis:redis"
Migration : Guide Pratique
Étape 1 : Préparation
# 1. Installer le CLI Platform.sh
curl -sS https://platform.sh/cli/installer | php
# 2. Créer le projet
platform project:create
# 3. Configurer les fichiers
touch .platform.app.yaml
touch .platform/services.yaml
touch .platform/routes.yaml
Étape 2 : Configuration Symfony
// composer.json - Ajouter la dépendance
{
"require": {
"platformsh/config-reader": "^2.4"
}
}
// config/packages/platformsh.php
<?php
use Platformsh\ConfigReader\Config;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
return static function (ContainerConfigurator $container): void {
$config = new Config();
if (!$config->inRuntime()) {
return;
}
// Configuration base de données
$container->extension('doctrine', [
'dbal' => $config->credentials('database'),
]);
// Configuration Redis
$container->extension('framework', [
'cache' => [
'app' => 'cache.adapter.redis',
'default_redis_provider' => $config->formattedCredentials('redis', 'redis'),
],
]);
};
Étape 3 : Premier Déploiement
# 1. Commit des fichiers de configuration
git add .platform*
git commit -m "Add Platform.sh configuration"
# 2. Ajouter le remote Platform.sh
platform project:set-remote
# 3. Push et déploiement automatique
git push platform main
# 4. Vérifier le déploiement
platform url
Retour d'Expérience : 2 Ans d'Utilisation
Les Vrais Avantages
1. Productivité Développeur
Avant Platform.sh:
- Setup nouveau projet: 2-3 jours
- Environnement de staging: 1 jour
- Configuration CI/CD: 2 jours
TOTAL: 1 semaine
Avec Platform.sh:
- Setup complet: 2 heures
- Environnements illimités: automatique
- CI/CD intégré: inclus
TOTAL: 2 heures
2. Fiabilité
- 99.99% d'uptime sur tous mes projets
- Zéro perte de données en 2 ans
- Rollback en 30 secondes vs 30 minutes avant
3. Évolutivité
# Auto-scaling transparent
Trafic normal: 1 container
Pic de trafic: 5 containers (automatique)
Black Friday: 10 containers
Retour normal: 1 container
# Coût = usage réel uniquement
Les Quelques Limitations
1. Courbe d'Apprentissage
Concepts à maîtriser:
- Configuration YAML spécifique
- Relationships entre services
- Variables d'environnement Platform.sh
- CLI et workflows
Temps d'adaptation: 2-3 semaines
2. Vendor Lock-in Relatif
Migration sortante possible mais:
- Reconfiguration infrastructure nécessaire
- Adaptation des scripts de déploiement
- Perte des fonctionnalités avancées
Recommandation:
- Garder les Dockerfiles Ă jour
- Documenter la configuration
Conclusion : Pourquoi Choisir Platform.sh
En tant que développeur Symfony senior à Toulouse, Platform.sh a transformé ma façon de travailler :
ROI Immédiat
- 86% d'économies sur les coûts d'hébergement
- 95% de temps de maintenance en moins
- 10x plus rapide pour lancer de nouveaux projets
Avantages Techniques
- Environnements illimités = tests plus poussés
- Déploiements sans stress = releases plus fréquentes
- Monitoring intégré = détection proactive des problèmes
Impact Business
- Time-to-market divisé par 3
- Disponibilité proche de 100%
- Coûts prévisibles et transparents
Pour les développeurs Symfony qui veulent se concentrer sur le code métier plutôt que sur l'infrastructure, Platform.sh est un game-changer absolu.
Vous souhaitez migrer votre application Symfony vers Platform.sh ? Contactez-moi pour un accompagnement personnalisé !