Deployment von Swift-Anwendungen: VPS, Docker und Clouds – von der Idee bis zur Produktion

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum Swift nicht nur für die mobile Entwicklung steht

\n

Wenn man „Swift“ hört, denkt man zuerst an iOS-Apps, Xcode und den iPhone-Simulator. Aber in den letzten fünf Jahren hat sich die Sprache zu einem vollwertigen Werkzeug für die Serverentwicklung entwickelt. Vapor, Hummingbird, SwiftNIO – das sind nicht nur Bibliotheken, sondern ein Ökosystem, das mit Go und Rust konkurrieren kann. Das Problem ist ein anderes: Viele Entwickler schreiben großartige Backends in Swift, aber bleiben in der Deployment-Phase stecken. Kommt Ihnen das bekannt vor?

\n

Ich selbst habe diesen Weg durchgemacht: von „Lade es auf Heroku hoch und vergiss es“ bis hin zu einem eigenen VPS mit Docker und CI/CD. In diesem Artikel erkläre ich, wie man Swift-Anwendungen richtig deployed, damit sie nicht um 3 Uhr morgens abstürzen und die Benutzer keine wütenden E-Mails schreiben. Spoiler: Clouds sind nicht immer die silberne Kugel, und ein VPS kann zuverlässiger sein, als es scheint.

\n\n

Was wir deployen werden: Beispiel einer Anwendung mit Vapor

\n

Zur Veranschaulichung nehmen wir eine typische REST-API mit Vapor 4. Es wird ein einfacher Server mit einem Endpunkt sein, der JSON zurückgibt. Der Code ist minimal, aber ausreichend, um alle Deployment-Schritte zu zeigen.

\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\n

Gestartet wird das Ganze mit swift run oder vapor run. Aber in der Produktion macht das niemand. Wir brauchen einen stabilen Prozess: Build, Paketierung, Start und Monitoring.

\n\n

Variante 1: VPS – ein alter Freund ist besser als zwei neue

\n

Virtueller privater Server (VPS) – das ist wie eine eigene Wohnung: volle Kontrolle, aber auch Verantwortung für die Reinigung. Für Swift ist das die ideale Option, wenn Sie verstehen wollen, wie das System unter der Haube funktioniert.

\n\n

So bereiten Sie einen VPS für Swift vor

\n

Nehmen Sie Ubuntu 22.04 (oder 24.04) bei DigitalOcean, Hetzner oder Vscale. Swift unterstützt Ubuntu offiziell, daher gibt es keine Probleme.

\n\n
    \n
  • Per SSH verbinden: ssh root@your-server-ip
  • \n
  • Abhängigkeiten installieren: apt update && apt install -y clang libicu-dev libcurl4-openssl-dev libssl-dev
  • \n
  • Swift 5.9+ von swift.org herunterladen und in /usr/local entpacken
  • \n
\n\n
# Beispiel für die Installation von Swift auf 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\n

Deployment mit Git + systemd

\n

Der einfachste Weg: Repository auf den Server klonen, Binary bauen und als Dienst starten.

\n\n
# Auf dem Server\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# systemd-Unit erstellen\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\n

Starten: systemctl enable myapp && systemctl start myapp. Fertig! Jetzt läuft Ihre Anwendung als Daemon und startet bei einem Absturz neu.

\n\n

Vorteile von VPS: volle Kontrolle, niedriger Preis (5–10 $/Monat), beliebige Tools installierbar. Nachteile: Sie müssen Monitoring, Updates und Sicherheit selbst einrichten. Wenn Ihre Anwendung wächst, müssen Sie manuell skalieren.

\n\n

Variante 2: Docker – Swift containerisieren

\n

Docker löst das Problem „Auf meinem Rechner funktioniert es“. Sie packen die Anwendung zusammen mit der Umgebung und

Blogs

Buchempfehlungen