Mientras todos celebraban mi cumpleaños, reparé el clúster hasta la mañana y los desarrolladores me contaron sus errores





Aquí hay una historia que cambió para siempre mi enfoque del trabajo de Devops. En los tiempos de los astilleros, mucho, mucho antes de ellos, cuando los chicos y yo solo estábamos pensando en nuestro negocio y trabajando independientemente en pedidos aleatorios, una oferta cayó en mi carrito.



La empresa que escribió se dedicaba al análisis de datos. Procesó miles de solicitudes todos los días. Vinieron a nosotros con las palabras: chicos, tenemos ClickHouse y queremos automatizar su configuración e instalación. Queremos que Ansible, Terraform, Docker y todo esto se almacenen en el gita. Queremos un grupo de cuatro nodos con dos réplicas en cada uno.



Una solicitud estándar, hay docenas de ellos y necesita la misma buena solución estándar. Dijimos "bien" y en 2-3 semanas todo estaba listo. Aceptaron el trabajo y comenzaron a mudarse al nuevo clúster de Klickhaus utilizando nuestra utilidad.



Nadie con ellos quería o sabía cómo jugar con Klickhaus. Entonces pensamos que ese era su principal problema, y ​​por eso la estación de servicio de la empresa simplemente dio el visto bueno a mi equipo para que automatizara el trabajo lo máximo posible para no volver allí.



Acompañamos la mudanza, aparecieron otras tareas: configurar copias de seguridad y monitoreo. En el mismo momento, la estación de servicio de esta empresa se fusionó con otro proyecto, dejándonos para el comandante de uno de los nuestros: Leonid. Lenya no era un chico muy talentoso. Un simple desarrollador que de repente se puso a cargo de Klickhaus. Parece que esta fue su primera asignación para liderar algo, y por el honor acumulado, le dio una fiebre de estrellas.



Juntos comenzamos las copias de seguridad. Me ofrecí a hacer una copia de seguridad de los datos originales de inmediato. Simplemente tome, cierre y arroje elegantemente en un c3. Los datos brutos son oro. Había otra opción: respaldar las propias tablas en Klickhaus, usando un friso y copiando. Pero a Lenya se le ocurrió su propia solución.



Anunció que necesitábamos un segundo grupo de Klickhaus. Y de ahora en adelante, escribiremos datos en dos clústeres: el principal y el de respaldo. Le digo, dicen, Leon, que no será una copia de seguridad, sino una réplica activa. Y si los datos comienzan a perderse en producción, su copia de seguridad será la misma.



Pero Lenya agarró firmemente el volante y se negó a escuchar mis argumentos. Pasamos mucho tiempo con él en la sala de chat, pero no había nada que hacer: Leon estaba conduciendo el proyecto, solo éramos tipos contratados de la calle.



Monitoreamos el estado del clúster y cobramos solo por el trabajo de los administradores. Administración limpia de Klickhaus sin entrar en datos. El clúster estaba disponible, los discos estaban bien, los nodos estaban bien.



Todavía no teníamos idea de que recibimos este pedido debido a un terrible malentendido dentro de su equipo.



El gerente no estaba contento de que Klickhaus fuera lento y, a veces, se perdieran datos. Puso a su STO la tarea de resolverlo. Lo descubrió lo mejor que pudo y concluyó que solo necesita automatizar Klickhaus, y eso es todo. Pero como pronto quedó claro, no necesitaban un equipo de devoluciones en absoluto.



Todo esto resultó ser muy, muy doloroso. Y lo más ofensivo, fue en mi cumpleaños.






Viernes por la tarde. Reservé una mesa en mi bar de vinos favorito y llamé a mis amigos.



Casi antes de irnos, tenemos la tarea de hacer un cambio, lo hacemos, todo está bien. Alter pasó, confirmó Clickhouse. Ya nos hemos reunido en un bar, y nos escriben que no hay datos suficientes. Ellos contaron, todo parece ser suficiente. Y se fueron a celebrar.



El restaurante era ruidoso el viernes por la noche. Después de pedir bebidas, comida, se tumbaron en los sofás. Durante todo este tiempo, mi holgura se fue inundando lentamente con mensajes. Escribieron algo sobre la falta de datos. Pensé que la mañana era más sabia que la tarde. Especialmente hoy.



Cerca de las once, empezaron a llamar. Era el jefe de la empresa ... "Probablemente, decidió felicitarme", pensé con mucha vacilación, cogí el teléfono.



Y escuché algo como: “¡Jodiste nuestros datos! Te pago, ¡pero nada funciona! ¡Estabas a cargo de las copias de seguridad y no hiciste una mierda! ¡Arreglemoslo! " - solo que aún más áspero.



- Sabes qué, vete a la mierda! Hoy es mi cumpleaños, y ahora voy a beber, ¡no a hacer tus palos y mierda casera de junio!



