Despliegue de aplicaciones Kotlin: de VPS a la nube sin dolor

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

Tu código Kotlin funciona localmente. ¿Y ahora qué?

\n\n

Has escrito una aplicación genial en Kotlin. Funciona perfectamente en tu portátil, las pruebas pasan, los endpoints responden al instante. Pero la magia real comienza solo cuando la aplicación sale a la luz, a un servidor real, donde los usuarios puedan verla.

\n\n

El despliegue de aplicaciones Kotlin no es solo "subir un archivo jar al servidor". Es toda una ciencia que incluye la elección de la infraestructura, la configuración del entorno, la garantía de seguridad y tolerancia a fallos. En este artículo, analizaremos los tres enfoques más populares: el VPS clásico, el Docker moderno y las plataformas en la nube flexibles. Aprenderás cómo desplegar aplicaciones Kotlin en cada una de estas opciones, obtendrás ejemplos de código listos para usar y entenderás qué camino es mejor para tu proyecto.

\n\n

Preparación: qué necesitas saber antes del despliegue de Kotlin

\n\n

Antes de sumergirnos en los detalles, asegurémonos de que tenemos la base. Para el despliegue de una aplicación Kotlin necesitarás:

\n\n
    \n
  • Artefacto compilado — normalmente es un archivo JAR (para Spring Boot, Ktor) o un archivo WAR (para proyectos Java EE antiguos). Kotlin se compila a bytecode de JVM, por lo que todas las herramientas estándar de Java funcionan perfectamente.
  • \n
  • Java Runtime Environment (JRE) — como mínimo la versión 11, pero mejor la 17 o 21. Kotlin utiliza activamente las características de las nuevas versiones de Java.
  • \n
  • Sistema de compilación — Gradle o Maven. Usaremos Gradle, ya que es el estándar de facto para proyectos Kotlin.
  • \n
\n\n

Ejemplo del comando más simple para compilar una aplicación Kotlin:

\n\n
./gradlew clean build
\n\n

Después de la ejecución, en la carpeta build/libs/ aparecerá un archivo JAR listo para ejecutarse.

\n\n

Despliegue de Kotlin en VPS: el clásico que funciona

\n\n

Un servidor privado virtual (VPS) es como tener tu propio apartamento. Obtienes control total sobre el entorno, pero también asumes toda la responsabilidad de la limpieza y la seguridad. Este enfoque es ideal para proyectos pequeños, startups o cuando necesitas la máxima flexibilidad.

\n\n

Elección del VPS y configuración del servidor

\n\n

Para aplicaciones Kotlin, cualquier VPS con Linux (Ubuntu 22.04 LTS es una excelente opción) servirá. Requisitos mínimos: 1-2 GB de RAM, 20-30 GB SSD. Recomendamos proveedores con buen soporte: DigitalOcean, Vultr, Hetzner o Timeweb (para usuarios rusos).

\n\n

Después de comprar el servidor, lo primero es actualizar los paquetes e instalar Java:

\n\n
sudo apt update && sudo apt upgrade -y\nsudo apt install openjdk-17-jre-headless -y\njava -version
\n\n

Ahora creemos un usuario simple para ejecutar la aplicación (¡nunca la ejecutes como root!):

\n\n
sudo useradd -m -s /bin/bash kotlinapp\nsudo passwd kotlinapp
\n\n

Ejecución de la aplicación Kotlin en VPS

\n\n

Copiemos el archivo JAR al servidor a través de SCP o SFTP:

\n\n
scp build/libs/myapp-1.0.0.jar kotlinapp@tu-servidor:/home/kotlinapp/app.jar
\n\n

Ahora ejecutemos la aplicación. Para simplificar, usamos nohup para que el proceso no muera al cerrar SSH:

\n\n
nohup java -jar /home/kotlinapp/app.jar --server.port=8080 &
\n\n

Pero esto es solo el primer paso. En la vida real, necesitarás:

\n
    \n
  • Servicio Systemd — para reiniciar automáticamente la aplicación después de fallos y al iniciar el servidor.
  • \n
  • Nginx — como proxy inverso para HTTPS, balanceo de carga y contenido estático.
  • \n
  • Monitoreo — al menos un registro simple y verificación de uptime.
  • \n
\n\n

Ejemplo de un servicio systemd para una aplicación Kotlin (/etc/systemd/system/kotlinapp.service):

\n\n
[Unit]\nDescription=Kotlin Application\nAfter=network.target\n\n[Service]\nUser=kotlinapp\nWorkingDirectory=/home/kotlinapp\nExecStart=/usr/bin/java -jar /home/kotlinapp/app.jar --server.port=8080\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.targe                

Blogs

Book Recommendations