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.
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
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
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
Lecturas recomendadas
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.