Eso es lo que no dije. En cambio, sacó su computadora portátil y se puso a trabajar.



¡No, bombardeé, bombardeé como el infierno! Vertí cáustico "Te lo dije" en el chat, porque la copia de seguridad, que no era una copia de seguridad, por supuesto, no guardaba nada.



Los chicos y yo descubrimos cómo detener manualmente la grabación y verificar todo. Realmente me aseguré de que algunos de los datos no se escriban.



Dejamos de grabar, contamos el número de eventos que había por día. Añadieron más datos, de los cuales solo un tercio no se registró. Tres fragmentos de 2 réplicas. Inserta 100.000 líneas, 33.000 no están escritas.



Hubo una completa confusión. Todos se enviaron a follar por turnos: Lenya fue primero, seguida por mí y el fundador de la empresa. Solo el SRT unido intentó llevar nuestras llamadas con gritos y correspondencia en la dirección de encontrar una solución al problema.



¿Qué estaba pasando realmente? Nadie entendió.



Los chicos y yo nos asustamos cuando nos dimos cuenta de que un tercio de todos los datos no solo no se registraron, ¡se perdieron! Resultó que el pedido en la empresa era el siguiente: después de la inserción, los datos se eliminaron irrevocablemente, los eventos se trituraron por lotes. Imaginé cómo Sergei convierte todo esto en rublos perdidos.



Mi cumpleaños también se iba a la basura. Nos sentamos en la barra y generamos ideas, tratando de resolver el rompecabezas lanzado. La razón de la caída de Klickhaus no fue obvia. Tal vez sea una red, tal vez se trate de la configuración de Linux. Sí, cualquier cosa, las hipótesis sonaban bastante.



No hice un juramento de desarrollo, pero fue deshonesto dejar a los muchachos del otro lado de la línea, incluso si nos culparon de todo. Estaba 99% seguro de que el problema no estaba en nuestras decisiones, ni de nuestro lado. El 1% de las posibilidades de que lo arruináramos todavía ardía de ansiedad. Pero no importa de qué lado estuviese el problema, tenía que solucionarlo. Dejar a los clientes, sean lo que sean, con una filtración de datos tan terrible es demasiado cruel.



Hasta las tres de la mañana trabajamos en la mesa de un restaurante. Lanzar eventos, insertar seleccionar y conducir para llenar los espacios en blanco. Cuando estropeó los datos, se hace así: toma los datos promedio de los días anteriores y los inserta en los datos que estaban jodidos.



Pasadas las tres de la mañana, mi amigo y yo fuimos a mi casa, pedimos pivasik del mercado de alcohol. Estaba sentado con una computadora portátil y problemas de Klickhaus, un amigo me estaba diciendo algo. Como resultado, una hora más tarde se sintió ofendido porque yo estaba trabajando y no bebiendo cerveza con él, y se fue. Clásico: era amigo de Devops.



A las 6 a.m. recreé la tabla y los datos comenzaron a llenarse. Todo funcionó sin pérdidas.






Entonces fue difícil. Todos se culparon entre sí por la pérdida de datos. Si hubiera un nuevo error, estoy seguro de que comenzaría un tiroteo.



En estos srachs, finalmente comenzamos a entender que la empresa pensaba que éramos los chicos que trabajamos con datos y monitoreamos la estructura de las tablas. Confundieron administradores con dibieys. Y vinieron a preguntarnos no como administradores.



Su principal queja es: qué carajo, usted fue responsable de las copias de seguridad y no las hizo normalmente, continuó con los datos. Y todo esto con jaque mate rebobinado.



Quería justicia. Desenterré la correspondencia y adjunté todas con capturas de pantalla, donde Leonid con todas sus fuerzas obliga a hacer la copia de seguridad que se hizo. Su STO se puso de nuestro lado después de mi llamada telefónica. Después de eso, Lenya admitió su culpa.



El jefe de la empresa, en cambio, no quería culpar a su propia gente. Las pantallas y las palabras no le funcionaron. Creía que como aquí éramos expertos, teníamos que convencer a todos e insistir en nuestra decisión. Aparentemente, nuestra tarea era enseñarle a Lenya y, además, eludirlo, designado por el gerente del proyecto, llegar al punto principal y verter personalmente todas nuestras dudas sobre el concepto de copias de seguridad.



Chatik rezumaba odio, agresión oculta y sin disfraz. No supe que hacer. Todo se ha detenido. Y luego me aconsejaron la forma más fácil: escribirle al gerente en una nota personal y concertar una cita con él. Vasya, las personas en la vida no son tan galgos como en el chat. El jefe respondió a mi mensaje: ven, no hay duda.






