Sleurm DevOps: desde Git hasta SRE con todas las paradas

Del 4 al 6 de septiembre, en San Petersburgo, en la sala de conferencias de Selectel, se llevará a cabo un evento de tres días. Sleurm DevOps.

Sleurm DevOps: desde Git hasta SRE con todas las paradas

Construimos el programa partiendo de la idea de que los trabajos teóricos sobre DevOps, así como los manuales de herramientas, pueden ser leídos por cualquiera de manera autónoma. Lo que realmente importa es la experiencia y la práctica: una explicación de cómo se deben y no se deben hacer las cosas, y un relato de cómo lo hacemos nosotros.

En cada empresa, cada administrador o desarrollador tiene su propio nivel de DevOps. Algunos utilizan Git incorrectamente, otros implementan SRE. El curso está organizado de tal manera que cada uno pueda encontrar algo relevante que implementar aquí y ahora.

Comenzamos con Git, luego miramos el desarrollo de la aplicación, la interacción entre el código y la infraestructura, construimos CI/CD, describimos la infraestructura como código (IaC), probamos la solución resultante, configuramos la monitorización, recopilamos y estudiamos los registros, y al final llegamos a SRE: transformando la fiabilidad en una historia medible y gestionable.

Git

Actualmente, solo quien compró su primer portátil ayer no utiliza Git. Es una herramienta trivial y omnipresente, y, sin embargo, a menudo encontramos su uso incorrecto: desde forzar un push en master, hasta copiar archivos de Git al servidor a través de Ctrl-C, Ctrl-V.

Contamos cómo no se debe hacer, cómo se debe hacer, cómo se hace en Southbridge.
Realizamos práctica: fundamentos de Git, trabajo en equipo.

Tema Nº1: Fundamentos del trabajo con Git

  • Comandos básicos git init, commit, add, diff, log, status, pull, push
  • Git flow, ramas y etiquetas, estrategias de merge
  • Trabajo con múltiples repos remotos

Tema №2: Trabajo en equipo con Git

  • GitHub flow
  • Fork, remoto, pull request
  • Conflictos, lanzamientos, otra vez sobre Gitflow y otros flujos aplicados a equipos

El material está organizado de tal manera que administradores y desarrolladores puedan implementar de inmediato todas las prácticas en su trabajo.

Desde la perspectiva de DevOps, un manejo correcto de Git ordena y automatiza los procesos de desarrollo y administración, elimina una serie de problemas repetitivos y mejora la productividad laboral.

Desarrollador DevOps

Vemos DevOps a través de los ojos del desarrollador: configuramos el entorno local, escribimos la aplicación, configuramos su monitoreo y registro, la probamos localmente, organizamos el almacenamiento de variables/secrets y service discovery, y observamos el trazado (opentracing).

Tema Nº3: Trabajo con la aplicación desde el punto de vista del desarrollo

  • Configuración del entorno local: recomendaciones prácticas
  • Escribimos un microservicio en Python (incluyendo pruebas)
  • Aplicación de docker-compose en el desarrollo

Tema Nº4: Interacción entre código e infraestructura

  • Práctica de trabajo con configuraciones

Al final, los desarrolladores verán cómo el código debe enviar registros, cómo probarlo, cómo se depurará en el futuro. Los administradores entenderán las necesidades de los desarrolladores: qué errores pueden surgir en el código, cómo organizar las pruebas para los desarrolladores, cómo probar el proyecto por sí mismo.

En esta etapa se resuelve la principal tarea de DevOps: se establece la comprensión mutua y el trabajo conjunto entre devs y ops. Este es un paso clave para pasar del simple lanzamiento de tareas a una interacción responsable.

Como resultado, aumenta la velocidad y la calidad del trabajo.

CI/CD

La automatización moderna implica CI/CD. Comenzaremos revisando la automatización manual: Makefiles, hooks de Git, scripts. Discutiremos cuándo estas herramientas aún son relevantes y cuándo no deberían ser utilizadas.

Luego, veremos las mejores prácticas modernas de CI con Gitlab como ejemplo.

Tema Nº5: CI/CD introducción a la automatización

  • Introducción a la automatización
  • Herramientas (bash, make, gradle)
  • Uso de git-hooks para automatizar procesos
  • Líneas de ensamblaje de fábricas y su aplicación en TI
  • Ejemplo de construcción de un pipeline "común"
  • Software moderno para CI/CD: Drone CI, BitBucket Pipelines, Travis, etc.

