Scalingo : plateforme PaaS française souveraine
Mise à jour :
Scalingo ↗ est une plateforme PaaS française conçue pour simplifier le déploiement, l’hébergement et la gestion d’applications, sans nécessiter d’infrastructure complexe. Compatible avec GitHub, GitLab, elle permet de pousser du code et de le voir tourner en production en quelques minutes. Certifiée ISO 27001, HDS et hébergée sur un cloud souverain, Scalingo s’adresse aux équipes DevOps en quête d’un environnement sécurisé, automatisé et 100 % hébergé en France.
C’est quoi un PaaS (Platform-as-a-Service)
Le PaaS, ou Platform-as-a-Service, est un modèle de service cloud qui fournit aux développeurs et administrateurs une plateforme clé en main pour développer, tester, déployer et gérer des applications. Contrairement au IaaS, où vous gérez l’infrastructure (serveurs, réseaux, stockage), le PaaS vous décharge complètement de la couche système et middleware.
Le but d’un PaaS est simple : accélérer le cycle de développement, limiter la complexité système et permettre aux équipes de se concentrer uniquement sur le code applicatif.
Pourquoi choisir Scalingo ?
Scalingo ↗ repose sur une architecture PaaS construite sur l’Infrastructure-as-a-Service (IaaS) de 3DS OUTSCALE, entreprise du groupe Dassault Systèmes. Cette infrastructure fournit les blocs fondamentaux de cloud : serveurs virtuels, stockage, et réseau.
Scalingo exploite deux des régions 3DS OUTSCALE présentes en France :
- osc-fr1 : région standard, conforme aux normes ISO 27001 et HDS, idéale pour les applications web classiques.
- osc‑secnum‑fr1 : région dédiée aux applications sensibles, certifiée HDS, répondant aux exigences de sécurité les plus strictes.
Chaque région est composée de trois zones de disponibilité (AZ) interconnectées, offrant une tolérance aux pannes et une continuité de service élevées. La structure IaaS proposant des groupes d’auto-scaling et des load balancers il est possible d’ajuster dynamiquement les ressources en fonction de la charge CPU ou du trafic, garantissant performance et coût maîtrisé.
Scalingo a ajouté une couche de services au-dessus du IaaS 3DS OUTSCALE. Le client n’a donc pas à gérer l’infrastructure, l’OS, le middleware ou les correctifs : tout cela est pris en charge par Scalingo.
Services proposés par Scalingo
Scalingo propose une large gamme de services pour simplifier le développement, le déploiement et la gestion des applications. Voici les principaux services disponibles :
Déploiements et Gestion des Applications
Scalingo facilite le déploiement et la gestion des applications tournant sur divers langages (Python, Node.js, Ruby, Go, Java, PHP, Clojure, Ruby, etc.) :
- Déploiement continu : intégration avec GitHub, GitLab pour déployer automatiquement les applications à chaque commit.
- CLI et API : interface en ligne de commande et API REST pour automatiser les tâches de gestion des applications.
- Review Apps : création automatique d’environnements de test pour chaque pull request, facilitant la validation des modifications avant déploiement.
Pour personnaliser les applications, Scalingo propose des des fonctionnalités comme la gestion des tâches planifiées, les notifications, d’attacher un nom de domaine personnalisé, d’ajouter du stockage, de mettre en place de l’autoscaling, du monitoring, etc.
Bases De Données managées (DBaaS)
Scalingo propose via des addons, une large gamme de bases de données managées, permettant d’éviter la gestion des serveurs de bases de données :
- SQLite : base de données relationnelle légère, idéale pour les applications embarquées ou de petite taille.
- PostgreSQL : base de données relationnelle robuste et performante.
- MySQL : base de données relationnelle populaire, idéale pour les applications web.
- MongoDB : base de données NoSQL orientée documents, adaptée aux données non structurées.
- Redis : base de données en mémoire, idéale pour le caching et les applications en temps réel.
- ElasticSearch : moteur de recherche et d’analyse distribué, parfait pour les applications nécessitant des recherches avancées.
- OpenSearch : fork d’ElasticSearch, offrant des fonctionnalités similaires avec une licence open source.
- InfluxDB : base de données spécialisée dans les séries temporelles, idéale pour les métriques et les données IoT.
Interconnexions
Pour faciliter la connectivité entre les applications et les bases de données, Scalingo propose des fonctionnalités avancées :
- TCP Gateway : permet aux applications de communiquer avec des services externes via TCP, facilitant l’intégration avec des systèmes tiers.
- VPN : création de réseaux privés virtuels pour sécuriser les communications entre les applications et des services externes.
Support
Le support de Scalingo est basé en France et propose une assistance rapide et dédiée, avec des options de support premium pour les secteurs sensibles (public, santé, etc.).
Déploiement d’une première application sur Scalingo
Scalingo propose une interface web intuitive et une CLI pour déployer et gérer les applications. Nous allons voir comment déployer une application simple en quelques étapes.
Création d’un compte de test
Pour tester Scalingo, vous pouvez créer un compte gratuit et déployer une application de démonstration. Ce compte vous permet de déployer une application avec un quota limité pour une période de 30 jours. Vous pouvez ensuite choisir de passer à un compte payant si vous souhaitez continuer à utiliser Scalingo.
Pour créer ce compte, rendez-vous sur scalingo.com ↗ et cliquez sur “Try for free”.
Choisissez le type de compte Business
ou Personal
selon vos besoins. Une
fois votre compte créé, vous recevrez un email de confirmation. Il faudra
ensuite indiquer votre nom d’utilisateur, votre nom d’utilisateur, votre profil
et d’accepter les conditions d’utilisation.
Avec ce compte de démonstration, vous pouvez déployer une application sur la
région osc-fr1. Donnez un nom à votre application, par exemple
mon-app-scalingo
(attention le nom doit être unique), et choisissez la région
osc-fr1
. Ensuite vous devez définir la méthode de déploiement. Vous pouvez
choisir entre :
- Git Scalingo : déploiement via Git, en poussant le code vers Scalingo. Si vous choisissez cette option, Scalingo vous fournira une URL Git spécifique à votre application.
- GitHub : déploiement depuis un dépôt GitHub.
- GitLab : déploiement depuis un dépôt GitLab.
Pour Gitlab et GitHub, vous devez autoriser Scalingo à accéder à votre compte et à vos dépôts. Une fois l’autorisation accordée, vous pouvez sélectionner le dépôt à déployer.
Installation de la CLI Scalingo
Pour interagir avec Scalingo, vous devez installer la CLI Scalingo. Vous pouvez le faire avec la commande suivante :
curl -sSL https://cli-dl.scalingo.io/install | bash
Connexion à votre compte Scalingo
Une fois la CLI installée, connectez-vous à votre compte Scalingo avec la commande suivante :
scalingo login
Entrez vos identifiants de connexion.
Ajout de la clé SSH
Pour créer une clé SSH pour votre compte Scalingo, vous pouvez utiliser la commande suivante :
ssh-keygen -t ed25519 -b 4096 -C "your_email@example.com" -f ~/.ssh/scalingo_key
Entrez un mot de passe pour protéger votre clé SSH, puis ajoutez la clé publique à votre compte Scalingo :
scalingo keys-add stephane-key ~/.ssh/scalingo_key.pub
Création d’une application de démo
Pour ne pas réinventer la roue, nous allons utiliser l’application de démo python ↗. Cette application est un bon point de départ pour déployer une application sur Scalingo.
Commençons par créer un dossier pour notre application et initialiser un environnement virtuel Python :
mkdir <nom_de_l_application>cd <nom_de_l_application>pip install virtualenvvirtualenv venv. venv/bin/activate
Remplacez <nom_de_l_application>
par le nom de votre application. Maintenant,
installons les dépendances nécessaires :
pip install celery redis flaskpip freeze > requirements.txt
Ensuite créons le fichier app.py
avec le contenu suivant :
import osfrom flask import Flaskfrom flask import render_templatefrom flask import request
import task
app = Flask(__name__)
@app.route("/")def hello(): name = request.args.get('name', 'John doe') result = task.hello.delay(name) result.wait() return render_template('index.html', celery=result)
if __name__ == "__main__": port = int(os.environ.get("PORT", 5000)) app.run(host='0.0.0.0', port=port)
Ensuite, créons le template index.html
dans un dossier templates
:
mkdir templates
Le code suivant doit être ajouté dans le fichier templates/index.html
:
<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Celery Flask Application</title></head><body> <h1>Greetings from Scalingo</h1>
<h2> Celery returned: {{ celery.result }} </h2>
<form method="GET" action="/"> <label for="name"> Enter your name : </label> <input type="text" name="name"/> <input type="submit"/> </form></body></html>
Créons maintenant le fichier tasks.py
pour définir une tâche Celery simple :
import celeryimport os
app = celery.Celery('scalingo-sample')
app.conf.update(BROKER_URL=os.environ['REDIS_URL'], CELERY_RESULT_BACKEND=os.environ['REDIS_URL'])@app.taskdef hello(name): return "Hello "+name
Créons maintenant le fichier Procfile
pour lister les processus à exécuter :
web: python app.pyworker: celery --app=task.app worker
Ce fichier indique à Scalingo comment démarrer l’application web et le worker Celery.
Ajoutons l’addon Redis pour stocker les tâches Celery. Pour cela, vous pouvez utiliser la commande suivante :
scalingo --app <nom_de_l_application> addons-add redis redis-sandbox
Remplacez <nom_de_l_application>
par le nom de votre application Scalingo.
Allez sur la page de votre application dans l’interface Scalingo pour vérifier que l’addon Redis a bien été ajouté. Vous devriez voir un buton [dashboard] qui vous permet d’accéder à l’interface de gestion de Redis.
Déploiement de l’application
Pour déployer l’application sur Scalingo, vous devez d’abord initialiser un dépôt Git dans le dossier de votre application :
git initgit add .git commit -m "Initial commit"
Créez ensuite le projet test-scalingo
sur votre site de dépôt de code (GitHub,
GitLab, etc.) et ajoutez le remote à votre dépôt local :
git remote add origin https://github.com/<nom_utilisateur>/test-scalingo.git
Poussez ensuite le code dessus :
git add .git commit -m "Initial commit"git push --set-upstream origin main
Il ne reste plus qu’à lier votre dépôt à l’application Scalingo :
scalingo --app <nom_de_l_application> integration-link-create --auto-deploy --branch main git@github.com:stephrobert/test-scalingo.git
Vous pouvez maintenant déployer votre application en tirant le code vers Scalingo :
scalingo --app test-stephane integration-link-manual-deploy main
Cela a pour effet de lancer le déploiement de l’application. Vous pouvez suivre l’avancement du déploiement dans le dashboard de votre application.
Pour démarrer l’application, vous pouvez utiliser la commande suivante :
scalingo --app test-stephane scale worker:1 web:1
Accès à l’application
Maintenant que l’application est déployée, vous pouvez y accéder via l’URL disponible dans le dashboard de l’application (bouton [Open Application]). Par exemple dqns mon cas, l’URL est:
curl https://test-stephane.osc-fr1.scalingo.io/
Entrez votre nom dans le formulaire et vous devriez voir la réponse de l’application avec le message “Hello <votre_nom>”.
Accès aux base de données Redis
Pour accéder aux bases de données, dans notre cas Redis, vous avez le choix entre deux méthodes d’accès :
-
Avec un conteneur dédié, qui est le plus simple et le plus rapide à mettre en place via la commande :
Terminal window scalingo -a <nom_de_l_application> redis-console -
Avec un client Redis installé sur votre machine, en utilisant les commandes suivantes :
Terminal window scalingo -a test-stephane db-tunnel -i ~/.ssh/scalingo_key.pub SCALINGO_REDIS_URLBuilding tunnel to test-stephane-8484.redis.c.osc-fr1.scalingo-dbs.com:34928You can access your database on:127.0.0.1:10000Vous pouvez alors vous connecter à Redis et lancer des commandes avec un client Redis en utilisant l’adresse
127.0.0.1:10000
depuis une autre fenêtre de terminal :Terminal window redis-cli -h localhost -p 10000 -a <password>localhost:10000> KEYS *1) "_kombu.binding.celery"2) "celery-task-meta-2a83ec09-99cd-46a6-b86e-cf4b9a0ff322"3) "celery-task-meta-5a58b5c7-9393-4e2e-812c-2c173d32e5ba"4) "_kombu.binding.celery.pidbox"5) "_kombu.binding.celeryev"6) "celery-task-meta-afe0aca5-1d0f-4b53-8365-13cff028fc52"Ctrl+D # Pour quitter le client RedisLe mot de passe est affiché dans le dashboard de l’addon Redis.
Cette méthode est valable pour tous les addons Scalingo, y compris les bases de données comme PostgreSQL, MySQL, MongoDB, etc.
Conclusion
A travers ce guide, nous avons vu comment créer un compte, déployer une application simple avec Flask et Celery, et accéder aux bases de données via l’interface web et la CLI.
Au final, même si la documentation de Scalingo est perfectible, j’y suis parvenu sans trop de difficultés. J’adore leur interface intuitive et la simplicité de la CLI. Scalingo est une excellente option pour les développeurs cherchant une solution PaaS française, sécurisée, souveraine et surtout facile à utiliser.