Un administrador es la persona sin la cual nada en la empresa de TI funcionará. Y con un administrador feliz y productivo, las cosas se moverán mejor y más rápido, por lo que un ambiente de trabajo cómodo es la preocupación de la empresa. Acerca de las herramientas para hacer que un equipo sea productivo fue un informe de
Anton Turetsky (
banuchka ) en Highload ++ 2017.
A Anton le encantan las tareas de infraestructura y la automatización de todo lo que se puede automatizar, por lo que su historia se basa en el ejemplo de la creación de infraestructura en un centro de datos y tecnologías relacionadas (Docker, Consul, Puppet ...). Pero los aspectos que interfieren con el trabajo de calidad y cómo resolverlos son tan universales como sea posible y adecuados para casi cualquier equipo ejecutivo. Por lo tanto, le pedimos un corte para decodificar este informe.
Badoo está creciendo cada año, aquí hay algunos números que reflejan esto: 350 millones de mensajes por día, 364 millones de usuarios registrados en todo el mundo, 300 mil nuevos usuarios por día. Pero esto está lejos de ser lo más importante, para la persona que trabaja en Badoo, lo principal es, ante todo, una forma de pensar y un equipo. ¡Badoo es una familia, se trata de personas y es genial!
Quiero comenzar con una provocación que alguien podría no apoyar:
¡Admin es la persona principal de la empresa!
Creo que estará de acuerdo conmigo: el administrador es la persona sin la cual nada en la empresa funcionará: el equipo se acerca a él, lo pone en el sistema, asigna nuevo equipo nuevamente. Por lo tanto, creo que él es el principal.
Daré un ejemplo de práctica personal en Badoo. Juzgue usted mismo sobre esta situación: teníamos un nuevo proyecto llamado ReThink. Actualizamos nuestro logotipo: cambiamos la fuente y el color de las letras de multicolor a púrpura, agregamos un corazón: monótono y genial. Pero se advirtió a los administradores que ReThink sucedería, simplemente lo tomamos y lo cambiamos, advertimos la última noche casi antes de volver a casa. Y aquí una carga algo impredecible en uno de los grupos comenzó a golpear. Gracias a la persona que estaba de servicio y ayudó al resto del equipo a encontrar servidores adicionales y terminarlos. El proyecto en realidad se disparó, no nos caímos, nos desarrollamos normalmente y todos estaban felices.
En confirmación de mis palabras, quiero decir que un administrador feliz y productivo en la empresa es, entre otras cosas, rentable e interesante para la empresa.
Me gustaría pedir a todas las empresas que hagan felices a sus administradores . ¡Entonces estarás bien!

