Historia de entrega continua de Dailymotion con Jenkins, Jenkins X y Tekton

5 minuto(s) de lectura

En Dailymotion, alojamos y entregamos contenido de video premium a usuarios de todo el mundo. Constantemente estamos creando una gran variedad de software para impulsar el servicio, desde nuestro reproductor o sitio web de Dailymotion hasta nuestra API GraphQL o plataforma de tecnolog铆a publicitaria.

La entrega continua es una pr谩ctica central en nuestra organizaci贸n, lo que nos permite impulsar nuevas funciones de forma r谩pida e iterativa.

Somos los primeros en adoptar Kubernetes: creamos nuestra propia plataforma h铆brida , alojada tanto en las instalaciones como en la nube. Y confiamos en gran medida en Jenkins para impulsar nuestra 鈥減lataforma de lanzamiento鈥, que es responsable de construir, probar, empaquetar e implementar todo nuestro software.

Debido a que tenemos cientos de repositorios, estamos utilizando Jenkins Shared Libraries para mantener nuestros archivos de canalizaci贸n lo m谩s peque帽os posible.

Es una caracter铆stica importante para nosotros, ya que garantiza un bajo costo de mantenimiento y una experiencia homog茅nea para todos los desarrolladores, a pesar de que est谩n trabajando en proyectos que utilizan diferentes pilas de tecnolog铆a. Incluso construimos Gazr {:target=鈥漘blank鈥 rel=鈥漬ofollow,noreferrer鈥潁, una convenci贸n para escribir Makefiles con objetivos est谩ndar, que es la base de nuestras tuber铆as Jenkins.

En 2018, migramos nuestro producto de tecnolog铆a publicitaria a Kubernetes y aprovechamos la oportunidad para configurar una instancia de Jenkins en nuestro nuevo cl煤ster, o mejor a煤n, pasar a una alternativa 鈥渘ativa de la nube鈥. Jenkins X fue lanzado solo unos meses antes, y nos pareci贸 una combinaci贸n perfecta:

  • Est谩 construido en la parte superior y para Kubernetes.
  • En ese momento, en 2018, estaba usando Jenkins para ejecutar las tuber铆as, lo cual fue una buena noticia dada nuestra experiencia con Jenkins.
  • Viene con caracter铆sticas tales como entornos de vista previa que son un beneficio real para nosotros.
  • Y utiliza la pr谩ctica de Gitops, que nos pareci贸 muy interesante porque nos encanta el control de versiones, la revisi贸n por pares y la automatizaci贸n.

Al adoptar Jenkins X descubrimos que primero se trata de un conjunto de buenas pr谩cticas derivadas de los mejores equipos y luego que es un conjunto de herramientas que nos permite implementar esas pr谩cticas. Si intentas adoptar las herramientas sin comprender las pr谩cticas, corres el riesgo de luchar contra la herramienta porque no se ajusta a tus pr谩cticas. Entonces deber铆as comenzar con las pr谩cticas.

Jenkins X se basa en las pr谩cticas descritas en el libro Accelerate , tales como microservicios y arquitectura d茅bilmente acoplada, desarrollo basado en troncales, indicadores de caracter铆sticas, compatibilidad con versiones anteriores, integraci贸n continua, lanzamientos frecuentes y automatizados, entrega continua, Gitops..

Comprender estas pr谩cticas y sus beneficios es el primer paso. Despu茅s de eso, ver谩 las limitaciones de su flujo de trabajo y herramientas actuales. Aqu铆 es cuando puede presentar Jenkins X, su flujo de trabajo y su conjunto de herramientas.

Hemos estado usando Jenkins X desde principios de 2019 para manejar toda la construcci贸n y entrega de nuestra plataforma de tecnolog铆a publicitaria, con grandes beneficios. La principal es la velocidad mejorada: sol铆amos lanzar y desplegar cada dos semanas, al final de cada sprint.

Tras la adopci贸n de Jenkins X y su conjunto de pr谩cticas, ahora estamos lanzando entre 10 y 15 veces por d铆a y desplegando en producci贸n entre 5 y 10 veces por d铆a. Seg煤n el Informe del estado de DevOps para 2019, nuestro equipo de tecnolog铆a publicitaria salt贸 del grupo de actores medianos a alg煤n lugar entre los grupos de artistas de alto y 茅lite.

Pero estos beneficios no fueron gratuitos. Adoptar Jenkins X temprano significaba que ten铆amos que personalizarlo para evitar sus limitaciones iniciales, como la capacidad de implementar en m煤ltiples cl煤steres.

Hemos detallado nuestro trabajo en una reciente publicaci贸n de blog, y recibimos el Premio de la Comunidad Jenkins 鈥淚mplementaci贸n Jenkins X m谩s innovadora鈥 en 2019 por ello. Es importante tener en cuenta que la mayor铆a de los problemas que encontramos se han solucionado o se est谩n solucionando.

El equipo de Jenkins X ha estado escuchando los comentarios de la comunidad y est谩 realmente enfocado en mejorar su producto. El nuevo Jenkins X Labs es un buen ejemplo.

A medida que crece nuestro uso de Jenkins X, estamos alcanzando cada vez m谩s los l铆mites de la 煤nica instancia de Jenkins implementada como parte de Jenkins X. En una plataforma donde cada componente se ha desarrollado con una mentalidad nativa de la nube, Jenkins es el 煤nico. que ha sido forzado a un entorno para el cual no fue construido. Sigue siendo un punto 煤nico de falla, con un costo de mantenimiento mucho mayor que el de los otros componentes, principalmente debido a los diversos complementos.

En 2019, el equipo Jenkins X comenz贸 a reemplazar a Jenkins con una combinaci贸n de Prow y Tekton. Prow (o Lighthouse es el componente que maneja los eventos de webhook entrantes de GitHub, y lo que Jenkins X llama 鈥淐hatOps鈥: todas las interacciones entre GitHub y la plataforma CI / CD.

Tekton es un motor de ejecuci贸n de tuber铆as. Es un proyecto nativo de la nube construido sobre Kubernetes, que aprovecha al m谩ximo la API y las capacidades de esta plataforma. Sin punto 煤nico de falla, sin pesadillas de compatibilidad de complementos, todav铆a.

Desde principios de 2020, hemos comenzado un proyecto interno para actualizar nuestra configuraci贸n de Jenkins X, insertando Prow y Tekton; y hemos visto beneficios de inmediato:

  • Una programaci贸n m谩s r谩pida de vainas de 鈥渃orredores鈥 de tuber铆as, porque todos los componentes ahora son componentes nativos de Kubernetes.
  • Tuber铆as m谩s simples: gracias a la sintaxis YAML de Jenkins X Pipelines y a la capacidad de desacoplar f谩cilmente una tuber铆a compleja en m煤ltiples peque帽as que se ejecutan simult谩neamente.
  • Menor costo de mantenimiento.

Si bien reemplazar el motor de canalizaci贸n de Jenkins X puede parecer un detalle de implementaci贸n, de hecho, tiene un gran impacto en los desarrolladores. Todos est谩n acostumbrados a ver la interfaz de usuario de Jenkins como la interfaz de usuario de CI / CD: el punto de entrada principal, la forma de reiniciar manualmente las ejecuciones de canalizaciones, acceder a registros y resultados de pruebas.

Claro, hay una nueva interfaz de usuario y una API real con una CLI incre铆ble, pero la nueva interfaz de usuario a煤n no est谩 terminada, y algunas personas a煤n prefieren usar navegadores web y terminales.

Dejar el ecosistema Jenkins Plugins tambi茅n es una decisi贸n dif铆cil porque algunos proyectos dependen en gran medida de unos pocos complementos. Y finalmente, con la introducci贸n de Prow (Lighthouse), el flujo de trabajo de Github es un poco diferente, ya que las solicitudes de extracci贸n se realizan autom谩ticamente, en lugar de que las personas se fusionen manualmente cuando todas las revisiones y comprobaciones autom谩ticas son verdes.

Entonces, si 2019 fue el a帽o de Jenkins X en Dailymotion, 2020 definitivamente ser谩 el a帽o de Tekton: nuestra plataforma de lanzamiento principal, utilizada por casi todos nuestros proyectos, excepto los de tecnolog铆a publicitaria, todav铆a est谩 impulsada por Jenkins, y nos sentimos m谩s y m谩s m谩s sus limitaciones en un mundo de Kubernetes.

Es por eso que planeamos reemplazar todas nuestras instancias de Jenkins con Tekton, que fue realmente construido para Kubernetes y nos permitir谩 escalar nuestras pr谩cticas de Entrega Continua.

馃憠 Repositorio de Tekton 馃

Fuentes: Noticias Tekton CD Fundaci贸n聽禄 Plataforma de Kubernetes de Dailymotion聽禄 APIGraphQL de Dailymotion