Lorsque j’ai commencé à travailler chez Clever Cloud, j’ai passé du temps à m’amuser pour me familiariser avec la plateforme et ses outils. Ce billet de blog vous présentera comment j’ai réussi à :
- créer une simple application Scala/Akka HTTP template avec persistance PostgreSQL
- lier l’application à un serveur PostgreSQL géré
- la déployer
- l’essayer !
Créer un modèle HTTP Scala/Akka 🔨
Obtenez les sources
Clonez le projet généré à partir du modèle de démarrage rapide Akka Github.
Ce service offre la possibilité de gérer un simple registre d’utilisateurs en mémoire exposant 4 routes :
- Lister tous les utilisateurs
- Obtenir un utilisateur spécifique
- Créer un utilisateur
- Supprimer un utilisateur
Une description complète des commandes cURL disponibles peut être trouvée ici.
Ajouter des fonctionnalités supplémentaires
Quelques fonctionnalités ont été ajoutées à l’exemple original :
- stocker le registre dans une base de données PostgreSQL (au lieu d’être en mémoire)
- lire les paramètres de la base de données à partir des variables d’environnement
- ajouter une basic auth codée en dur
Tous les paramètres peuvent être spécifiés dans le fichier application.conf :
- basic auth
- paramètres de la base de données
Les paramètres sont récupérés à partir des variables d’environnement, ou de la valeur par défaut spécifiée si aucune n’est trouvée.
app {
basic-auth {
user = "foo"
user = ${?BASIC_AUTH_USER}
password = "bar"
password = ${?BASIC_AUTH_PASSWORD}
}
routes {
# If ask takes more time than this to complete the request is failed
ask-timeout = 5s
}
db {
host = "localhost"
host = ${?POSTGRESQL_ADDON_HOST}
port = "5432"
port = ${?POSTGRESQL_ADDON_PORT}
database = "postgres"
database = ${?POSTGRESQL_ADDON_DB}
user = "login"
user = ${?POSTGRESQL_ADDON_USER}
pass = "pass"
pass = ${?POSTGRESQL_ADDON_PASSWORD}
}
}
Exécuter l’application en utilisant Clever Cloud CLI 🚀
Créez une application Clever Cloud
clever create --type sbt myakka --region par --org testorg
Cette commande crée une nouvelle application
- de type sbt pour Scala
- nommée myakka
- dans la région de Paris
- dans mon organisation de test testorg
Activer une instance de build dédiée pour un build plus rapide (pro tip optionnel)
Par défaut, une application nouvellement créée exécutera une instance XS qui est assez petite pour construire rapidement des applications Scala. Une façon de construire plus rapidement est d’utiliser une instance de build dédiée : Dans la console Clever Cloud, allez dans votre application -> options, et cochez la case [] Activer l'instance de build dédiée
. De cette façon, vous pouvez conserver votre instance XS pour exécuter l’application, mais vous pouvez choisir une instance XL pour le temps de build. Ou avec l’outil de ligne de commande :
clever scale -a myakka --build-flavor XL
Créez une base de données PostgreSQL
clever addon -l myakka create postgresql-addon myakkadb
Cette commande commande une instance d’addon PostgreSQL et la lie à myakka
, en injectant les bonnes variables d’environnement dans l’instance de l’application pour contacter la base de données.
La création et la migration de la base de données sont effectuées à l’aide de l’outil flywaydb. Ces scripts se trouvent dans le répertoire migration/db des ressources de l’application.
La migration sera automatiquement appelée une fois que vous aurez spécifié le hook de build approprié dans les variables d’environnement
CC_POST_BUILD_HOOK avec la valeur sbt flywayMigrate
clever env -a myakka set CC_POST_BUILD_HOOK "sbt flywayMigrate"
Configurer les variables d’environnement de la basic auth
Le login et le mot de passe de la basic auth peuvent être spécifiés comme variables d’environnement en utilisant la commande clever env
. Si aucune variable n’est trouvée, la basic auth prendra par défaut les valeurs du fichier application.conf
clever env -a myakka set BASIC_AUTH_USER <YOUR_AUTH_USER>
clever env -a myakka set BASIC_AUTH_PASSWORD <YOUR_AUTH_PASSWORD>
Reliez votre repo local à votre instance d’application Clever Cloud.
Récupérez l’identifiant de votre application avec
clever applications
Liez ensuite le référentiel local à l’application (en créant un fichier .clever.json
)
clever link app_<UUID>
Déployer
Vous êtes maintenant prêt à déployer et à exécuter votre code, il suffit d’exécuter
clever deploy
Vous pouvez maintenant suivre le processus de déploiement jusqu’à ce qu’il se termine avec succès.
Votre application fonctionne maintenant !
Essayez-la
Il est temps de l’expérimenter en utilisant curl
ou votre interface graphique préférée.
Ajouter un utilisateur
Adaptez cette commande afin d’insérer un nouvel utilisateur dans le registre :
curl --request POST \
--url https://app-<UUID>.cleverapps.io/users \
--header 'Content-type: application/json' \
-u '<YOUR_AUTH_USER>:<YOUR_AUTH_PASSWORD>' \
--data '{
"name": "Serge",
"age": 42,
"countryOfResidence": "Greenland"
}'
{
"description": "User Serge created."
}
Récupérer tous les utilisateurs
Vérifiez que l’utilisateur a été correctement créé, en obtenant la liste des utilisateurs :
curl --request GET \
--url https://app-<UUID>.cleverapps.io/users \
-u '<YOUR_AUTH_USER>:<YOUR_AUTH_PASSWORD>'
{"users":[{"age":42,"countryOfResidence":"Greenland","name":"Serge"}]}
Ça marche, c’est un succès ! 🎉