¿Por qué Swift no es solo desarrollo móvil?
Cuando escuchas «Swift», la primera asociación son las aplicaciones iOS. Pero en los últimos años, Swift avanza con paso firme hacia el lado del servidor. Y esto no es solo una moda: Apple está desarrollando activamente el ecosistema y la comunidad está creando frameworks potentes. Si ya escribes en Swift para iOS y quieres ampliar horizontes, los microservicios en Swift serán tu próximo paso lógico.
¿Por qué microservicios? Porque es el estándar moderno para construir un backend: servicios pequeños e independientes que son fáciles de escalar y actualizar. Y Swift, con su rendimiento, seguridad de tipos y sintaxis concisa, es perfecto para esto. En este artículo, analizaremos por dónde empezar a crear microservicios en Swift, escribiremos código real y pondremos en marcha nuestro primer servicio.
¿Qué necesitas saber antes de empezar?
Para una lectura cómoda, necesitarás:
- Conocimientos básicos de Swift (variables, funciones, estructuras)
- Comprensión de HTTP y REST (al menos a nivel de «hay una solicitud, hay una respuesta»)
brewinstalado (para macOS) o Docker (para Linux)
Si te falta algo, no te preocupes, lo iremos viendo sobre la marcha.
Elegimos la herramienta: Vapor, el rey del Swift del lado del servidor
En el mercado de frameworks de servidor para Swift hay dos actores principales: Vapor y Kitura (de IBM). Pero Kitura, lamentablemente, está casi congelado. Mientras que Vapor se desarrolla activamente, tiene una enorme comunidad y documentación. Por lo tanto, nuestra elección es Vapor.
Vapor lo ofrece todo listo para usar: enrutamiento, middleware, trabajo con bases de datos, WebSocket, asincronía mediante async/await. Ideal para construir una arquitectura de microservicios en Swift.
Instalación de Vapor Toolbox
Abre la terminal y ejecuta:
brew install vaporDespués de la instalación, verifica:
vapor --helpSi ves una lista de comandos, todo está bien, puedes crear tu primer proyecto.
Creando nuestro primer microservicio: ¡Hola, Mundo!
Nuestro primer microservicio será simple: recibirá una solicitud GET y devolverá un JSON. Pero lo haremos correctamente, con una arquitectura lista para expandirse.
Paso 1. Crear el proyecto
vapor new HelloMicroservice --template=authcd HelloMicroserviceLa bandera --template=auth añadirá una estructura básica con autenticación. Para un microservicio, esta es una buena práctica: incorporar seguridad desde el principio.
Paso 2. Estructura del proyecto
Después de la creación, verás una estructura como esta:
HelloMicroservice/├── Sources/│ ├── App/│ │ ├── Controllers/│ │ ├── Models/│ │ └── configure.swift│ └── Run/│ └── main.swift├── Tests/├── Dockerfile└── Package.swiftObserva el Dockerfile: ya es una plantilla lista para la contenerización. Microservicios sin Docker son como pizza sin queso.
Paso 3. Escribimos nuestro primer endpoint
Abriremos Sources/App/Controllers/UserController.swift (si no existe, lo creamos). Añadimos un método simple:
import Vapor
struct HealthController: RouteCollection { func boot(routes: RoutesBuilder) throws { let health = routes.grouped("api", "health") health.get(use: checkHealth) } @Sendable func checkHealth(req: Request) async throws -> HTTPStatus { return .ok }}Este es el clásico health-check, la base de cualquier microservicio. Ahora lo registramos en configure.swift:
// al final de la función configuretry app.register(collection: HealthController())Paso 4. Ejecutamos y probamos
vapor runAbre el navegador o la terminal:
curl http://localhost:8080/api/health# Respuesta: 200 OK¡Felicidades! Has t