Aller au contenu

Scalingo : plateforme PaaS française souveraine

Mise à jour :

Logo Scalingo

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 :

Terminal window
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 :

Terminal window
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 :

Terminal window
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 :

Terminal window
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 :

Terminal window
mkdir <nom_de_l_application>
cd <nom_de_l_application>
pip install virtualenv
virtualenv venv
. venv/bin/activate

Remplacez <nom_de_l_application> par le nom de votre application. Maintenant, installons les dépendances nécessaires :

Terminal window
pip install celery redis flask
pip freeze > requirements.txt

Ensuite créons le fichier app.py avec le contenu suivant :

import os
from flask import Flask
from flask import render_template
from 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 :

Terminal window
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 celery
import os
app = celery.Celery('scalingo-sample')
app.conf.update(BROKER_URL=os.environ['REDIS_URL'],
CELERY_RESULT_BACKEND=os.environ['REDIS_URL'])
@app.task
def hello(name):
return "Hello "+name

Créons maintenant le fichier Procfile pour lister les processus à exécuter :

Terminal window
web: python app.py
worker: 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 :

Terminal window
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 :

Terminal window
git init
git 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 :

Terminal window
git remote add origin https://github.com/<nom_utilisateur>/test-scalingo.git

Poussez ensuite le code dessus :

Terminal window
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 :

Terminal window
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 :

Terminal window
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 :

Terminal window
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:

Terminal window
curl https://test-stephane.osc-fr1.scalingo.io/

Scalingo Application

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_URL
    Building tunnel to test-stephane-8484.redis.c.osc-fr1.scalingo-dbs.com:34928
    You can access your database on:
    127.0.0.1:10000

    Vous 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 Redis

    Le mot de passe est affiché dans le dashboard de l’addon Redis.

Scalingo Redis Dashboard

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.

Ressources Utiles