Lo que necesitas saber

La ingeniería de plataforma es el proceso de diseño e implementación de cadenas de herramientas que mejoran la experiencia de entrega de software. Los ingenieros de la plataforma configuran una infraestructura automatizada y controles de autoservicio que permiten a los desarrolladores trabajar de manera más eficiente.
La ingeniería de plataformas es una evolución de DevOps. DevOps establece principios para agilizar el desarrollo mediante la automatización, la autonomía y la colaboración. Estas cualidades también son parte integral de la ingeniería de la plataforma, por lo que la técnica lo ayuda a lograr un buen rendimiento de DevOps.
Comprender DevOps
DevOps acerca a los equipos de desarrollo y operaciones. Se centra en el uso de herramientas, sistemas y procesos iterativos para acortar los ciclos de retroalimentación. Las estrategias exitosas de DevOps aceleran el rendimiento de su equipo sin comprometer la calidad.
DevOps es un concepto abierto. Diferentes organizaciones combinarán conjuntos únicos de herramientas y metodologías para crear su propia implementación. Sin embargo, el énfasis en el rendimiento, la calidad y la unificación de desarrollo y operaciones es una característica constante en todas las organizaciones.
Tradicionalmente, el desarrollo y las operaciones estaban a cargo de equipos separados sin un canal de comunicación directo. Los desarrolladores escribieron el código mientras los operadores aprovisionaban la infraestructura, lanzaban implementaciones y supervisaban los problemas. Este modelo no puede adaptarse a la escala de las aplicaciones modernas, que pueden comprender cientos de microservicios independientes. Los desarrolladores necesitan acceso de autoservicio a entornos similares a los de producción para poder probar nuevos componentes en un entorno realista. Aquí es donde entra la ingeniería de plataformas.
El papel de la ingeniería de plataformas
Los equipos de ingeniería de plataformas son responsables de establecer herramientas y procesos que ayuden a los desarrolladores a ser más productivos. Diseñan la "plataforma" contra la cual construyen los desarrolladores. En la práctica, los ingenieros de plataformas suelen realizar las siguientes tareas:
- Infraestructura de aprovisionamiento, como entornos de prueba, canalizaciones de CI y sistemas de prueba automatizados para que los utilicen los desarrolladores.
- Crear API y procesos internos para rastrear el estado de los cambios y automatizar las implementaciones.
- Enlace con el equipo de operaciones para garantizar que la infraestructura de desarrollo coincida con precisión con la producción.
- Implementar salvaguardas de seguridad, confiabilidad y cumplimiento que identifiquen el código problemático antes de que se fusione.
- Proporcionar controles de autoservicio en torno a lo anterior, para que los desarrolladores puedan crear entornos de prueba, ejecutar pruebas y realizar auditorías de seguridad a pedido, sin esperar a otros equipos.
Este trabajo produce una plataforma que reduce la carga de trabajo de los desarrolladores. Las tediosas partes periféricas de la entrega de software se transfieren a la plataforma administrada, lo que permite a los ingenieros concentrarse en crear nuevas funciones. El equipo puede seguir avanzando, enviando más código a los clientes dentro de las protecciones de la plataforma.
Los roles de ingeniería de plataforma dedicada generalmente solo se encuentran en organizaciones más grandes. Necesita un grupo suficientemente grande de ingenieros disponibles antes de poder dedicar algunos de ellos a construir plataformas internas. Sin embargo, los equipos más pequeños aún pueden beneficiarse del modelo de ingeniería de plataforma. En su forma más pura, la ingeniería de plataformas es simplemente la optimización de su entorno de desarrollo. Intente asignar algunas horas a la semana para crear herramientas y procesos que aborden los cuellos de botella en su flujo de trabajo.
Las mejores plataformas internas se comportan un poco como una solución PaaS privada. Empaquetan todas las capacidades que los desarrolladores requieren en interfaces convenientes como CLI, UI web y canalizaciones automatizadas. La plataforma elimina los gastos generales de creación de software para que los desarrolladores puedan concentrarse en el código. Esto reduce la distracción, disminuye la carga cognitiva y facilita hábitos de trabajo más productivos.
¿Cómo surgió la ingeniería de plataformas?
La ingeniería de plataformas surgió como resultado de la creciente complejidad de las aplicaciones modernas. Hoy en día, las aplicaciones se forman comúnmente a partir de múltiples componentes débilmente acoplados que se ejecutan dentro de entornos distribuidos. El aprovisionamiento y el mantenimiento de la arquitectura pueden ser un procedimiento de varios pasos que requiere conocimientos especializados.
Los desarrolladores están predominantemente preocupados por escribir código que habilite nuevas funciones comerciales. La tarea de administrar la plataforma depende de operaciones. Si bien DevOps acerca a los dos, puede ser poco realista esperar que los desarrolladores individuales sean capaces de implementar la pila completa cuando necesitan un entorno de prueba nuevo. En algunas industrias reguladas, esto podría incluso estar prohibido por los controles de cumplimiento.
La ingeniería de plataforma aborda el problema proporcionando a los desarrolladores acceso de autoservicio a entornos administrados por un equipo dedicado. Los desarrolladores pueden dejar de preocuparse por la infraestructura, las canalizaciones y los scripts de compilación que quedan fuera de las descripciones de su trabajo. Los líderes empresariales y el personal de cumplimiento pueden relajarse sabiendo que todos los entornos se crean de manera estandarizada.
Ingeniería de plataforma vs DevOps
La ingeniería de plataforma se ve mejor como una progresión lógica de DevOps. Es un enfoque concreto que puede utilizar para maximizar el éxito de DevOps. Abordar los puntos débiles de los desarrolladores aumentará el rendimiento y brindará nuevas oportunidades para establecer medidas de seguridad en torno a su código.
La ingeniería de plataformas otorga autonomía a los desarrolladores para que puedan acceder a las herramientas a pedido, sin esperar a los colegas o realizar tareas tediosas ellos mismos. Se basa en gran medida en la automatización y forma un puente con las operaciones, cumpliendo otros dos principios de DevOps. Ayudar a su equipo principal de productos a concentrarse en las nuevas funciones comerciales es una forma garantizada de reducir su tiempo de entrega y responder mejor a las solicitudes de los clientes.
Sin embargo, DevOps es más que solo ingeniería de plataforma. Seguirá necesitando otras herramientas y procesos para respaldar a sus equipos, desde la idea hasta la producción. La ingeniería de plataforma es un componente centrado en el desarrollador en la estrategia DevOps, pero otros, como el trabajo ajustado, la aceptación del equipo y la observabilidad detallada, no son menos importantes.
Ingeniería de Plataformas y SRE
La ingeniería de confiabilidad del sitio (SRE) a menudo se analiza en el contexto de DevOps y la ingeniería de plataforma. Los equipos de SRE tienen la tarea de mantener la confiabilidad de sus servicios. Utilizan objetivos de nivel empresarial como SLO, SLA y presupuestos de error para identificar cuándo el servicio se aparta de las expectativas del usuario. Esto debería indicar a los equipos de ingeniería que dejen de trabajar en nuevas funciones y prioricen las mejoras de estabilidad.
Los equipos de plataforma a menudo se superponen con los ingenieros de SRE. Ambos roles aprovisionan y mantienen entornos de software mediante la automatización. Sin embargo, hay una diferencia significativa en la intención. Mientras que SRE se enfoca en cumplir constantemente con los requisitos del usuario, la ingeniería de la plataforma se trata de satisfacer las necesidades del desarrollador. Aunque debe prestar atención a ambas áreas, la ingeniería de plataforma suele tener una prioridad menor que SRE.
Una canalización que no funcione correctamente en una plataforma de desarrollador será inconveniente y provocará retrasos en su proceso de DevOps, pero no debería afectar a sus usuarios finales. Este es un problema para la ingeniería de plataformas. Sin embargo, SRE deberá involucrarse si un servidor de producción se desconecta o se ralentiza, ya que el incidente afectará directamente a los usuarios.
Resumen
La ingeniería de plataforma acelera la entrega de software al proporcionar a los desarrolladores herramientas de autoservicio para interactuar con la infraestructura. Los equipos de ingeniería utilizan la plataforma provista para probar rápidamente el nuevo código e implementarlo en todos los entornos.
DevOps y la ingeniería de plataformas son temas estrechamente relacionados. La ingeniería de plataforma generalmente se implementa como parte de una estrategia DevOps. Aumenta la autonomía del desarrollador y automatiza las tareas de infraestructura mundanas, adhiriéndose a los principios fundamentales de DevOps.
Es posible hacer DevOps sin ingeniería de plataforma. Del mismo modo, es posible que ya esté utilizando herramientas y procesos que se encuentran bajo el estandarte de ingeniería de plataforma, sin reconocer intencionalmente la disciplina. Establecer un equipo de ingeniería de plataforma dedicado le permite dar el siguiente paso y crear sistemas internos de alto rendimiento que capacitan a los desarrolladores, al mismo tiempo que reduce la brecha con las operaciones.