Pensemos en
lo que entristece al administrador . A muchos se les ocurrirá que el administrador está triste por un servidor bloqueado y copias de seguridad perdidas. Todo esto es cierto, pero si el administrador pensara y se entristeciera cada vez que hizo algo mal, y hace algo mal todos los días, no tendría suficientes nervios.
Por lo tanto, denoto el problema, que es un cierto factor humano, a saber, el cambio de contexto.
Cambio de contexto
Hay un número bastante grande de estudios sobre lo que sucede cuando una persona es arrancada y por qué es malo. Uno de los últimos buenos estudios es el trabajo de
Chris Parnin , miembro de la Universidad Tecnológica de Georgia. Recopiló un montón de datos diferentes sobre este tema e hizo muchas conclusiones, la principal de las cuales es:
Una persona que ha sido destituida del trabajo en una tarea tarda entre 10 y 15 minutos en volver a ella.
Esta es una cifra promedio. Alguien puede tener más, otra persona menos, dependiendo del cambio. Con una simple adición, puede descubrir que si se distrajo 4-5 veces en una hora por algo, es probable que se pierda toda una hora de tiempo de trabajo, y es poco probable que haga su trabajo.
Esta es una teoría: una persona investigada, llegó a conclusiones. En la práctica, probablemente enfrentó esta situación: vino al trabajo, pasó todo el día en una bebida alcohólica, hizo todo durante todo el día, no tuvo tiempo para almorzar, no respondió a los mensajeros instantáneos y al correo. Al final de la jornada laboral todos están torturados, le parece que ha hecho mucho de todo. Pero en el mejor de los casos, por la noche te das cuenta de que no has
hecho ni la mitad de lo que planeaste para el día de trabajo. Peor aún, cuando un gerente o colega se te acerca y te pregunta: "¿Qué has hecho hoy?" y entiendes que
corriste, corriste, corriste, pero no hay nada en la salida .
En muchos aspectos, esto proviene de cambiar nuestro contexto y la incapacidad de concentrarnos en la tarea. Para el administrador, un intérprete simple, esto es así.
Pero todavía hay gerentes / líderes de equipo y la otra cara. La característica clave de los líderes de equipo es que ellos, como los maníacos, este cambio de contexto no es algo que puedan sobrevivir, pero incluso a veces lo aumentan para reducirlo más tarde. Es decir, enfocan muchas reuniones con este interruptor durante varias horas, y luego descansan por la noche, trabajando en una tarea. La habilidad de cambio se puede desarrollar hasta el punto de que solo lleva 5 minutos sumergirse en una nueva tarea. Esto es muy bueno, y por el hecho de que saben cómo hacerlo, los gerentes pueden ser apreciados y respetados. Pero para el administrador y el intérprete
, es mejor deshacerse de los interruptores .
Opacidad del proceso
El segundo problema importante es la opacidad de los procesos, que se pueden dividir en dos zonas:
- opacidad de los procesos dentro del equipo ;
- opacidad de procesos fuera del equipo .
Dentro del equipo, esto es en lo que podemos influir: deficiencias o falta de coordinación entre los miembros del equipo. Lo peor que puede provocar la opacidad de los procesos dentro de un equipo es la
duplicación del trabajo . En principio, esto no es malo, aparte del hecho de que está perdiendo, muy probablemente, el tiempo de trabajo de uno de los empleados.
Aquí puede encontrar los pros y decir: “¡Quizás a Vasya le fue mejor que a Petya! Tomemos su decisión. Pero podían hablar entre ellos, y alguien haría uno. Esto es importante
Si los procesos no transparentes están fuera del equipo, por ejemplo, en su conjunto, algo está sucediendo de manera incomprensible en la empresa, dentro del equipo esto puede conducir a
una priorización incorrecta de las tareas.

Por ejemplo, un desarrollador de la web móvil se acercó a mí y me dijo que es importante que elija un servicio que ofrezca algo para la nueva API hoy. Tengo muchas otras tareas, y no me parece en absoluto que su tarea sea una prioridad. Estaba esperando su liberación durante una semana, esperará otros dos días, lo haré más tarde. Para los negocios, este no es siempre el caso. Si un equipo llega a nosotros desde arriba que la tarea actual tiene alta prioridad, porque es parte de una próxima tarea muy grande, es importante que ni siquiera sea transmitida por el gerente, sino que cada miembro del equipo entienda esto simplemente
sin más preámbulos .
Desde el punto de vista del intérprete y el administrador, me gustaría construir mi historia hoy para resolver estos dos problemas principales dentro del equipo. Hablaré sobre cómo encontramos varias reglas para
minimizar el cambio de contexto y hacer que los procesos sean lo más transparentes posible .
Cómo resolver el problema de cambio de contexto
El administrador vino a trabajar, tomó una taza de café, leyó el correo, las copias de seguridad funcionan, nada se cayó, siéntese, trabaje, lo que puede interferir.
Considera la situación habitual. El hombre llegó fresco, todo está bien, abrió sus herramientas de trabajo, escribió en un chat y en el correo, y luego sonó el teléfono, le preguntaron qué había caído en la noche, estaba distraído. Luego, la esposa o la niña publicaron una foto genial: debes entrar y salir, y Facebook también se está moviendo. Aquí amigos vienen a discutir la reunión de fútbol de ayer, me llaman por la noche para tomar cerveza o ahora té. Y todo esto llega a una persona
de todos lados poco a poco.

