Infraestrutura é do que dependem o trabalho e os lucros dos negócios de TI. Todos os processos que ocorrem com o código do computador do desenvolvedor até a produção dependem da operação ininterrupta de servidores, software e serviços externos. Se a infraestrutura não funcionar como deveria, a empresa perde lucro.
As startups não prestam muita atenção à infraestrutura - precisam cortar o produto até que os investidores fiquem sem dinheiro. As grandes empresas não estão mais preparadas - temos milhares de tarefas aqui, precisamos trabalhar.
Entender que a infra-estrutura de uma empresa de TI também é um produto, que tem uma meta, que é necessário considerar custos e acompanhar métricas, geralmente não alcança.
Você sabe quanto custa sua infraestrutura: servidores, software, serviços externos? O que você acha do custo, por quais métricas? Quanto você vai perder se algo cair ou se não houver backup? 
Artyom Naumenko (@entsu) da Skyeng sabe as respostas para essas perguntas. Ele trabalhou em empresas com dois desenvolvedores no estado e em empresas com mil funcionários. Atualmente, ele gerencia a infraestrutura em Skyeng e, ao mesmo tempo, o centro de aprendizado infantil Skyeng. Artem dirá como a empresa está construindo infraestrutura, como eles ganham dinheiro com ela e que erros não devem ser cometidos.
Sobre empresa
Skyeng é uma empresa jovem, tem apenas 6 anos de idade. Mas todo esse tempo vem crescendo três vezes a cada ano.

Isso significa que a infraestrutura também cresce três vezes por ano. Hoje, temos 100 servidores, 300 em um ano e 900 em 2. Isso não é fácil, estamos trabalhando duro para garantir esse crescimento.
Skyeng é uma empresa de TI. A empresa é jovem, ainda não há muito legado, tudo é padrão para a pilha PHP:
- PHP
 
- Angular
 
- PostgreSQL
 
- Linux no qual tudo está girando.
 
Cerca de uma centena de desenvolvedores. A empresa está crescendo e até o final do ano haverá mais.

A maioria dos nossos serviços é escrita por nós e todo o negócio da empresa gira em sua própria infraestrutura. É monitorado por uma equipe de infraestrutura de 6 pessoas. Nós fornecemos todos os processos que ocorrem com o código do computador do desenvolvedor à produção. O código é desenvolvido em nossas máquinas virtuais e servidores, implantação - com a ajuda de nosso Jenkins configurado e nossas ferramentas de implantação, a operação na produção também está em nossos servidores, que gerenciamos.
O objetivo da empresa é crescer 7 vezes em 2 anos. A infraestrutura deve crescer da mesma forma. Para atingir a meta, cada membro da equipe de devops trabalha como um boi. Todos os anos devemos ser 3 vezes melhores que no ano passado e 7 vezes melhores no futuro. Na Skyeng, ninguém está interessado em histórias bonitas que "tentaram, mas falharam". O resultado é importante, não o processo.
Princípios de construção de infraestrutura
Os negócios de qualquer empresa de TI trabalham com infraestrutura. Se não funcionar, o negócio não funcionará, seja Yandex, Amazon ou Skyeng. Estamos cientes disso, portanto, a primeira coisa que é importante para uma infraestrutura legal é 
definir uma meta . Parece um discurso de Tony Robbins, mas sem um objetivo, nada vai funcionar.
A meta deve ser definida por dois motivos.
- Se você tem um objetivo, você irá em direção a ele.
 
- Se não houver objetivo, não há para onde ir. Mesmo se você vier a algum lugar, não poderá se elevar do objetivo alcançado.
 
Se não houver objetivo, é impossível alcançar.
Problemas da empresa
A definição de metas por si só não é suficiente. O objetivo da empresa é crescer 7 vezes em 2 anos. Haverá problemas durante o crescimento. Eles variam, dependendo do tamanho e tipo de empresa.
O primeiro tipo de empresas e pessoas são startups . Na figura abaixo, “partida típica” - uma jangada e uma pequena equipe que está tentando nadar em algum lugar. As vantagens de uma startup são que cada membro da equipe entende para onde a equipe está se movendo, quem está fazendo o que e o que deve fazer para alcançar um objetivo comum.

O problema com as startups é a falta de dinheiro. Quando um grande volume de tarefas cai nos devops, ele não tem tempo e se pergunta um assistente. Geralmente ele recebe a resposta: “Por quê? Você administra todas as regras - continue!
O próximo tipo são navios enormes . Alguns membros da tripulação do navio não vêem para onde está navegando. Eles desempenham sua pequena função, por exemplo, jogam carvão no forno e não entendem o que está acontecendo globalmente.

