Despliegue de aplicaciones Swift: VPS, Docker y nubes — desde la idea hasta la producción

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Por qué Swift no es solo para desarrollo móvil

\n

Cuando 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?

\n

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

Qué vamos a desplegar: ejemplo de aplicación en Vapor

\n

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

Todo 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.

\n\n

Opción 1: VPS — un viejo amigo es mejor que dos nuevos

\n

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

Cómo preparar un VPS para Swift

\n

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

Despliegue mediante Git + systemd

\n

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

Ejecuta: systemctl enable miapp && systemctl start miapp. ¡Listo! Ahora tu aplicación funciona como un demonio y se reinicia si falla.

\n\n

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

Opción 2: Docker — contenerizamos Swift

\n

Docker resuelve el problema de «en mi máquina funciona». Empaquetas la aplicación junto con el entorno y la ejec

Blogs

Book Recommendations