Oh meu código. Como se tornar um administrador do sistema

A diretora técnica adjunta do Grupo Mail.Ru Tatyana Bakharevskaya fala sobre o caminho do administrador do sistema, as vantagens de trabalhar como administrador do sistema e os recursos de operação em uma grande empresa. Tatyana foi responsável pelos serviços dos dois maiores portais da Rússia.


O anfitrião do programa é Pavel Shcherbinin.

- Conte um pouco sobre você.

- Eu entrei na profissão há muito tempo. Ela conseguiu um emprego como administradora de sistemas júnior em uma pequena startup que estava desenvolvendo seu mecanismo de pesquisa e vários outros projetos da Internet. Foi na Yandex, onde trabalhei por muitos anos. Ela cresceu para ser uma administradora de sistemas séria e depois chefiou o departamento de administração de sistemas. Em 2005, 5 pessoas trabalhavam nesse departamento e, após 10 anos - 250, era uma estrutura grande, várias unidades foram formadas. Aprendemos como contratar, criar engenheiros, realizar eventos como Root, CIT. Na Yandex, eu era responsável pela operação contínua e ininterrupta da empresa e agora, já há um ano, faço o mesmo para o Mail.Ru Group. A princípio, parecia que as tarefas eram semelhantes, mas, após uma análise mais aprofundada, verificou-se que havia muito em comum, mas havia diferenças suficientes, e isso era interessante.

- Existem muitos termos diferentes para a operação do serviço. Isso é apenas exploração, e o administrador do sistema, SRE, SE, DevOps. Conte-nos mais sobre cada um. Ou é a mesma coisa? Como eles diferem?

- De fato, um administrador de sistema é um conceito bastante amplo, começando pelo fato de que uma pessoa pode ser responsável por um pequeno escritório com uma infraestrutura de pequeno escritório para vários funcionários, terminando com a responsabilidade pela operação contínua de um serviço altamente carregado. Em algum momento, ele ainda estava dividido em direções diferentes. Em empresas como o Mail.Ru Group, Yandex, Google, o administrador do sistema está mais próximo do que agora é chamado de palavras-chave SRE - Engenheiro de Confiabilidade do Site, ou seja, a pessoa responsável pela disponibilidade do site.

Nosso trabalho exige muito conhecimento diferente sobre tecnologias: Linux / Unix, redes, bancos de dados, servidores web, tecnologias em nuvem, a composição do equipamento que usamos para criar serviços (processadores, memória, discos) e muito mais. Sobre a tecnologia, você precisa entender como aplicá-las, como elas diferem. Sempre há muito trabalho de rotina que precisa ser automatizado. Também é necessário escrever código. Os administradores de sistema modernos / SREs são principalmente programadores. No momento, a principal linguagem para automação é o Python, além, é claro, do bash. Saber C sempre foi uma vantagem. Por exemplo, a melhor documentação do Linux: abra o código do kernel e veja como tudo funciona.

Também é importante entender como criar sistemas altamente carregados e tolerantes a falhas. Sobre isso, muito foi dito em conferências e escrito na Internet.

Resumindo, o engenheiro moderno responsável pelo serviço altamente carregado precisa ser capaz de programar, conhecer e aplicar várias tecnologias, ter uma idéia de como criar serviços confiáveis ​​e escaláveis.

- Vamos voltar um pouco. O estágio inicial é muito interessante. Por que você escolheu a operação?

Isso foi engraçado. Naqueles anos, todas as meninas decentes queriam se tornar contadoras. Eu também queria, então fui para os cursos. Eles disseram que, para se tornar um contador, você precisa dominar as pontuações e o aritmômetro Felix, decidi que era muito complicado, e "conhecer o computador" (como eles escreveram nos anúncios de emprego) facilitaria minha vida e a procura de emprego. Como resultado, ela foi “estudar informática” no Instituto de Física de Engenharia de Moscou mais próximo, na Faculdade de Cibernética, no Departamento de Computadores Eletrônicos. Verificou-se que neste computador, além do Word e Excel, ainda há muito de tudo - processador, memória, pipelines, dispositivos de entrada e saída. No final dos meus estudos, eu queria me tornar um programador. Nos primeiros cursos, a programação era bastante difícil para mim e, no final dos meus estudos, era fácil escrever código. Poderia fazer isso por dias a fio. À noite, sentou-se e escreveu o código, e na noite seguinte abriu os olhos. Tudo correu muito bem, os programas funcionaram. Mas percebi que era uma pessoa interessada e decidi escolher algo mais simples. E entrou em operação, mas aconteceu que aqui também não é fácil, mas mesmo em lugares é muito mais complicado. Mas fiquei e, por mais de 20 anos, faço isso.

