Ingeniería de plataformas frente a DevOps

Cuando las empresas hablan de entregar software más rápido, a menudo se mencionan los términos "DevOps" e "ingeniería de plataformas". Aunque algunos puedan pensar que son ideas opuestas, en realidad se complementan. 

Míralo así: DevOps es el objetivo general, la cultura y la mentalidad de trabajo en equipo. La ingeniería de plataformas puede ser la forma de alcanzar ese objetivo a gran escala y se centra en crear las herramientas que pueden hacer que DevOps funcione fácilmente.

Definición de DevOps, ingeniería de plataformas e IDP

Para entender cómo se complementan estos conceptos, es importante establecer primero definiciones claras. La diferencia radica en separar el objetivo cultural de DevOps de la disciplina especializada, la ingeniería de plataformas, y las herramientas concretas que crea, la plataforma interna para desarrolladores (IDP). 

DevOps es un conjunto de prácticas que acerca a las personas que escriben el código (desarrollo o "Dev") y a las que lo ejecutan (operaciones u "Ops").

Se trata principalmente de un cambio cultural que se centra en mejorar la comunicación entre los equipos, compartir responsabilidades y automatizar todas las tareas. El objetivo es hacer que el software pase de ser una idea a algo que los clientes puedan usar rápidamente, uniendo personas, procesos y herramientas para acelerar el valor empresarial.

La ingeniería de plataformas es la práctica de diseñar, crear y mantener una plataforma interna para desarrolladores (IDP) con el objetivo de proporcionar prácticas recomendadas a los equipos de ingeniería de software.

Los equipos de ingeniería de plataformas tratan las herramientas para desarrolladores y la infraestructura en la nube como si fueran un producto. Su principal función es eliminar las tareas difíciles y repetitivas de los equipos de desarrollo. Ayudan a crear una capa de autoservicio sencilla y fiable para que los desarrolladores no tengan que ser expertos en servicios en la nube complejos, como redes, seguridad u orquestación de contenedores.

Una plataforma interna para desarrolladores (IDP) es el conjunto real de herramientas y servicios que crea el equipo de ingeniería de plataformas. Es un lugar único donde los desarrolladores pueden encontrar todo lo que necesitan para hacer su trabajo, incluidos recursos como la orquestación de contenedores, las herramientas de infraestructura como código (IaC) y los flujos de procesamiento de CI/CD.

Por ejemplo, una IDP creada en Google Cloud podría usar Google Kubernetes Engine (GKE) para ejecutar contenedores. Al integrar los principios de Site Reliability Engineering (SRE) y DevOps en las prácticas recomendadas de la plataforma, el equipo de ingeniería de plataformas puede reducir la posibilidad de que se produzcan errores humanos y minimizar los periodos de inactividad. La IDP abstrae las tareas más complejas y ofrece a los desarrolladores automatizaciones y tutoriales para que su trabajo sea seguro y correcto desde el principio.

La ingeniería de plataformas es una evolución, no una sustitución

DevOps es la razón por la que necesitamos trabajar juntos y automatizar tareas. La ingeniería de plataformas explica cómo hacemos que esas automatizaciones sean fáciles para todos.

Aunque las empresas o los equipos pequeños pueden gestionar sus procesos mediante una comunicación fluida, todas las organizaciones pueden beneficiarse de adoptar los principios y las prácticas recomendadas de DevOps desde el principio.

Pero cuando una empresa crece hasta tener cientos de desarrolladores:

La complejidad se dispara: cada equipo de desarrollo tiene que aprender a usar y mantener decenas de herramientas, como Cloud Logging, Cloud Monitoring y el código de infraestructura. Esta carga, denominada carga cognitiva, los ralentiza.

La complejidad se dispara: cada equipo de desarrollo tiene que aprender a usar y mantener decenas de herramientas, como Cloud Logging, Cloud Monitoring y el código de infraestructura. Esta carga, denominada carga cognitiva, los ralentiza.

Incoherencias: los distintos equipos pueden configurar sus entornos de forma diferente, utilizando prácticas de seguridad, estándares de código o configuraciones de despliegue variados. Esto dificulta que el equipo de operaciones pueda ayudar a todos.

Incoherencias: los distintos equipos pueden configurar sus entornos de forma diferente, utilizando prácticas de seguridad, estándares de código o configuraciones de despliegue variados. Esto dificulta que el equipo de operaciones pueda ayudar a todos.

La ingeniería de plataformas ayuda a resolver este problema creando una IDP estandarizada con el paquete integral de servicios gestionados de Google Cloud. Además, las prácticas recomendadas lo ponen fácil a la hora de crear, gestionar y escalar IDPs. De esta forma, se mantiene el objetivo de DevOps de conseguir velocidad y calidad a medida que cambia el volumen de negocio.