O principal problema com os navios é que mais e mais tarefas são necessárias. Cem clientes, para cada problema, não está claro como priorizar, o quadro geral está desfocado, mas estamos “trabalhando”! O tempo nunca é suficiente e são necessárias mais e mais tarefas. Uma equipe nunca poderá construir um transportador que jogue carvão no forno para trabalhar em tarefas importantes.
O terceiro tipo são líderes . O principal problema para os gerentes de infraestrutura são servidores caros, infraestrutura cara e falta de entendimento de como os custos de infraestrutura afetam a receita comercial em geral. O gerente precisa, de alguma forma, responder perguntas sobre por que existem tantos milhões para servidores, se ficaremos menos se pagarmos mais e o que acontecerá se pagarmos menos.

Objetivos de infraestrutura
Descreverei quais metas em Skyeng estabelecemos para nossa infraestrutura no contexto das metas globais da empresa e como as atingimos. A infraestrutura tem 4 objetivos.
Acompanhe o orçamento . Uma empresa é uma estrutura comercial para ganhar dinheiro, então devemos contá-los.
Resolva tarefas rapidamente . Eles não aumentaram o servidor a tempo, o novo serviço da empresa não será iniciado e não ganhará dinheiro. O backup não foi restaurado a tempo - novamente, algo não funcionará e a empresa perderá lucro.
Conveniência dos desenvolvedores . Este item requer uma explicação separada. No ano passado, Skyeng gastou 600 milhões de rublos em desenvolvimento. Se nós, como infraestrutura, aumentássemos a velocidade dos desenvolvedores em pelo menos 1%, teríamos ganho 6 milhões.Se você colocar dois funcionários em período integral, o que aumentará a produtividade em 1%, será rentável.
Resultado a longo prazo . Não devemos nos esforçar uma vez, fazer algo legal para que todos fiquem felizes e tudo desmoronar. O que fazemos deve funcionar por um longo tempo.
Para que isso funcione, é necessário inventar métricas. Eles devem ser mensuráveis, caso contrário, não são objetivos, mas bobagens. Os objetivos devem ser expressos em números e gráficos.
Vamos considerar os itens com mais detalhes.
O orçamento
Medir a infraestrutura por empresa é o que parte dos gastos da empresa vai para infraestrutura.

Skyeng é uma escola, e o principal valor é uma lição. Uma lição média custa 800 rublos. Destes, 12 são para infraestrutura: servidores e devops.

O percentual de infraestrutura está caindo, estamos trabalhando nisso. Isso nos beneficia, negócios e clientes. Você pode ter servidores baratos, não faça backup e abandone esse cronograma ainda mais. Mas isso está errado, é necessário considerar não apenas os custos de infraestrutura, mas também os custos de infraestrutura e as perdas esperadas pelas quedas.
Para cada serviço, consideramos quanto dinheiro por hora perdemos com sua queda. Mantemos um registro detalhado de quando e qual serviço estava mentindo, e quanto perdemos com isso.
 O cronograma de perdas por quedas no ano passado.
O cronograma de perdas por quedas no ano passado.A maioria das perdas no segundo trimestre de 2018 - olá a Roskomnadzor! Os gastos com infraestrutura no ano passado foram de 20 milhões, e os gastos com queda - 5 milhões: se tivéssemos reservado tudo, isso nos salvaria de Roskomnadzor, mas ainda estaríamos no vermelho em 15 milhões.
Não é rentável para as empresas duplicar tudo. É preciso pensar no que duplicar e no que não.
Duplicamos os serviços para os quais o custo de um servidor ou banco de dados adicional é menor que os riscos esperados de quedas.
Faça rápido
Medimos a porcentagem de tarefas concluídas no dia da configuração. A infraestrutura vem com muitas tarefas que precisam ser resolvidas aqui e agora. Outras equipes que não podem fazer seu trabalho dependem disso. Grandes tarefas que levam semanas são consideradas separadamente.
 Agende tarefas no dia da configuração.
Agende tarefas no dia da configuração.De acordo com o cronograma, a probabilidade de concluir uma tarefa no dia da configuração é de aproximadamente 80%. Vemos esse gráfico e acreditamos que tudo é legal. Mas outras equipes podem não pensar assim e avaliar de forma diferente. Portanto, realizamos pesquisas com outras equipes.
 Exemplo de pesquisa.