¿Qué hacer con este problema? Tenemos una persona, está su vida social general, está su aspecto laboral. En este caso, podemos considerar y optimizar solo la parte que se relaciona con sus
herramientas de trabajo . No podemos prohibirle que vaya a tomar cerveza después del trabajo o que use las cuentas sociales, porque no estamos en prisión después de todo.
Por lo tanto, decidimos analizar qué tipo de herramientas de trabajo tiene el administrador, de dónde lo sacan a menudo y qué podemos hacer para reducir esto.
La primera idea es bastante extraña, pero lo intentamos:
permitir que el administrador simplemente no use el chat , porque mucha gente escribe en el chat. Estás trabajando en una tarea, y uno te escribió que esto es importante para él, el otro, que es importante para él. Y permitimos que los administradores no usaran el chat, no respondieran ni escribieran nada allí.
La idea, por supuesto, no despegó, porque además de escribir lo que necesita leer en el chat, el chat es la forma más rápida de comunicarse. Solo necesitas escribir allí. Solo una semana después, quedó claro que la idea era utópica, decidimos abandonarla y fuimos más allá.

Tomamos una decisión en parte extraña: seleccionamos a un miembro del equipo y le dijimos: “¡Amigo, serás un líder condicional! Esto no es una promoción, solo sabe mucho sobre cuál de sus colegas es bueno en qué campo, conoce el flujo general de tareas y más o menos acerca de las prioridades. Por lo tanto, vamos, trabajará de acuerdo con el siguiente escenario. Hay un grupo de tareas que recae en todos los administradores del equipo, puede ver quién está ocupado con qué, sabe cuáles son los plazos para la tarea y siempre puede dárselo a la persona que puede manejarlo lo más rápido posible; o, si hay mucho tiempo para la ejecución, puede asignarlo al junior. Junior necesita contar cosas básicas, pero usted sabe que si lo ayudan, se emocionará y todo será genial ". En principio, la idea es bastante robusta.
Una de las razones por las que no entró por completo es porque a todos los administradores les encanta trabajar en lo que les gusta. Podemos hacer tareas cuando todo está en llamas y tenemos que hacerlo; no entendemos, tomamos y hacemos, sin importar quién. Otra cosa es cuando tiene una opción: "Actualmente estoy trabajando en una tarea y quiero configurar la replicación en MySQL, no quiero tocar Puppet, deje que alguien más lo haga".
La gente comenzó a robar, para algunos hay pocas tareas, para muchos hay, para algunas personas se vuelven poco interesantes, algo tan incomprensible e inexplicable. Quizás este fue nuestro error de cálculo, pero este enfoque no funcionó.
Casi al mismo tiempo, estamos tratando de cargar al Árbitro con otro deber. Para el equipo de administración, otros equipos tienen la tarea de hacer algo: copia de seguridad, restauración, etc. Una persona con dicha aplicación es, de hecho, un cliente, y siempre está esperando comentarios. Cuando, después de establecer una tarea, ve que la tarea ha cambiado en el grupo general del estado "no asignado" a "asignado" a un ejecutor específico, han pasado 2-3 horas, un día hábil, otro, y la tarea no tiene latidos, no está claro comprometido en su tarea o no.

Hay administradores a los que realmente no les gusta realizar sus tareas en forma de correspondencia. Por lo tanto, el árbitro ahora necesita organizar reuniones individuales con cada miembro de su equipo, realizar casi todas las tareas, preguntar si hay dificultades en la tarea, cómo ayudar y
resumir la información recopilada cada 1-2 días.
Las tareas comenzaron a realizarse de alguna manera. Pero todo se estancó, porque nuestro
Árbitro actual
simplemente enterrado en tanto conocimiento . De hecho, para resumir algo para usted, necesita comprender cada área temática, pensar en qué etapa ha llegado un empleado, qué lo está deteniendo y escribir esto. Cuando hay muchas de esas tareas, el Árbitro simplemente deja de escribir algo y las tareas dejan de llevarse a cabo de la misma manera. Por lo tanto, era necesario seguir adelante y cambiar algo nuevamente.
Matriz de Eisenhower