Tema Nº6: CI/CD: Trabajo con Gitlab

  • Gitlab CI — generalidades
  • Gitlab Runner, sus tipos y aplicaciones
  • Gitlab CI, características de configuración, mejores prácticas
  • Etapas de Gitlab CI
  • Variables de Gitlab CI
  • Construcción, prueba, despliegue
  • Control y restricciones de ejecución: solo, cuando
  • Trabajo con artefactos
  • Plantillas dentro de .gitlab-ci.yml, reutilización de acciones en diferentes partes del pipeline
  • Incluir — secciones
  • Gestión centralizada de gitlab-ci.yml (un solo archivo y push automáticos a otros repositorios)

El trabajo conjunto de administradores y desarrolladores alcanza un nuevo nivel: el administrador escribe la plantilla CI, y los desarrolladores la ajustan, construyendo su CI independientemente del administrador.

Se reduce la dependencia de los desarrolladores de los administradores, se minimiza la cantidad de trabajo manual, y desaparece el problema del "único que sabe cómo trabajar con el Makefile". Las implementaciones son confiables y rápidas.

IaC

El tema de Infrastructure as Code, utilizando Terraform, será presentado por el administrador de la nube de Selectel, Alexey Stepanenko. Él mostrará cómo desplegar y escalar servidores de manera rápida y automatizada, cómo empaquetar imágenes automáticamente y cómo utilizar plantillas de configuración para obtener máquinas listas para usar de inmediato.

La persona que ha creado miles de soluciones IaC explicará cómo hacerlo correctamente y cómo no hacerlo.

La solución para la nube de Selectel, con mínimos ajustes, es adecuada para las nubes de Google y Amazon.

Nikolay Mesropyan de Southbridge demostrará, a través de Ansible, cómo desplegar una aplicación en funcionamiento sin tiempo de inactividad y verificar su operatividad.

Si gestionas la infraestructura manualmente (ajustando servidores, instalando bibliotecas y paquetes según sea necesario), al intentar levantar una copia del entorno tendrás que recordar y reproducir todas tus acciones. Esta tarea fácilmente puede llevar de 3 a 5 días. Trabajar con la infraestructura como código garantiza que tengas una descripción actual del entorno, que se puede desplegar en minutos.

Nikolay hablará sobre cómo escribir playbooks, qué errores ocurren y por qué a veces los playbooks funcionan lentamente o no como se esperaba. Esta es la experiencia acumulada a lo largo de muchos años de uso de IaC en Southbridge.

Tema №7: Infrastructure as Code

  • IaC: enfoque de infraestructura como código
  • Proveedores de nube como proveedores de infraestructura
  • Herramientas de inicialización de sistemas, construcción de imágenes (packer)
  • IaC utilizando Terraform
  • Almacenamiento de configuraciones, colaboración, automatización de aplicaciones
  • Práctica en la creación de playbooks de Ansible
  • Idempotencia, declaratividad
  • IaC utilizando Ansible
  • Database as a Code / Alta disponibilidad de PostgreSQL

La infraestructura adquiere declaratividad e idempotencia.
El administrador aprende a gestionar una infraestructura compleja: crear nuevos entornos rápidamente, mantener la uniformidad entre todos los entornos y ver el historial de cambios, lo cual es crítico cuando varios equipos trabajan en el proyecto.
El desarrollador puede estudiar la infraestructura y desplegar entornos por su cuenta.

Bonus de la sección: creación y configuración de un clúster de bases de datos PostgreSQL con alta disponibilidad. Proporcionaremos un playbook listo que utilizamos en Southbridge, podrás desplegar el clúster en un entorno de aprendizaje y utilizar esta solución en tu empresa.

Pruebas de infraestructura y monitoreo

La automatización permite desplegar un error en mil servidores de inmediato. Cada cambio requiere pruebas. Por otro lado, las pruebas manuales consumen tanto tiempo que anulan las ventajas de la automatización.

Mostraremos en la práctica cómo escribir pruebas de roles. Como resultado, podrás crear pruebas para tu empresa. Ya no es necesario recordar la configuración realizada, la describes en las pruebas y verificas automáticamente que todas las soluciones anteriores y parches están en su lugar.

Luego aprenderemos a agregar automáticamente todos los nuevos servidores a la monitorización. Examinaremos por separado la monitorización de la infraestructura y de las aplicaciones. Mostraremos prácticas malas y buenas.

Tema Nº8: Pruebas de infraestructura

  • Pruebas e integración continua con Molecule y Gitlab CI
  • Uso de Vagrant