Exemplo de pesquisa.Realizamos pesquisas através do formulário habitual do Google com perguntas. Os desenvolvedores e nossos outros clientes respondem regularmente a eles.
 O resultado da pesquisa sobre a velocidade da infraestrutura.
O resultado da pesquisa sobre a velocidade da infraestrutura.O estado atual das coisas é bem descrito pelas pesquisas, mas não o futuro. Para avaliar a probabilidade da situação no futuro, medimos o número de tarefas executadas usando a solicitação pull. É isso que se beneficiará em um ano ou dois.
Seis meses atrás, decidimos que iríamos para "infraestrutura como código". Aqui medimos todas as solicitações da infraestrutura: preencha um dump ou um pedaço de logs, corrija o ponto nginx no produto ou crie um novo servidor. Todas essas são solicitações, e as avaliamos pelo número de solicitações pull. No futuro, queremos que qualquer solicitação seja resolvida com a ajuda de uma solicitação de recebimento ou para que simplesmente não nos sejam solicitados.
Sabemos que a abordagem "infraestrutura como código" fornece três bônus principais:
- redução no custo da mudança;
 
- aumento da taxa de mudança;
 
- redução de risco.
 
Precisamos dos três, portanto, nos movemos para esse lado e medimos o quão perto estamos.

Para logs existe um sistema de visualização, para emissão de acessos existe o Terraform. Você pode criar um sistema no qual tudo será automatizado. Idealmente, este gráfico deve ir 100%. Quando qualquer chamada é feita usando código, podemos executá-lo rapidamente e implantá-lo em outra infraestrutura com a mesma rapidez.
É conveniente para desenvolvedores
Isso é importante para o Skyeng. Agora temos 100 desenvolvedores; até o final do ano, haverá 120. É importante que eles funcionem com eficiência. Queremos contratar pessoas por um motivo, precisamos daqueles que melhorarão a empresa.
A única e principal métrica para desenvolvedores é o resultado de uma pesquisa de satisfação com a equipe de infraestrutura.
 Em geral, está tudo bem.
Em geral, está tudo bem.A maioria nos valoriza bem. Mas se você perguntar o quanto eles estão satisfeitos com o ambiente de desenvolvimento, tudo não é tão agradável.

O ambiente de desenvolvimento é a nossa dor de cabeça. Este é um ponto de crescimento que precisa ser aprimorado. Portanto, entrevistamos pessoalmente os funcionários que responderam o pior: qual é o problema, o que diminuiu a velocidade ou não funcionou para ele? Saber o que está acontecendo pode melhorar as coisas.
Até você saber o que está acontecendo, você não pode mudar nada.
Resultado a longo prazo
Qualquer uma de nossas métricas pode ser aumentada simplesmente concentrando-se nela. Por exemplo, para aumentar a porcentagem de tarefas concluídas no mesmo dia, você pode descartar tudo e resolver apenas as tarefas que chegaram. Você pode executar todas as tarefas usando o código.
Por exemplo, em uma determinada cidade "N", todos os esforços são gastos no desenvolvimento de estradas. Eles fazem trilhas planas, largas e com várias faixas na cidade. Isso é legal primeiro, segundo ano. Mas todas as outras áreas são degradantes: não há ambiente acessível, árvores estão sendo derrubadas, há mais carros, não há estacionamentos suficientes e o ambiente já saiu da cidade por essas estradas. Em 5 a 10 anos, táxis autônomos e hiperloops já aparecerão na cidade vizinha, mas aqui ainda há apenas estradas tranquilas. É claro que este é o caminho para lugar nenhum.
Não devemos permitir isso, precisamos olhar para o futuro. Portanto, medimos a quantidade de tempo que gastamos em desenvolvimento e suporte.