Es posible que ya haya visto esta matriz, simplemente no sabe el nombre. La conclusión es que dividimos la hoja de tareas en 4 partes de acuerdo con dos parámetros:
- urgentemente / no urgentemente;
- importante / no importante
Simplemente incluimos todas nuestras tareas en esta maravillosa tableta y comenzamos a trabajar.
Vale la pena señalar de inmediato que la
celda B , la
más productiva y cómoda para el intérprete, es una tarea importante y no urgente. Este es un gran motivador para una persona cuando su tarea es importante para el equipo, para el proyecto o solo para usted. Entiende que está trabajando no solo en algún tipo de tontería, sino en lo que la gente usará, y esto agrega un incentivo. La ventaja de la no urgencia es que te dejan a tus propios dispositivos. ¿Tienes tiempo para leer, probar, hacer algunos cálculos?
Nos sentamos, pensamos y se nos ocurrió la idea de separar todas las tareas que entran en el departamento de operaciones, y las tareas de formato no son muy importantes y no son muy urgentes para separarlas en un proyecto separado, al que llamamos
ITGROOVE . Aquí incluimos tareas que, en el futuro, tal vez algún día realmente se conviertan en un problema, pero ahora no lo son, y sería bueno realizarlas en un futuro previsible: una o dos semanas.
Después de eso, presentamos la función del
administrador de turno diurno , cuya esencia es la siguiente. Tenemos la primera línea de soporte y respuesta a operaciones de emergencia y disparadores, monitoreo. Si ella no puede hacer frente al problema y decide qué se debe escalar, entonces la primera persona que se involucra en la solución de este problema durante el día es la administradora de turno diurno.
Si antes de eso te dije que nos estamos deshaciendo de la influencia del cambio de contexto, aquí simplemente estamos tirando a una persona a la tronera y diciéndole a todos que hagan todo en una fila, cambien tan pronto como puedan.
De hecho, esto no es del todo cierto, porque el administrador de turno durante el día realiza las siguientes acciones: o intensifica el problema y lo pasa al mejor especialista del departamento en esta área temática, que actualmente está disponible, o casi automáticamente soluciona el problema. Esto no es actividad mental: despertar a una persona por la noche, él irá y lo arreglará.
Como una ventaja adicional, le ofrecimos al oficial de turno diurno, si no tenía nada que hacer y estaba aburrido, trabajar en el proyecto ITGROOVE. ¡La persona no solo
cubre al resto del equipo , sino que también cierra tareas sin importancia y no urgentes!
Al introducir el papel del oficial de turno diurno y dividir las tareas en tareas sin importancia y proyectos, permitimos que el resto del equipo trabaje en la zona B más cómoda en tareas no urgentes, pero importantes. La gente acaba de salir del punto A, miró a su alrededor, y está el punto B, y me siento cómoda, y todos están felices, ¡es genial! Vamos a trabajar!
No ignoraré las tareas desde el punto C.
Suena de alguna manera delirante: "Urgente, pero no importante" , ya sea con urgencia o sin importancia. En nuestro caso, generalmente no se trabaja en este segmento. Las tareas con los criterios "no importantes, pero urgentes" se vuelven "no importantes y no urgentes", o simplemente desaparecen, y no trabajamos en ellas.

Dado que mencioné el hecho de que presentamos el papel de un administrador de turno diurno, repasemos brevemente qué administradores tenemos en general:
- El administrador es ordinario. En principio, todos siempre hacen todo, pero el administrador ordinario trabaja principalmente en tareas en Jira.
- El administrador de turno diurno responde principalmente al teléfono y deja de monitorear.
- El administrador nocturno de turno , una mezcla de los administradores ordinarios y diurnos, responde llamadas y escalamientos por la noche, y trabaja como administrador ordinario durante el día.
Cómo hacer que los procesos sean transparentes
La complejidad de nuestro equipo específico radica en el hecho de que una parte está en Londres, la otra en Moscú, este es un cambio bastante grande en las zonas horarias. En Moscú, los muchachos comienzan a trabajar mucho antes, en Londres simplemente vienen a trabajar y ya han hecho algo. A su vez, nosotros en la oficina de Londres, terminando por la noche, estamos haciendo otras cosas que la gente en Moscú no sabía cuando regresaron a casa. Para coordinar los procesos dentro del equipo, tenemos un mitin semanal los lunes.