Fue el encuentro más divertido de mi carrera. El aliado de mi cliente, STO, no pudo encontrar el tiempo. Fui a la reunión con el jefe y Lyona.



Una y otra vez repetí nuestro posible diálogo en mi cabeza. Logré llegar mucho antes, media hora antes. Los nervios comenzaron, fumé 10 cigarrillos, lo entendí todo, yo, joder, solo. No podré convencerlos. Y entró en el ascensor.



Mientras escalaba, golpeó con un mechero para romperlo.



Como resultado, Leni no estuvo en la reunión. ¡Y tuvimos una gran charla de todo con el principal! Sergei me habló de su dolor. No quería "automatizar Clickhouse", quería que las consultas funcionaran.



No vi una cabra, sino un buen tipo preocupado por su negocio, inmerso en el trabajo 24/7. El chat a menudo nos atrae villanos, sinvergüenzas y idiotas. Pero en la vida estas son personas como tú.



Sergei no necesitaba contratar un par de DevOps. El problema al que se enfrentaron resultó ser mucho mayor.



Le dije que podía resolver sus problemas, es simplemente un trabajo completamente diferente y tengo un amigo DIBI para ella. Si inicialmente hubiéramos descubierto que esto era un trato para ellos, habríamos evitado mucho. Tarde, pero nos dimos cuenta de que el problema estaba en el trabajo de mierda con los datos, y no en la infraestructura.



Nos dimos la mano, la tarifa se subió dos veces y media, pero con la condición: me llevo absolutamente toda la obscenidad con sus datos y Klickhaus para mí. En el ascensor, me puse en contacto con el mismo dibieyschik Max y lo conecté al trabajo. Fue necesario palear todo el racimo.






Treshak en el proyecto adoptado fue a granel. Comenzando con la mencionada "copia de seguridad". Resultó que el mismo clúster "de respaldo" no estaba aislado. Probaron todo en él, a veces incluso lo dejaron en producción.



Los desarrolladores del personal han creado su propio "inserto" de datos personalizado. Funcionó así: archivos por lotes, ejecutar un script y fusionar datos en una placa. Pero el principal problema fue que se aceptó una gran cantidad de datos para una simple solicitud. Solicitud de datos unida por segundo. Todo por el bien de un número: la cantidad por día.



Los desarrolladores internos utilizaron incorrectamente la herramienta de análisis. Fueron a la grafana, escribieron su solicitud real. Volcó datos en 2 semanas. Resultó ser un gráfico hermoso. Pero, de hecho, la solicitud de datos se realizaba cada 10 segundos. Todo esto acumulado en una cola, ya que Klickhaus simplemente no sacó el procesamiento. Ésta fue la razón principal. Nada funcionó en grafan, las solicitudes se pusieron en cola, los datos antiguos e irrelevantes llegaban constantemente.



Reconfiguramos el clúster, rediseñamos el inserto. Los desarrolladores internos reescribieron su "inserción" y comenzaron a fragmentar los datos correctamente.



Max realizó una auditoría completa de la infraestructura. Esbozó un plan para mudarse a un backend completo. Pero esto no le convenía a la empresa. Esperaban de Max un secreto mágico que les permitiría trabajar a la antigua, pero solo de manera efectiva. Lenya todavía estaba a cargo del proyecto, que no había aprendido nada. De todo lo propuesto, volvió a elegir su alternativa. Como siempre, fue la decisión más selectiva ... atrevida. Lyonya creía que su empresa tenía un camino especial. Espinoso y lleno de icebergs.



En realidad, en esto nos separamos, hicimos lo que pudimos.






Con lleno de conos, sabios con esta historia, abrimos nuestro propio negocio y formamos varios principios para nosotros mismos. Nunca empezaremos a trabajar ahora tan bien como entonces.



Después de este proyecto, Max, el reproductor Debian, se unió a nosotros y seguimos trabajando muy bien juntos. Case with Klickhaus enseñó cómo realizar una auditoría completa y exhaustiva de la infraestructura antes de comenzar a trabajar. Profundizamos en cómo funciona todo, y solo entonces aceptamos las tareas. Y si antes nos apresuramos inmediatamente a mantener la infraestructura, ahora primero hacemos un proyecto único, lo que ayuda a comprender cómo ponerlo en funcionamiento.



Y sí, pasamos por alto proyectos con una infraestructura de mierda. Aunque sea por mucho dinero, aunque sea por amistad. No es rentable ejecutar proyectos enfermos. Esta comprensión nos ayudó a crecer. O un proyecto único para poner la infraestructura en orden y luego un contrato de servicio, o simplemente pasamos volando. Más allá de otro iceberg.



PD Entonces, si tiene alguna pregunta sobre su infraestructura, no dude en dejar una solicitud .



Disponemos de 2 auditorías gratuitas al mes, quizás tu proyecto esté entre ellas.



All Articles