Tema Nº9: Monitorización de infraestructura con Prometheus

  • ¿Por qué es necesaria la monitorización?
  • Tipos de monitorización
  • Notificaciones en el sistema de monitorización
  • Cómo construir un sistema de monitorización saludable
  • Notificaciones legibles para humanos, para todos
  • Health Check: en qué aspectos deberías prestar atención
  • Automatización basada en datos de monitorización

Una monitorización que no funciona correctamente es una ausencia de monitorización. A los negocios no les importa que la página principal de la tienda en línea esté disponible si el formulario de pago devuelve un error.

En la configuración de la monitorización y en la resolución de problemas, desarrolladores y administradores participan por igual. Tradicionalmente, las tareas de monitorización recae en los administradores. Nuestro curso enseñará a los desarrolladores qué papel juegan en la creación de una monitorización efectiva. Los administradores obtendrán las mejores prácticas de Southbridge. Como resultado, la cantidad de pérdidas causadas por interrupciones y retrasos en el sitio o la aplicación disminuirá rápidamente.

Bono de la sección: automatización basada en la monitorización. Por ejemplo, la monitorización informa que ha habido una carga en el sitio, y el escalado de los servidores web se inicia automáticamente.

Registro

El principal error al trabajar con logs es que administradores y desarrolladores los revisan directamente en los servidores. Si tienes más de un servidor, eso lleva tiempo. No es seguro: el desarrollador accede al servidor donde no debería estar.

DevOps requiere recolección, procesamiento y análisis centralizados de logs.

Tema Nº10: Registro de aplicaciones con ELK

  • Principales aplicaciones y funciones de elastic (búsqueda, almacenamiento, características de escalabilidad, flexibilidad de configuración)
  • Resumen de kibana (principales funciones, lenguaje de consultas, gestión de dashboards, creación de gráficos)
  • Resumen de productos basados en elastic y sus aplicaciones
  • Recopilando métricas en APM (trazado de aplicaciones)
  • Adicionalmente: Resumen del nuevo producto — SIEM

La implementación de este enfoque hará que los logs sean una herramienta simple y comprensible para el análisis, la configuración y el ajuste de aplicaciones e infraestructura.

SRE

Y llegamos al tema que Southbridge solo está observando y por el cual otros ponentes quieren quedarse hasta el último día de Slurm. Nos alegra que Iván Kruglov de Booking.com haya aceptado leerlo.

El proyecto vive en un mundo real, donde la confiabilidad nunca es absoluta, y cada decisión tiene un costo.

¿Qué es SLA en relación con un proyecto complejo? Digamos, ¿cómo evaluar que el sitio está disponible, pero las imágenes se cargan con retraso? ¿Cuáles son las métricas SLA, dónde se obtienen, cómo se obtienen?

¿Cómo establecer SLA? ¿Cómo cumplirlos?

Tema №11: SRE
Definición de SLA, SLO, Error Budget y otros términos aterradores del mundo SRE
SRE: Práctica de monitoreo SLI y SLO
SRE: Práctica de aplicación de Error Budget
SRE: Gestión de interrupciones y carga operativa (apigateway, service mesh, circuit breakers)
El negocio quiere SRE. Al menos a un nivel básico: ¿toma un servidor de respaldo o levanta de un backup? ¿Una base de datos o un clúster? ¿Instalar protección contra DDoS preventivamente o solo en el momento del ataque?

A los directores no les basta escuchar que 'el sitio funciona', cuando reciben una llamada de un cliente que informa que el formulario de pedido no se abre.

Por lo tanto, es importante que el ingeniero de DevOps comprenda al menos superficialmente SRE para poder hablar adecuadamente con el negocio sobre sus necesidades.

Summary

Durante el tiempo Slurm DevOps administradores y desarrolladores aprenderán:
— a trabajar correctamente con Git;
— a organizar el desarrollo local;
— a configurar (administradores) y usar (desarrolladores) CI/CD;
— a trabajar con la infraestructura como código;
— a probar la infraestructura;
— a monitorear la infraestructura y la aplicación;
— a configurar el logging;
— a entender, y en el ideal — usar SRE.

Para los lectores atentos — con el código promocional habrapost, 15% de descuento.

En todos los aspectos estamos preparando práctica y herramientas. Así que cada participante, al regresar del Slurm, podrá llevar a su empresa al siguiente nivel de DevOps.

Para los negocios, esto significa una reducción en los costos de administración y desarrollo, disminución del tiempo de inactividad, aumento de la fiabilidad, entrega más rápida de funcionalidades y corrección de errores.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster