Por qué Swift no es solo para desarrollo móvil
\nCuando escuchas «Swift», la primera asociación son aplicaciones iOS, Xcode y el simulador de iPhone. Pero en los últimos cinco años, el lenguaje se ha convertido en una herramienta completa para el desarrollo de servidores. Vapor, Hummingbird, SwiftNIO — no son solo bibliotecas, sino un ecosistema capaz de competir con Go y Rust. El problema es otro: muchos desarrolladores escriben un backend increíble en Swift, pero se estancan en la etapa de despliegue. ¿Te suena familiar?
\nYo mismo recorrí este camino: desde «sube a Heroku y olvídate» hasta mi propio VPS con Docker y CI/CD. En este artículo, te contaré cómo desplegar aplicaciones Swift correctamente para que no se caigan a las 3 de la madrugada y los usuarios no escriban correos furiosos. Spoiler: las nubes no siempre son una bala de plata, y un VPS puede ser más confiable de lo que parece.
\n\nQué vamos a desplegar: ejemplo de aplicación en Vapor
\nPara mayor claridad, tomaremos una API REST típica en Vapor 4. Será un servidor simple con un solo endpoint que devuelve JSON. El código es mínimo, pero suficiente para mostrar todas las etapas del despliegue.
\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\nTodo esto se ejecuta con swift run o vapor run. Pero en producción nadie hace eso. Necesitamos un proceso estable: compilación, empaquetado, ejecución y monitoreo.
Opción 1: VPS — un viejo amigo es mejor que dos nuevos
\nServidor privado virtual (VPS) — es como tener tu propio apartamento: control total, pero también responsabilidad de limpiar. Para Swift, esta es una opción ideal si quieres entender cómo funciona el sistema bajo el capó.
\n\nCómo preparar un VPS para Swift
\nTomamos Ubuntu 22.04 (o 24.04) en DigitalOcean, Hetzner o Vscale. Swift es compatible oficialmente con Ubuntu, así que no habrá problemas.
\n\n- \n
- Conéctate por SSH:
ssh root@tu-ip-del-servidor\n - Instala las dependencias:
apt update && apt install -y clang libicu-dev libcurl4-openssl-dev libssl-dev\n - Descarga Swift 5.9+ desde swift.org y descomprímelo en
/usr/local\n
# Ejemplo de instalación de Swift en 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\nDespliegue mediante Git + systemd
\nLa forma más sencilla: clona el repositorio en el servidor, compila el binario y ejecútalo como un servicio.
\n\n# En el servidor\ngit clone https://github.com/tunombre/tu-app-swift.git\ncd tu-app-swift\nswift build -c release\ncp .build/release/Run /usr/local/bin/miapp\n\n# Crea un unit de systemd\nsudo nano /etc/systemd/system/miapp.service\n\n[Unit]\nDescription=Mi App Swift\nAfter=network.target\n\n[Service]\nExecStart=/usr/local/bin/miapp\nWorkingDirectory=/root/tu-app-swift\nRestart=always\nUser=root\nEnvironment="PORT=8080"\n\n[Install]\nWantedBy=multi-user.target\n\nEjecuta: systemctl enable miapp && systemctl start miapp. ¡Listo! Ahora tu aplicación funciona como un demonio y se reinicia si falla.
Ventajas del VPS: control total, precio bajo ($5–10/mes), puedes instalar cualquier utilidad. Desventajas: debes configurar tú mismo el monitoreo, las actualizaciones y la seguridad. Si tu aplicación crece, tendrás que escalarla manualmente.
\n\nOpción 2: Docker — contenerizamos Swift
\nDocker resuelve el problema de «en mi máquina funciona». Empaquetas la aplicación junto con el entorno y la ejec