Se ve así:
- Ocupamos una sala de reuniones en Moscú, una en Londres.
- Además, se establece el tiempo para que en Londres acaben de ir a trabajar, y en Moscú ya hayan regresado del almuerzo. Todos necesitan unos 40 minutos para sintonizar a un trabajador. Por lo tanto, nos reunimos en un ambiente informal en la televisión, tomamos un agente y comenzamos a discutir.
- Esta es una discusión de muchos a muchos. Nos contamos los proyectos importantes que hemos realizado, lo que esperamos, lo que planeamos hacer, hacer citas el uno para el otro.
Pero el problema es que en algún lugar de la tarde del martes o la mañana del miércoles, la
coordinación está un poco perdida . Por ejemplo, comencé a trabajar en una tarea, me hice a un lado, tengo diferentes tareas para esta semana, algo similar le sucede a un colega de Moscú. Estaremos fuera de sincronización hasta el próximo lunes, hasta la próxima subasta, hay que hacer algo.
Héroe de estado
Hay una herramienta genial llamada
Status Hero . Su esencia es que cuando vienes a trabajar, planeas para ti mismo ciertas tareas. Status Hero tiene 3 campos para completar. Además, esta no es una herramienta obligatoria, no podemos completarla y no usarla.

El truco es este: llegué a trabajar de nuevo, y sé que hoy quiero arreglar algunos DNS, configurar el restablecimiento de métricas en Prometheus, ver cómo funcionarán los nuevos gráficos y posiblemente cerrar las tareas actuales. Encajo todo esto en el plan para hoy.
Pero una línea parpadea sobre mi plan para hoy, que dice que ayer te prometiste hacer esto, y vamos, primero escribes lo que hiciste ayer de lo que prometiste, y luego lo que harás hoy

También hay un maravilloso tercer punto. Este campo es para indicar algunos
eventos externos que bloquean la ejecución de tareas . , - , — , , , — . - , , , .
, , .

. HipChat, , - , . , , . - , , . ¡Esto es asombroso!
Status Hero ?

- , . , , , , , . Status Hero : « — !» , , , .

- , . , , , , , , , - , : «, . , , , . ».

- , , - , , . , - , .
Status Hero
, Status Hero , . ,
, .
, , , , - .
, , , , , , — . , .
, , . Status Hero,
Wiki , , Confluence, , . , , , .
. , Status Hero .
Team Contribution
HighLoad++
Review Badoo . , , : , . , .
— —
. . Review , , . , , , - .
Review ,
snippets . , .

, , , , , , , . , , 3 . daily snippets — , , , — , , .
Status Hero. , . , , — , .

,
, : Status Hero , , , , . , , .
,
« , — »
.
, Status Hero , , Badoo. , .

, , . , . , , , . , -.
, , , , . , .

, , -, xCAT.

, , , Puppet — , Consul , Docker, glpi, . , .
- , .

—
, . -, . , , Raid, , .
xCAT ,
PXE dhcp . , dns , . , — — mac — IP , , .
, xCAT ,
. - Kernel Panic, . xCAT , -, , , , . - — 100 , -, . - , , SN . xCAT SN .
, , xCAT, -, , , dhcp , , , dhcp helper .
, , , , .
Docker
, Docker — . Docker , - .

Docker , ,
registry , , . , Docker , registry Badoo , . ,
Ceph Swift API .
, registry,
Redis . HTTP , Docker distribution , , , docker-registry Redis endpoint Ceph.
HTTP nginx, SSL, basic Auth. , registry , pull push.
Consul
- Consul, , , service discovery Badoo,
service discovery .
, Consul -, , . , 3 master- -.
, - Consul?
Marioneta