O gráfico mostra que, nos últimos meses, pouco tempo foi gasto no desenvolvimento. Para mim, como líder, isso é um sinal de que as pessoas são necessárias ou a automação de processos. De acordo com o cronograma, posso até calcular quantos meses todos os recursos serão necessários para apoiar, quando não chegarmos a tempo e houver um colapso.
Tarefas benéficas
Estabelecemos uma meta e pensamos em métricas, mas até começarmos a implementá-la com nossas mãos, nada mudará. Você precisa fazer não apenas algo, mas as tarefas mais lucrativas em termos de métricas e tempo.
Com o tempo, tudo simplifica.
Quaisquer duas tarefas podem ser comparadas com o tempo: a primeira leva uma semana, a segunda - 3 horas. Não depende de qual departamento a tarefa veio. As métricas são mais complicadas - existem muitas. Como calcular qual tarefa é mais lucrativa: a primeira ou a segunda, se uma otimiza algumas métricas e a outra, a outra?
Para nós mesmos, decidimos simplesmente - criamos uma unidade universal que descreve todas as tarefas. 
Nossa unidade universal é o rublo . Avaliamos o benefício de qualquer tarefa pelo lucro que trará e dividirá pelo tempo necessário para concluir essa tarefa. Portanto, avaliamos cada tarefa em termos de métricas (rublos) e tempo.
 Nossas tarefas trimestrais.
Nossas tarefas trimestrais.Na captura de tela abaixo, as duas últimas colunas indicam quanto dinheiro ganharemos na tarefa e quanto tempo gastaremos nela. A equipe de infraestrutura ganha dinheiro melhorando as condições dos desenvolvedores, otimizando os processos na empresa e a operação dos servidores. Estamos mudando para o Docker não porque é legal, mas porque pensamos que era rentável.

Métricas adicionais que medimos.
Avanço:
- % suporte;
 
- % de tarefas com PR;
 
- % de tarefas fechadas por dia.
 
Atrasado:
- % do lucro da empresa;
 
- perdas de quedas;
 
- revisões do desenvolvedor.
 
Isso é apenas parte das métricas, temos mais delas.
Tarefas que não avaliamos
Nós não avaliamos bugs. Se pegarmos algum tipo de sistema para dar suporte e suporte, corrigiremos os erros simplesmente porque eles não deveriam estar lá.
O mesmo se aplica ao suporte. Em geral, medimos quanto tempo é gasto em suporte e não permitimos que seja demais. Avaliamos cada sistema como um todo por seus benefícios ou malefícios. Tarefas mais fáceis de executar ou muito urgentes, não avaliamos. Tudo o que eu falei não se aplica a eles - nós apenas os fazemos.
Por que é útil e importante avaliar tarefas
Prêmios e conquistas . Nos negócios, você sempre precisa falar a língua do dinheiro. Ele entende apenas dinheiro. Se você diz que tem um projeto, o corte, ele trará 5 milhões e pedirá um milhão de prêmios por equipe - eles concordarão com você. Para os negócios, isso é compreensível.
Contratação Não ofereça empresas para contratar funcionários e introduzir novas tecnologias, mas ofereça dinheiro juntos. Então ele certamente encontrará você. No mínimo, a discussão começará não ao longo do caminho: "Você tem tempo ou não tem tempo, precisa de uma pessoa ou não", mas quão legal é o projeto para o qual você precisa de uma pessoa, ele o administrará e o projeto realmente trará tantos milhões. A conversa seguirá uma direção diferente e você entenderá com antecedência se esse projeto vale o custo ou é mais fácil jogá-lo fora e procurar outro?
Otimização de custos . Se entendermos em que dinheiro é gasto, podemos contá-lo facilmente e otimizar despesas.
Decisões administrativas . Este item eu percebi recentemente. A infraestrutura começou a crescer e eu decidi dividir a equipe em subcomandos. Surgiu a questão de como fazer isso com precisão, com o objetivo de aumentar a equipe. A solução apareceu com base em métricas - dividiu todas as métricas de nossa infraestrutura em blocos e cada equipe é responsável por suas próprias métricas. Eu tenho 3 subcomandos. Para cada um, a área de responsabilidade comum é compreensível e todos os participantes compreendem pelo que são pessoalmente responsáveis. Esta é uma área de responsabilidade compreensível.
Para ficar legal
- Estabeleça uma meta - em nenhum lugar sem ela.
 
- Divida a meta em métricas e meça.
 
- Avalie tarefas e complete o mais legal.
 
Então você definitivamente terá sucesso!
No DevOps Conf 2019 , falaremos sobre "infraestrutura como código" separadamente. O futuro da abordagem, os padrões do Terraform, a implantação e o gerenciamento da infraestrutura BareMetal e Kubernetes são quatro documentos sobre o assunto. Uma conferência que reunirá processo e tecnologia será realizada em Moscou, nos dias 30 de setembro e 1º de outubro . A programação está pronta, você pode estudar o programa , resumos ou reservar ingressos .
Assine a newsletter e o canal Telegram e fique atento às novidades e novos relatórios.