Saltar al contenido principal

Para empresas cuyas aplicaciones siguen en servidores configurados a mano

Contenedores y despliegues automatizados, sin reescribir su aplicación

Cuando los despliegues dependen de pasos manuales y de la única persona que los conoce, cada cambio es un riesgo y cada actualización se aplaza. Empaqueto sus aplicaciones en contenedores, preparo un entorno de desarrollo igual al de producción, automatizo la compilación, las pruebas y el despliegue, y formo a su equipo para gestionarlo.

Situaciones habituales


La aplicación funciona, pero cada cambio cuesta más de lo que debería.

  • Despliegues a mano

    Archivos copiados al servidor, comandos por SSH, una lista de pasos que solo existe en la cabeza de alguien. Se despliega poco porque cada despliegue es un riesgo.

  • En mi ordenador funciona

    Los ordenadores de los desarrolladores, el servidor de pruebas y producción no son iguales, así que algunos errores solo aparecen después del despliegue.

  • Actualizaciones que se aplazan

    El entorno de ejecución, el sistema operativo y las bibliotecas se quedan atrás, porque nadie sabe qué rompería una actualización.

  • Solo una persona sabe cómo funciona

    La configuración está en la cabeza de un desarrollador o de una agencia externa, y unas vacaciones o la salida de esa persona se convierten en un riesgo.

  • Sin comprobaciones automáticas

    Las pruebas, los análisis de seguridad y las revisiones dependen de que alguien se acuerde de hacerlos.


Caso práctico: una plataforma de CI/CD común


Una empresa tecnológica europea (cliente actual, cuyo nombre no se publica)

Proyecto en curso · responsable de un equipo DevOps

Construí una plataforma central de CI/CD: pipelines comunes que cada equipo usa en sus propios repositorios, con la misma construcción de imágenes de contenedor y las mismas comprobaciones de seguridad en todas partes.

El punto de partida

Los pasos de compilación, pruebas y despliegue se definían por separado en cada repositorio, así que cada mejora y cada comprobación de seguridad había que repetirla en todos.

Qué hice

  • Workflows reutilizables de GitHub Actions que los equipos usan en sus propios repositorios
  • Imágenes de contenedor construidas de la misma forma para todas las aplicaciones
  • Comprobaciones de seguridad automáticas en cada pipeline: análisis de vulnerabilidades de las imágenes, revisión de los Dockerfiles y detección de secretos
  • Infraestructura en Terraform y configuración de servidores con Ansible

Tecnología

  • GitHub Actions
  • Docker
  • Trivy
  • Hadolint
  • gitleaks
  • Terraform
  • Ansible

Cómo se organiza el trabajo


Tres fases, cada una con un resultado por escrito. Después de cada fase, usted decide si continuar.

  1. Evaluación

    Qué funciona dónde y cómo se despliega.

    • Aplicaciones, servidores, versiones y dependencias
    • Cómo funcionan hoy los despliegues, las copias de seguridad y los accesos
    • Riesgos: versiones sin soporte, pasos manuales, comprobaciones que faltan
    • Un plan por escrito: qué contenerizar primero, la plataforma de destino y el esfuerzo de cada paso
  2. Contenedores y pipelines

    Compilar, probar y desplegar siempre de la misma forma.

    • Aplicaciones empaquetadas en contenedores, con la configuración y los secretos fuera de las imágenes
    • Un entorno de desarrollo que arranca con un solo comando (Docker Compose)
    • Pipelines de CI/CD: compilación, pruebas, análisis de imágenes y despliegue con cada cambio
    • Infraestructura como código con Terraform, y monitorización con alertas
  3. Traspaso y operación

    Lo gestiona su equipo, o lo gestiono yo.

    • Documentación y una presentación guiada de la nueva infraestructura
    • Formación práctica para desarrolladores y equipos de operaciones
    • Una revisión de seguimiento después de los primeros despliegues
    • Alojamiento y operación opcionales de las aplicaciones en contenedores

Alcance y forma de trabajo


  • Su aplicación, tal como está

    La mayoría de las aplicaciones pueden contenerizarse sin reescribirlas. Si hace falta un cambio en el código, por ejemplo para leer la configuración del entorno, lo describo y lo implementan sus desarrolladores.

  • La plataforma que encaja

    Un servidor con Docker Compose, un servicio de contenedores gestionado en AWS o Kubernetes: la elección depende del número de aplicaciones, del equipo y de los requisitos. Kubernetes, solo donde compensa.

  • Ubicación y horario

    Desde Alicante (España), trabajo en remoto con equipos de toda Europa y de fuera de ella, en horario de Europa central (CET/CEST), en inglés o en español.

  • Confidencialidad y acceso

    Antes de cualquier acceso a los sistemas se firma un acuerdo de confidencialidad. El acceso es el mínimo necesario y por tiempo limitado, y no se realiza ningún cambio en producción sin su autorización.

Fuera del alcance

  • Desarrollo de software: escribir o reescribir el código de la aplicación, o pasarla a otro lenguaje o framework. Los cambios en el código siguen en manos de sus desarrolladores o de su agencia; yo aporto el entorno, los pipelines y el asesoramiento.
  • Reventa de alojamiento, de capacidad en la nube o de licencias.

Introduzco contenedores y CI/CD en equipos de desarrollo desde 2014, y construyo plataformas Kubernetes en AWS. Ver experiencia


Preguntas frecuentes


¿Hay que reescribir la aplicación?

No. Las aplicaciones en PHP, Java, Node.js, Python y la mayoría de los demás lenguajes funcionan en un contenedor tal como están. Los cambios pequeños, por ejemplo leer la configuración de variables de entorno, se describen en el plan y los hacen sus desarrolladores.

¿Necesitamos Kubernetes?

Al principio, normalmente no. Para pocas aplicaciones, un servidor con Docker Compose o un servicio de contenedores gestionado como Amazon ECS es más sencillo de gestionar. Kubernetes compensa con muchos servicios y varios equipos.

¿Tenemos que pasarnos a AWS?

No. Los contenedores funcionan en sus propios servidores, en su proveedor de alojamiento o en la nube. Trabajo sobre todo con AWS y lo recomiendo donde encaja.

¿Qué herramientas utiliza?

Herramientas muy extendidas y bien documentadas: Docker y Docker Compose, GitHub Actions o GitLab CI, Terraform y, donde encaja, Kubernetes con Helm y ArgoCD. Nada de scripts a medida que solo entiende una persona.

¿Puede alojar y operar las aplicaciones?

Sí, si lo desea. Cuando las aplicaciones ya funcionan en contenedores, puedo alojarlas y operarlas en un entorno que gestiono yo, o entregar la infraestructura a su equipo.

¿Cuánto trabajo supone?

Depende del número de aplicaciones y de cómo se despliegan hoy. El plan por escrito tras la evaluación indica el esfuerzo de cada paso antes de que usted se comprometa.

Solicitar una consulta


Describa brevemente sus aplicaciones: con qué tecnologías están desarrolladas, dónde funcionan y cómo se despliegan hoy. No envíe contraseñas ni datos de acceso a través de este formulario.

Daniel Toth

Consultor DevOps especializado en AWS y arquitecto cloud

Alicante, España

LinkedIn