Lista de verificación de preparación para la producción

La traducción del artículo fue preparada específicamente para estudiantes del curso. "Prácticas y herramientas de DevOps", que comienza hoy!

Lista de verificación de preparación para la producción

¿Alguna vez ha puesto en producción un nuevo servicio? ¿O tal vez estuvo involucrado en el apoyo a dichos servicios? En caso afirmativo, ¿qué te motivó? ¿Qué es bueno y qué es malo para la producción? ¿Cómo se capacita a los nuevos miembros del equipo sobre lanzamientos o mantenimiento de servicios existentes?

La mayoría de las empresas terminan adoptando enfoques del “salvaje oeste” cuando se trata de prácticas de operación industrial. Cada equipo decide sus propias herramientas y mejores prácticas mediante prueba y error. Pero esto a menudo afecta no sólo al éxito de los proyectos, sino también al de los ingenieros.

La prueba y el error crean un entorno en el que son comunes las acusaciones y el cambio de culpas. Con este comportamiento, cada vez resulta más difícil aprender de los errores y no volver a repetirlos.

Organizaciones exitosas:

  • darse cuenta de la necesidad de directrices para la producción,
  • estudiar las mejores prácticas,
  • iniciar discusiones sobre cuestiones de preparación para la producción al desarrollar nuevos sistemas o componentes,
  • velar por el cumplimiento de las normas de preparación para la producción.

La preparación para la producción incluye un proceso de “revisión”. La revisión puede realizarse en forma de lista de verificación o de un conjunto de preguntas. Las revisiones se pueden realizar de forma manual, automática o ambas. En lugar de listas estáticas de requisitos, puede crear plantillas de listas de verificación que se puedan adaptar a necesidades específicas. De esta manera, los ingenieros pueden tener una forma de heredar conocimientos y suficiente flexibilidad cuando sea necesario.

¿Cuándo comprobar que un servicio esté listo para la producción?

Es útil realizar una verificación de la preparación de la producción no solo inmediatamente antes del lanzamiento, sino también al transferirlo a otro equipo de operaciones o a un nuevo empleado.

Consultar cuando:

  • Está lanzando un nuevo servicio a producción.
  • Transfieres la operación del servicio de producción a otro equipo, como SRE.
  • Transfiere la operación del servicio de producción a nuevos empleados.
  • Organizar el soporte técnico.

Lista de verificación de preparación para la producción

Hace algún tiempo, a modo de ejemplo, опубликовала Lista de verificación para probar la preparación para la producción. Aunque esta lista se originó con los clientes de Google Cloud, será útil y aplicable fuera de Google Cloud.

Diseño y desarrollo

  • Desarrolle un proceso de construcción repetible que no requiera acceso a servicios externos y no dependa del fallo de sistemas externos.
  • Durante el período de diseño y desarrollo, defina y establezca SLO para sus servicios.
  • Documente las expectativas sobre la disponibilidad de los servicios externos de los que depende.
  • Evite un único punto de error eliminando las dependencias de un único recurso global. Replica el recurso o utiliza un recurso alternativo cuando el recurso no esté disponible (por ejemplo, un valor codificado).

Gestión de configuración

  • La configuración estática, pequeña y no secreta se puede pasar mediante parámetros de línea de comando. Para todo lo demás, utilice los servicios de almacenamiento de configuración.
  • Una configuración dinámica debe tener configuraciones alternativas en caso de que el servicio de configuración no esté disponible.
  • La configuración del entorno de desarrollo no debe estar relacionada con la configuración de producción. De lo contrario, esto puede dar lugar al acceso desde el entorno de desarrollo a los servicios de producción, lo que puede provocar problemas de privacidad y fuga de datos.
  • Documente lo que se puede configurar dinámicamente y describa el comportamiento alternativo si el sistema de entrega de configuración no está disponible.

Gestión de la liberación

  • Documente el proceso de liberación en detalle. Describa cómo las versiones afectan los SLO (por ejemplo, aumentos temporales en la latencia debido a errores de caché).
  • Documentar las liberaciones canarias.
  • Desarrolle un plan de revisión de versiones canarias y, si es posible, mecanismos de reversión automática.
  • Asegúrese de que las reversiones puedan utilizar los mismos procesos que las implementaciones.

Observabilidad

  • Asegúrese de recopilar el conjunto de métricas necesarias para el SLO.
  • Asegúrese de poder diferenciar entre los datos del cliente y del servidor. Esto es importante para encontrar las causas de las averías.
  • Configure alertas para reducir los costos laborales. Por ejemplo, elimine las alertas provocadas por operaciones de rutina.
  • Si usa Stackdriver, incluya métricas de la plataforma GCP en sus paneles. Configure alertas para dependencias de GCP.
  • Propaga siempre los rastros entrantes. Incluso si no participa en el seguimiento, esto permitirá que los servicios de nivel inferior depuren problemas en producción.

Protección y seguridad

  • Asegúrese de que todas las conexiones externas estén cifradas.
  • Asegúrese de que sus proyectos de producción tengan la configuración IAM correcta.
  • Utilice redes para aislar grupos de instancias de máquinas virtuales.
  • Utilice una VPN para conectarse de forma segura a redes remotas.
  • Documentar y monitorear el acceso de los usuarios a los datos. Asegúrese de que todo el acceso de los usuarios a los datos sea auditado y registrado.
  • Asegúrese de que los puntos finales de depuración estén restringidos por las ACL.
  • Desinfectar la entrada del usuario. Configure límites de tamaño de carga útil para la entrada del usuario.
  • Asegúrese de que su servicio pueda bloquear selectivamente el tráfico entrante para usuarios individuales. Esto bloqueará las infracciones sin afectar a otros usuarios.
  • Evite puntos finales externos que inician muchas operaciones internas.

Planificación de capacidad

  • Documente cómo escala su servicio. Por ejemplo: número de usuarios, tamaño de la carga útil entrante, número de mensajes entrantes.
  • Documente los requisitos de recursos para su servicio. Por ejemplo: cantidad de instancias de máquinas virtuales dedicadas, cantidad de instancias de Spanner, hardware especializado como GPU o TPU.
  • Limitaciones de recursos de documentos: tipo de recurso, región, etc.
  • Documente las restricciones de cuota para crear nuevos recursos. Por ejemplo, limitar la cantidad de solicitudes de API de GCE si usa la API para crear nuevas instancias.
  • Considere ejecutar pruebas de carga para analizar la degradación del rendimiento.

Eso es todo. ¡Te veo en clases!

Fuente: habr.com

Añadir un comentario