- Gostaria de saber em que momento você decide ser um programador ou administrador?

- De diferentes maneiras. Nos últimos anos, encontrei alunos da Yandex e da Mail.Ru. As pessoas na faculdade tentam se programar e administrar. Alguém permanece em operação e entende que é dele. Alguém, tendo trabalhado um pouco, entra em desenvolvimento. Alguém que trabalhou no desenvolvimento entende que deseja entender alguns problemas mais profundamente, descobrir a pilha do que está abaixo, em seu programa, como é operado, como vive e está imerso em operação. Existem alguns casos limítrofes que agora são chamados de palavras-chave DevOps. Essas pessoas devem saber muito sobre hardware, exploração e código.

Tudo depende da pessoa, do que ela gosta ou não. E essas profissões são muito semelhantes, se sobrepõem em muitos aspectos.

- As lendas sobre o Yandex dizem a você que, em um momento, você tinha um comutador especial que podia desligar um data center a qualquer momento para testar a estabilidade do sistema. Me conte mais.

- Essa história começou muitos, muitos anos atrás, com um grande incidente: quase todos os data centers desconectados no Yandex. Mais precisamente, um desconectado, mas continha todos os equipamentos de rede da empresa. Yandex não funcionou por várias horas. Depois disso, a tarefa foi definida para tornar tudo confiável e tolerante a falhas, para que tudo funcionasse no caso de uma desconexão de um dos data centers. Hoje, esse problema não é tão relevante, especialmente para data centers comerciais. A confiabilidade tornou-se muito maior; há exemplos de como os data centers modernos vivem por vários dias em óleo diesel. Mas então foi diferente.

Por vários anos, analisamos a arquitetura de todos os aplicativos, escrevemos planos de tarefas, como e o que precisa ser feito para garantir total tolerância a falhas. Onde era impossível ou muito difícil, discutimos o SLA (contrato de nível de serviço). A atenção principal foi focada em serviços populares e altamente carregados. A primeira falha no teste foi muito assustadora. Metade dos funcionários monitorou os dados de monitoramento. Eles se desconectaram e ligaram rapidamente, anotaram todos os bugs e finalizaram vários sistemas. E algumas iterações.

Depois de algum tempo, chegaram ao ponto de poder viver em silêncio por uma ou duas horas, desconectando um data center. Todos entendiam que a habilidade precisava ser mantida, exercícios regulares para se desconectar. É como no encanamento: se você não abre a torneira por muito tempo e não a fecha, ela se torna ácida e você não a abre no momento certo. Por isso, abrimos e fechamos regularmente as “torneiras”. E funcionou. Considero uma conquista que, uma vez à noite, eles me ligaram e disseram que o data center havia caído e perguntei por que eles me acordaram :-)

- O que você acha, onde está a linha entre programadores e administradores de sistema? Em que momento um programador pode dizer que não é responsável por isso, não sabe qual banco de dados existe, isso é para administradores. Ou esse rosto não é?

- Parece-me que o administrador é responsável pela aplicação "da ponta do nariz até a ponta da cauda". De uma maneira boa, ele pode entrar no código, ver como funciona lá, como corrigi-lo. Ele participa da escolha da tecnologia, porque existem boas tecnologias para programadores, é muito conveniente escrever com eles, mas é impossível viver 24/7 com eles.

