Harness
Google y ServiceNOW son los principales inversores en Harness. Muchas empresas como el banco C6, Localiza, 3M, eBay, Nike, Vodafone, Nvidia e incluso la NASA utilizan esta herramienta.
En realidad, Harness es una plataforma que abarca mucho más que solo CI/CD, que sería la construcción y el empuje de artefactos. La idea de la herramienta es crear un ciclo DevOps que abstraiga todo el pipeline incluyendo:
- Gobernanza
- Auditoría
- Seguridad
- SRE
- Desarrollo
- Calidad
Harness posee varias funcionalidades que puedes utilizar o no, permitiendo crecer dentro de la plataforma según sea necesario.
Es posible hacer todo lo que Harness ofrece utilizando herramientas open source y aplicándolas dentro de los pipelines en diferentes etapas. Sin embargo, no todas las empresas poseen personal capacitado y presupuesto para desarrollar y mantener un pipeline enorme que podría existir. A veces la empresa incluso lo tiene pero prefiere externalizar y evitar tantas formaciones en la incorporación de nuevos colaboradores, siendo que la rotación en el mercado TI es muy alta.
El enfoque principal está en la experiencia del desarrollador, para que pueda entregar el trabajo lo más rápido posible evitando toda la burocracia del proceso.
Para facilitar esta dinámica existen incluso plantillas listas con pipelines para que el desarrollador utilice y evite muchas configuraciones pudiendo ya iniciar su código de forma rápida.
Dentro de la plataforma de Harness tendrás un repositorio de código que es el proyecto Gitness. Este es open source y puede ser desplegado para tener tu propio repositorio git si lo deseas, similar a GitLab, pero más ligero.
Licencias
Como la licencia cambia, es bueno consultar la documentación oficial.
No es open source pero posee una cuenta gratuita para pequeños proyectos y estudio. Crea tu cuenta para estudiar.
Developer es el grupo de personas que contribuyen con el desarrollo, despliegue, seguridad y optimización del código. Cada desarrollador creado en tu cuenta tendrá acceso directamente a los módulos principales de Harness.
Los módulos son integrales al flujo de trabajo diario de un desarrollador. Cada módulo (CODE, CI, FF, SEI, IDP) requiere una licencia de desarrollo separada para cada usuario.
¡Avisando que no resulta muy económico!
Módulos
Como se mencionó anteriormente, no es necesario iniciar utilizando todos los módulos, pudiendo crecer según sea necesario.
A continuación algunos módulos que vale la pena comentar, pero existen otros.
Continuous Delivery y GitOps
Diseñado para automatizar y gestionar el proceso de entrega de software, desde el desarrollo hasta la producción.
- Pipelines visuales y configurables para facilitar la automatización
- Despliegue en diversas infraestructuras como Kubernetes, VMs y servicios ofrecidos por las principales nubes
- Integración con Terraform y Ansible
- Reversión automatizada en caso de fallos en la implantación
- Flujos de aprobación configurables para garantizar que solo código revisado llegue a producción
- Gestión de releases con visibilidad sobre lo que se está implantando en cada entorno
- Integración con las principales herramientas de monitorización y logs como Prometheus, Splunk, etc.
- Recopilación de métricas para evaluación continua de las aplicaciones
- En el caso de GitOps, trazabilidad de los cambios
- Reconciliación continua para comparar el estado actual con el estado deseado
- Fácil reversión de commits a estados anteriores e historial completo de cambios para auditoría
Continuous Integration (CI)
Ofrece una serie de recursos para optimizar el proceso de integración continua en un entorno de desarrollo de software.
- Automatización de construcción y pruebas
- Integración con repositorios de código como GitHub, GitLab y Bitbucket, permitiendo la detección automática de cambios y la ejecución de pipelines de CI
- Optimización del uso de recursos y velocidad a gran escala de construcciones y pruebas
- Integración con varias herramientas del mundo DevOps incluyendo las de la propia Harness
- Interfaz gráfica para configuración y gestión de pipelines facilitando creación y mantenimiento
Feature Flags (FF)
- Ayuda a controlar los lanzamientos para usuarios o grupos de usuarios específicos
- Segmentación basada en atributos como localización, versión de la aplicación, tipo de usuario, etc.
- Despliegue canary y blue-green
- Pruebas para comparar diferentes versiones de una funcionalidad y determinar cuál ofrece mejor rendimiento y aceptación
- Reversiones o desactivar alguna funcionalidad en caso de feedback negativo
- Monitorización del impacto de las nuevas funcionalidades a través de métricas integradas e informes pudiendo ayudar en decisiones futuras
Infrastructure as Code Management
El módulo permite que definas, generes y gestiones tu infraestructura usando código, lo que promueve un enfoque más consistente y replicable para la gestión de la infraestructura. Puedes usar herramientas como Terraform, Ansible o CloudFormation para definir la infraestructura deseada.
- Proporciona visibilidad sobre el estado de tu infraestructura y los resultados de las implementaciones de IaC con dashboards e informes en tiempo real
- Verificación de seguridad de la infraestructura, garantizando que las configuraciones estén de acuerdo con las políticas de seguridad y mejores prácticas de tu organización
- Se integra con Continuous Delivery, permitiendo combinar la gestión de la infraestructura con pipelines de entrega continua ayudando a garantizar que la infraestructura esté siempre alineada con el código de aplicación
- Ayuda a monitorizar y optimizar el uso de los recursos y los costes asociados a la infraestructura, ayudando a mantener el presupuesto bajo control
Chaos Engineering
Orientado a mejorar la resiliencia y la fiabilidad de los sistemas a través de la introducción controlada de fallos y anomalías.
- Simulación de fallos y problemas en entornos de producción o pruebas para verificar cómo responde el sistema a condiciones adversas
- Facilita la creación y ejecución de experimentos de caos de forma controlada, donde puedes definir qué partes del sistema serán impactadas y qué fallos serán introducidos
- Se integra con pipelines de CI/CD, permitiendo que añadas pruebas de caos como parte del proceso de entrega continua
- Monitorización y análisis del impacto de los experimentos de caos. Puedes visualizar el comportamiento del sistema durante y después de la ejecución de las pruebas, lo que ayuda a entender la eficacia de las estrategias de resiliencia implementadas
- Permite automatizar y programar experimentos de caos para que ocurran regularmente o en momentos específicos para que el sistema sea probado de forma continua y la resiliencia sea constantemente verificada
- Proporciona informes detallados e insights sobre el impacto de los experimentos de caos
- Se integra con otras herramientas y plataformas
Service Reliability Management
Se centra en garantizar la fiabilidad y el rendimiento de los servicios en entornos de producción.
- Ofrece recursos para monitorizar la salud y el rendimiento de los servicios en tiempo real. Esto incluye la recopilación y análisis de métricas, logs y trazas para identificar y diagnosticar problemas rápidamente
- Permite definir y monitorizar Acuerdos de Nivel de Servicio (SLAs) y Objetivos de Nivel de Servicio (SLOs). Puedes configurar metas de rendimiento y disponibilidad, y el módulo ayuda a garantizar que estos objetivos sean cumplidos
- Alertas y notificaciones para informar a los equipos sobre problemas críticos o eventos que puedan impactar la fiabilidad de los servicios
- Facilita el análisis y la gestión de incidentes. Proporciona herramientas para documentar, investigar y resolver problemas, además de ofrecer insights sobre la causa raíz y las medidas correctivas
- Integra con mecanismos de automatización para resolver problemas comunes o recurrentes de forma automática, reduciendo la necesidad de intervención manual y acelerando la recuperación
- Dashboards e informes detallados sobre el rendimiento de los servicios y el estado de fiabilidad
- Mejora Continua: Ayuda a identificar áreas para mejoras continuas en la fiabilidad de los servicios, a través del análisis de datos históricos y del rendimiento de los servicios a lo largo del tiempo
Reflexión
Muchas herramientas open source en conjunto atienden perfectamente lo que Harness propone, pero llega un momento en que la complejidad se vuelve tan alta que muchas empresas buscan una solución as-a-service para dar al desarrollador más facilidades o resuelven desarrollar su propia plataforma de desarrollo con un equipo de platform engineers.
El desarrollador espera hacer un commit en el código, abrir un pull request y tener ese código entregado con calidad, gobernanza, seguridad, pruebas todo integrado.
Usando o no esta herramienta recuerda esto: ¡Para DevOps el desarrollador es el cliente! De una forma u otra tenemos que centrarnos en la experiencia del desarrollador.