Echemos un vistazo a nuestra maravillosa infraestructura de Puppet.
La esencia del cónsul aquí es que elevamos la infraestructura de arriba a abajo (si nos fijamos en la diapositiva de arriba):
- Para comenzar, necesita PostgreSQL, que a su vez será necesario para PuppetDB.
- Levantando PostgreSQL, lo registramos en Consul. Al recaudar PuppetDB, tomamos información de Consul sobre PostgreSQL, nos conectamos y le pasamos la información sobre PuppetDB a Consul.
- A continuación, elevamos el número requerido de nodos Puppet-server en Java. Tomamos información para ellos del cónsul, ponemos información sobre ellos en el cónsul.
- En la última etapa, elevamos el equilibrio de carga a nginx, que se ocupa de la terminación SSL, sirve a 3 puertos:
- puerto para agentes directos de Puppet;
- puerto para Puppet DB;
- puerto de estadísticas.
Todos los demás clientes pasan por el equilibrio de carga.
GLPI
Tenemos algo llamado glpi, es necesario para cualquier centro de datos. Todo es bastante torpe y simple: este es un
servicio de inventario .

Funciona de la siguiente manera:
- En cada servidor , se lanza un simple FusionInventory Agent , que recopila toda la información sobre hardware, software, antivirus, sistemas de archivos; todo depende de la configuración. Por lo general, estamos interesados en todo tipo de indicadores de "hierro": cuánta memoria, qué discos, controlador, caché, etc.
- Esta información en un determinado intervalo de tiempo (en nuestro caso, una vez al día) se envía a un determinado punto final PHP, en el que los datos se procesan y transfieren a la base de datos glpi.
Otra ventaja de usar GLPI y FusionInventory es que podemos
inventariar no solo el hardware del servidor, sino también el equipo de la red, para obtener información sobre qué puertos están disponibles y a qué velocidad están, y lo más importante, qué servidor con qué número de serie se encuentra en qué rack, conectado a qué nodo de red y a qué puertos. El resultado de toda esta acción es una página web donde puede ver toda esta información.
Examinamos 5 herramientas que se describieron en nuestra Wiki, nuestro administrador hipotético las miró y lanzó no más de 3-5 contenedores para cada una: la infraestructura está lista. Obtuvimos una casa de personas felices que trabajan productivamente: se describió una tarea, otras lo ayudaron, en general nos conocimos, leímos y levantamos tal cosa.

En Badoo, hay más hombres con pelotas en el equipo de administradores, pero
somos productivos y definitivamente felices en su mayor parte. Logramos crear nuestro equipo de profesionales amigables, porque pudimos identificar tres problemas y aprendimos cómo tratarlos.
Entonces, lo que es necesario para los artistas (me parece, no solo para el administrador):
- Reduce el cambio de contexto . Deje que la persona trabaje: si es un experto en tecnología, déjelo sentarse y trabajar, ¡no se lo lleve!
- Hacer los procesos transparentes. Si está incumpliendo los plazos y existe la sospecha de que algo no está priorizando las tareas, brinde al equipo información sobre por qué es importante una tarea en particular. Una persona debe ver más allá de su monitor y saber que su participación en el proyecto es importante. Luego trabajará de manera diferente, comprenderá la urgencia y la utilidad de su trabajo.
- Escribe buena documentación. Además, es bueno si esta documentación se divide en diferentes partes. Puede ser detallado y profundo, si desea familiarizarse y excavar. Pero al mismo tiempo, debe tener un extracto sobre el servicio o servicio, que se coloca en una página y contiene un conjunto de 5-6 acciones que deben realizarse antes de escalar. Además, la documentación es importante para mantenerse siempre actualizado.
Cuando aumenta la transparencia del trabajo en el departamento, el problema de actualizar la documentación se resuelve solo, porque ve qué iteraciones están sucediendo y se le pregunta constantemente: "Actualizar, actualizar, actualizar".
Referencias
Estos son enlaces a varios estudios sobre el tema del cambio de contexto, cómo trabajar de manera competente, cómo no distraerse y hacer más, así como enlaces a todos los productos de los que hablé que son la base y el soporte de cualquiera de los centros de datos de Badoo.
La versión siberiana de la conferencia para desarrolladores de proyectos de alta carga Highload ++ Siberia comenzará el lunes y tendrá lugar el 25 y 26 de junio . En él, Anton hablará sobre la evolución de las herramientas y servicios en servicio con el equipo operativo de Badoo,
Y otros 30 expertos reconocidos y representantes de líderes de la industria presentarán sus mejores prácticas y compartirán sus experiencias: vea el programa .