Os programadores podem se concentrar mais nos recursos do produto de que precisam: funcionalidade adicional, design, código adicional que permite que o projeto seja dimensionado melhor. Ou seja, ainda há uma separação. Na prática internacional, esses são Engenheiros de Confiabilidade e Software do Site. Existem diferentes teorias onde e como a separação de papéis deve ocorrer. Parece-me que o paradigma adotado pelo Mail.Ru Group, dentro do qual há operação e desenvolvimento, e essas são pessoas diferentes, funciona muito bem.

- Provavelmente nem todo mundo sabe como está organizado no Mail.Ru Group. Me conte mais.

- Temos um serviço de operação responsável pela operação dos serviços. É composto por vários departamentos. Cada departamento é responsável por um produto ou grupo de produtos específico, dependendo da escala. Por exemplo, vários departamentos estão envolvidos no Mail: um repositório e a outra web. E existem departamentos que trabalham em vários projetos, em menor escala.

Em nossa casa - correio, pesquisa, portal, clube de entrega, "Yula", "meu mundo", ICQ e muitos outros. Existem projetos lançados há muito tempo e são nossos principais produtos, por exemplo, Mail e Portal. Existem projetos que compramos que colocamos em nossa infraestrutura, compartilhamos práticas operacionais com eles. E há quem nasceu conosco e cresceu muito rapidamente, por exemplo, "Yula". A economia é bastante diversa :-)

- Como é a arquitetura de um serviço típico do Mail.Ru Group?

- Temos vários data centers. Temos nossos próprios datacenters, tanto próprios quanto comerciais, em equipamentos e redes comerciais. A capacidade total dos canais em nosso país é medida em terabits.

Hospedamos servidores de projeto em vários datacenters, para que a desativação de um não afete a operação do serviço. A maioria dos nossos projetos são sites. A arquitetura é padrão: um balanceador de carga, um servidor da Web, um servidor de aplicativos e um DBMS e / ou armazenamento.

A seguir, os detalhes começam.

Basicamente, todos nós vivemos em servidores de ferro, mas também temos nuvens. Por exemplo, para desenvolvimento e teste, uma nuvem é usada no OpenStack, onde o desenvolvimento e o teste podem receber recursos com o clique de um botão.

Estamos implementando o Kubernetes, mas esse processo exige muita alteração nos processos de operação e desenvolvimento. Não está indo rápido. Tentamos fazer tudo com cuidado para não quebrar nada.

Vamos voltar ao que está acontecendo com os usuários. Primeiro, o usuário entra no balanceador. Para balancear a carga, são utilizados os protocolos de rede BGP e RIP, e o software tradicional - ipvs, haproxy e nginx. Depois disso, os servidores web mostram aos usuários páginas bonitas, principalmente usando o nginx e o Apache.

Mas por trás deles estão os servidores de aplicativos. Como, como eu disse acima, existem projetos herdados e relativamente novos, há muitas linguagens de programação nas quais tudo isso está escrito.

Como DBMS para novos projetos, principalmente MySQL, PostgreSQL e nosso desenvolvimento interno Tarantool são utilizados. Os usuários não devem sentir a perda de servidores de nenhum armazenamento ou parte dele, tentamos fazer backup e replicar dados nos datacenters vizinhos.

Utilizamos principalmente código aberto, pois temos muitos programadores e engenheiros em nossa empresa que podem consertar algo a qualquer momento. Existem também alguns desenvolvimentos. Por exemplo, o repositório no qual as cartas dos usuários estão é seu próprio desenvolvimento.

- Quantas pessoas você tem em sujeição?

- Agora cerca de 70, mas esse número está crescendo regularmente. Estamos expandindo ativamente, agora existem muitas posições em aberto.

- Quantos servidores eles servem?

- Várias dezenas de milhares de servidores localizados em nossos data centers. Principalmente em Moscou, mas também temos servidores em outras cidades, nos EUA e na Europa. Toda essa frota de servidores precisa ser monitorada e cuidada, mantida. Nós mesmos, é claro, não vamos a centros de dados, exceto talvez em excursões.

- Qual deve ser o volume do canal?

"Alguns terabits." Todo o grupo Mail.Ru possui uma rede comum, através da qual muitas informações são transmitidas. Pegue pelo menos "VK" e "OK", que mostram vários vídeos, mas ainda existem o Mail, Search, analytics e muitos outros serviços altamente carregados. Portanto, a rede é um componente importante.

- O que você precisa saber para se tornar um bom administrador de sistemas?

- Claro, Linux. Muitas empresas comerciais agora usam esse sistema operacional. Basicamente, dentro das empresas, eles tentam não usar distribuições diferentes, todo mundo quer que seja uma, é mais fácil atualizar e manter os sistemas. Todo mundo tem suas próprias preferências para a distribuição, usamos o CentOS. Então, antes de tudo, você precisa conhecer o Linux, como e o que é organizado ali, como a comunicação entre processos é organizada, como tudo é carregado e funciona.

Em seguida, vem a especialização - de quem está mais próximo e do que está a alma :-). Alguém é especialista em automação, alguém em servidores da Web, alguém em redes, alguém em bancos de dados e alguém em tecnologia em nuvem. Por exemplo, ao mesmo tempo, eu realmente gostei de bancos de dados. Você precisa entender como os aplicativos funcionam - para poder configurá-los, entender os prós e os contras do uso de um ou outro aplicativo em uma tarefa e, é claro, consertá-lo muito rapidamente em caso de problemas.

Exemplos dessas especializações: os engenheiros de rede compreendem os protocolos e sabem onde e quais são melhores para usar, podem configurar o roteamento global e local, sabem como garantir a confiabilidade e a tolerância a falhas da rede.

Os especialistas em banco de dados sabem como fragmentar, replicar, fazer backup de um banco de dados para salvar informações de forma confiável e garantir alta velocidade. Essas pessoas sabem como examinar os planos de consulta, sabem por que os índices são necessários e o que são.

Uma tarefa típica: para discutir por que a solicitação é executada por um longo período, é necessário examinar o plano e verificar se há problemas ao carregar o servidor (memória, processador, E / S).

- Na opinião pública, os administradores são apresentados como homens com barba grande em um suéter esticado. É difícil para você trabalhar em uma equipe masculina?

- Uma pergunta difícil, porque trabalho há muitos anos. Em primeiro lugar, estou acostumado. Em segundo lugar, se falamos sobre a indústria como um todo, já havia muitas meninas em operação.

Tal mito vem dos tempos antigos, quando era necessário muito trabalho físico. Meu amigo e eu ainda nos lembramos de como nós dois pegamos um servidor grande, pesado e com várias unidades e o colocamos no chão, porque não podíamos mais levá-lo a um local especial para manutenção. E eles se sentaram no chão no meio do data center com chaves de fenda, rodas trocadas. Ainda não havia slide :-)

Agora não existe tal coisa. Trabalhamos em um escritório confortável à mesa. Nosso trabalho hoje não é diferente do trabalho de um programador, que também nunca foi puramente masculino: programadoras são uma ocorrência bastante comum.

- Nossa pesquisa blitz. Qual é o seu laptop?

Apple.

- Qual é o melhor, Bash ou Perl?

- Bash.

- Startup ou grande empresa?

- Startup em uma grande empresa.

- Qual foi a última coisa que você não teve dinheiro suficiente?

- Para o iate.

Ótima resposta. Todos entenderão imediatamente o nível salarial no Mail.Ru Group.

Exatamente.

- ICQ ou TamTam?

- ICQ.

- "VK" ou "colegas de classe"?

- VK.

- Quem é seu ídolo?

- Eu não tenho um ídolo. Acredito que muitas pessoas na Internet russa e estrangeira fizeram muito por esse setor. Graças a eles, está se desenvolvendo a esse ritmo. Tive sorte, com muitos deles que conheço pessoalmente.

- Cite os grandes russos.

- bastante; novamente, receio não listar todos. Se alguém precisa ser apontado pessoalmente, fico feliz por ter conseguido trabalhar com Ilya Segalovich na vida.

Source: https://habr.com/ru/post/pt416849/


All Articles