Comparación entre la ingeniería de plataformas y DevOps

Aunque DevOps y la ingeniería de plataformas son complementarios, sus objetivos principales son distintos.

DevOps se centra en el cambio cultural y hace hincapié en el trabajo en equipo, la responsabilidad compartida y la automatización de todo el flujo de procesamiento de entrega. Su objetivo es alinear a las personas y los procesos para hacer que el valor pase rápidamente de la idea a la fase de producción.

En cambio, la ingeniería de plataformas se centra principalmente en la experiencia de los desarrolladores. Esto se consigue abstrayendo la complejidad de la infraestructura y creando funciones de autoservicio. Al ofrecer una ruta sencilla y fiable para los desarrolladores, la ingeniería de plataformas sirve como disciplina especializada que acelera los objetivos culturales de DevOps a escala.

Ventajas de la ingeniería de plataformas para DevOps

Para los principales líderes técnicos, la ingeniería de plataformas puede ofrecer ventajas financieras y de gestión.

Riesgos y cumplimiento

La ingeniería de plataformas ayuda a mitigar los riesgos al integrar políticas de seguridad y cumplimiento directamente en la plataforma, aplicando automáticamente los estándares en todos los entornos, como los clústeres de GKE, para evitar incoherencias.

Productividad de los desarrolladores

La ingeniería de plataformas mejora los resultados financieros al proporcionar APIs y portales sencillos de autoservicio que reducen significativamente el tiempo que los desarrolladores dedican a las tareas de infraestructura.

Reducción del tiempo de lanzamiento

Al proporcionar a los equipos flujos de trabajo eficientes, la ingeniería de plataformas de Google Cloud puede permitir a las empresas lanzar nuevos servicios con rapidez y facilidad. La infraestructura de Google Cloud permite hacer despliegues eficientes y realizar otras acciones.

Cuándo crear una plataforma interna para desarrolladores

La decisión de crear un equipo de ingeniería de plataformas específico y desarrollar una IDP no se basa en un tamaño de equipo arbitrario, sino en las necesidades de la organización y el coste de la fricción. Una plataforma se vuelve apropiada cuando el tiempo y el esfuerzo que dedican los desarrolladores de aplicaciones a las tareas de infraestructura superan la inversión necesaria para crear y mantener la propia plataforma. Consulta más información en esta guía sobre ingeniería de plataformas.

Cuando una automatización sencilla es suficiente

Las herramientas de CI/CD sencillas, como Cloud Build, pueden ser suficientes si tus aplicaciones no son complejas y tus equipos de desarrollo pueden gestionar fácilmente sus propias necesidades de infraestructura. En este caso, centrarse en el aspecto cultural de DevOps (mejor comunicación, objetivos compartidos y automatización sencilla) es la estrategia más eficaz.

Cuando una plataforma se convierte en la opción más obvia

Un equipo de plataforma suele ser necesario cuando la complejidad empieza a ralentizar a toda tu organización. Esto suele ocurrir si tu empresa experimenta alguna de las siguientes situaciones:

Carga cognitiva elevada: los desarrolladores están dedicando demasiado tiempo a configurar y mantener la infraestructura subyacente en lugar de centrarse en el desarrollo de funciones.

Carga cognitiva elevada: los desarrolladores están dedicando demasiado tiempo a configurar y mantener la infraestructura subyacente en lugar de centrarse en el desarrollo de funciones.

Prácticas incoherentes: hay diferentes patrones de seguridad, operaciones e implementación en tus distintos productos, lo que dificulta la asistencia y la auditoría.

Prácticas incoherentes: hay diferentes patrones de seguridad, operaciones e implementación en tus distintos productos, lo que dificulta la asistencia y la auditoría.

Aprovisionamiento lento: los desarrolladores tardan días en poner en marcha nuevos entornos de prueba o de producción, lo que crea cuellos de botella en el ciclo de vida de desarrollo.

Aprovisionamiento lento: los desarrolladores tardan días en poner en marcha nuevos entornos de prueba o de producción, lo que crea cuellos de botella en el ciclo de vida de desarrollo.

Es entonces cuando crear un equipo de plataformas para desarrollar una IDP coherente y estandarizada puede proporcionar el mayor retorno de la inversión y mantener la velocidad y la calidad que promete DevOps.

Soluciona los retos empresariales que se te presenten con Google Cloud

Los nuevos clientes reciben 300 USD en crédito gratis para invertirlos en Google Cloud.

Ve un paso más allá

Empieza a crear en Google Cloud con 300 USD en crédito gratis y más de 20 productos Always Free.

Google Cloud