Pourquoi Swift n'est pas qu'une question de développement mobile
\nQuand on entend « Swift », la première association est applications iOS, Xcode et simulateur d'iPhone. Mais ces cinq dernières années, le langage est devenu un outil à part entière pour le développement serveur. Vapor, Hummingbird, SwiftNIO — ce ne sont pas de simples bibliothèques, mais un écosystème capable de concurrencer Go et Rust. Le problème est ailleurs : de nombreux développeurs écrivent un super backend en Swift, mais se bloquent au stade du déploiement. Ça vous parle ?
\nJ'ai moi-même parcouru ce chemin : de « dépose sur Heroku et oublie » à mon propre VPS avec Docker et CI/CD. Dans cet article, je vais vous expliquer comment déployer correctement des applications Swift pour qu'elles ne plantent pas à 3 heures du matin et que les utilisateurs n'envoient pas de lettres de colère. Spoiler : le cloud n'est pas toujours une solution miracle, et un VPS peut être plus fiable qu'il n'y paraît.
\n\nCe que nous allons déployer : exemple d'application avec Vapor
\nPour plus de clarté, prenons une API REST typique avec Vapor 4. Ce sera un serveur simple avec une seule route, qui renvoie du JSON. Le code est minimal, mais suffisant pour montrer toutes les étapes du déploiement.
\n\n// Sources/App/routes.swift\nimport Vapor\n\nfunc routes(_ app: Application) throws {\n app.get { req async in\n return "Hello, Swift on Server!"\n }\n \n app.get("api", "health") { req -> HTTPStatus in\n return .ok\n }\n}\n\nTout cela se lance via swift run ou vapor run. Mais en production, personne ne fait ça. Nous avons besoin d'un processus stable : compilation, empaquetage, lancement et surveillance.
Option 1 : VPS — un vieil ami vaut mieux que deux nouveaux
\nUn serveur privé virtuel (VPS) — c'est comme un appartement personnel : contrôle total, mais aussi responsabilité du ménage. Pour Swift, c'est l'idéal si vous voulez comprendre comment le système fonctionne sous le capot.
\n\nComment préparer un VPS pour Swift
\nOn prend Ubuntu 22.04 (ou 24.04) chez DigitalOcean, Hetzner ou Vscale. Swift supporte officiellement Ubuntu, donc aucun problème.
\n\n- \n
- Connexion en SSH :
ssh root@your-server-ip\n - Installation des dépendances :
apt update && apt install -y clang libicu-dev libcurl4-openssl-dev libssl-dev\n - Téléchargement de Swift 5.9+ depuis swift.org et extraction dans
/usr/local\n
# Exemple d'installation de Swift sur Ubuntu\nwget https://download.swift.org/swift-5.9.2-release/ubuntu2204/swift-5.9.2-RELEASE/swift-5.9.2-RELEASE-ubuntu22.04.tar.gz\ntar xzf swift-5.9.2-RELEASE-ubuntu22.04.tar.gz\nmv swift-5.9.2-RELEASE-ubuntu22.04 /usr/local/swift\necho 'export PATH=/usr/local/swift/usr/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\nswift --version\n\nDéploiement via Git + systemd
\nLa méthode la plus simple : cloner le dépôt sur le serveur, compiler le binaire et le lancer en tant que service.
\n\n# Sur le serveur\ngit clone https://github.com/yourname/your-swift-app.git\ncd your-swift-app\nswift build -c release\ncp .build/release/Run /usr/local/bin/myapp\n\n# Création d'une unité systemd\nsudo nano /etc/systemd/system/myapp.service\n\n[Unit]\nDescription=My Swift App\nAfter=network.target\n\n[Service]\nExecStart=/usr/local/bin/myapp\nWorkingDirectory=/root/your-swift-app\nRestart=always\nUser=root\nEnvironment="PORT=8080"\n\n[Install]\nWantedBy=multi-user.target\n\nOn lance : systemctl enable myapp && systemctl start myapp. Terminé ! Maintenant votre application fonctionne comme un démon et redémarre en cas de panne.
Avantages du VPS : contrôle total, prix bas (5–10 $/mois), possibilité d'installer n'importe quel utilitaire. Inconvénients : vous devez configurer vous-même la surveillance, les mises à jour et la sécurité. Si votre application grandit, vous devrez la faire évoluer manuellement.
\n\nOption 2 : Docker — conteneuriser Swift
\nDocker résout le problème « ça marche sur ma machine ». Vous empaquetez l'application avec son environnement et enregistrez