Hoje quero falar sobre uma ferramenta que traduz os procedimentos de aprovação e emissão de máquinas virtuais em full self-service, preservando a lógica de cotas e agregando a capacidade de prever a utilização de recursos.
Como ex-engenheiro de infraestrutura, sei o que acontece em usar várias nuvens privadas ou públicas em uma grande equipe. Normalmente existem duas maneiras. Ou o processo de alocação de recursos é muito burocrático - as equipes começam a esperar por máquinas virtuais por uma semana e a mantê-las "vivas" o maior tempo possível, apenas para não repetir esse caminho. Ou o verdadeiro caos se instala, quando ninguém sabe qual equipe e quantos recursos estão consumindo e quanto centenas e milhares de dólares são gastos mensalmente no mesmo AWS. Uma maneira de simplificar essa situação é mover os desenvolvedores para o autoatendimento na nuvem usando o produto de nossos parceiros - CloudMaster.
Qual é o problema
Quando uma empresa emprega centenas de desenvolvedores e DevOps, cada equipe tem seu próprio projeto e precisa de experimentos, você não pode confiar na responsabilidade de cada indivíduo pela capacidade alocada pela empresa. Para entender a magnitude do problema, aqui estão as estatísticas de um cliente do CloudMaster que usa nuvens públicas e sua própria virtualização no OpenStack.
Ao desenvolver várias centenas de projetos em paralelo, os recursos totais da AWS, Azure e GCP são consumidos pelo cliente por meio milhão de dólares por mês. E cria e exclui cerca de 350 mil máquinas virtuais por ano.
Se o processo seguir seu curso em tal escala, ocorrerá uma verdadeira anarquia. Centenas de máquinas virtuais congelarão sem uso. Sem entender quem e por que iniciou uma VM específica, será extremamente difícil descobrir se ela é necessária no trabalho e se será necessária no futuro. Isso acarreta gastos desnecessários com aluguel de recursos de nuvem, e é basicamente impossível fazer qualquer análise do que está acontecendo ou prever a carga nessas condições.
Uma maneira lógica de evitar isso é prescrever um processo de negócios de negociação de recursos. Claro, isso complica o caminho do desenvolvedor para obter uma máquina virtual: você precisa preencher um aplicativo, enviá-lo para o responsável. Mas, se você coletar os relatórios corretamente, o gestor terá uma visão completa: quem, quando e qual capacidade solicitada. Com certa demora, ele poderá até analisar as necessidades das equipes em capacidade virtual. Mas isso também não é uma panacéia. Com um volume suficiente de solicitações, as equipes com seus projetos "travam" esperando que o responsável olhe e avalie a próxima aplicação. E quanto maior for a empresa, maior será a espera.
Nesse caso, todas as máquinas virtuais criadas não possuem uma "data de validade", ou seja, então, alguém precisará controlar se todos os recursos alocados foram desligados no horário anunciado e isso não afetou os projetos.
Autoatendimento por meio de plataformas de gerenciamento em nuvem (CMPs)
As soluções da Cloud Management Platform ajudam a colocar as coisas em ordem nas várias nuvens usadas, privadas ou públicas. Quero falar sobre a alternativa russa de nossos parceiros - a plataforma CloudMaster, com foco na conexão com Azure, AWS e Google Cloud, bem como regiões privadas sob vCloud Director, vSphere e OpenStack.
Do ponto de vista do desenvolvedor, o CloudMaster é um portal de autoatendimento onde, por meio de uma única interface e sem burocracia (por meio da IU no navegador, aplicativo móvel e comandos de console (scripts Python)), é possível obter recursos na nuvem corporativa ou data center. E para infraestrutura, esta é uma camada adicional de abstração entre plataformas em nuvem e usuários finais, que preserva o compartilhamento seletivo de recursos, políticas de segurança, configurações padrão e outras ferramentas necessárias, como imagens de máquina e modelos Terraform.
A maior parte do CloudMaster é baseado em Java e nos frameworks Spring do lado do servidor e Dagger no aplicativo Android.
Arquitetonicamente, o CloudMaster é adaptado para trabalhar com grandes equipes e volumes significativos de mensagens enviadas: RabbitMQ é usado para processar filas, MonogoDB é usado para armazenamento de dados e Nginx é usado para balanceamento.
A ferramenta é desenvolvida desde 2012 e, desde 2014, é utilizada por um grande desenvolvedor de software.
Lógica CloudMaster
Do ponto de vista do desenvolvedor, o CloudMaster é um balcão único para o lançamento rápido de máquinas virtuais em todas as nuvens e regiões disponíveis. A ferramenta permite que você não espere por aprovações, mas obtenha um recurso aqui e agora.
O cadastro no portal é suficiente para acessar esta “janela única”. E se o CloudMaster estiver integrado ao AD corporativo, as funções dos funcionários na empresa e no projeto serão carregadas nesta ferramenta, determinando automaticamente os projetos e recursos disponíveis.
Janela de inicialização da máquina virtual
Se você tiver os direitos apropriados, um comando pode iniciar até 10 máquinas virtuais de "formulários" típicos. Em termos de CloudMaster, essas são configurações padrão que são mapeadas para as ofertas de recursos típicas de cada nuvem (e personalizadas para a tarefa).
"Modelos" comuns para diferentes nuvens
Você pode criar imagens de máquinas existentes, usar modelos prontos "infraestrutura como código" ou fazer upload de seus próprios (Terraform e CloudFormation).
Modelos
Nesse caso, as VMs podem ser criadas indefinidamente ou funcionar de acordo com uma programação especificada. Isso dá uma certa liberdade no uso de recursos. Por exemplo, uma empresa pode permitir que os desenvolvedores usem a nuvem corporativa para experimentação e comparação pessoal, mas apenas por um dia. Este é, aliás, o cliente desta plataforma que faz desenvolvimento customizado. Todas as máquinas virtuais criadas desta forma são excluídas por si mesmas dentro de um período especificado.
Do ponto de vista do gerente, a coisa mais útil sobre o CloudMaster é que ele conta todas as máquinas virtuais em execução. Para eles, há seções com informações completas sobre VMs na nuvem / região selecionada, incluindo aquelas criadas de acordo com modelos específicos, com faturamento de provedores de nuvem, métricas de consumo de recursos por projetos individuais, onde podem ser identificadas capacidades não utilizadas ou subutilizadas.
Lista de recursos
Lista de máquinas virtuais
Além de exibir informações na interface, o CloudMaster gera cerca de 60 tipos de notificações, incluindo aquelas relacionadas a finanças.
Notificações de entrada
E o texto de uma das notificações
A lógica do serviço é tal que cada VM tem um proprietário - a pessoa que criou esta máquina virtual, ou para quem essas funções foram transferidas. O proprietário recebe todas as notificações sobre a utilização de recursos ou mudanças no estado da VM, sendo também responsável pelos custos. Nesse sentido, o CloudMaster ajuda a incutir uma cultura de controle da utilização da capacidade e de assumir a responsabilidade por máquinas zumbis abandonadas.
As restrições na criação de novas VMs são regidas por direitos de acesso e cotas. E aqui é possível customizar qualquer workflows, até admitir representantes de clientes na nuvem. Você pode prescrever cotas para equipes e fornecer várias ações quando elas forem atingidas ou se aproximarem de um determinado valor limite (digamos, 70% da cota).
Faturamento de provedores de nuvem
Janela de gerenciamento de cotas
Para nuvens privadas (OpenStack e VMware), o CloudMaster suporta uma espécie de troca - uma estimativa do custo de execução de máquinas virtuais, com a qual você pode escolher um esquema de utilização de recursos mais lucrativo. Colegas dizem que, no futuro, tal função pode aparecer para nuvens públicas.
Nesse sistema, a função de um engenheiro de infraestrutura está mais próxima de mim, então deixei para o final. Para DevOps, esta é, obviamente, uma nova ferramenta, mas torna-se possível controlar o que acontece com os recursos da nuvem usando apenas ela. Ferramentas populares de configuração, monitoramento e desenvolvimento, como Chef e Ansible, podem ser implantadas de maneira mais rápida e fácil.
Um Java SDK está disponível para administradores e desenvolvedores, se necessário.
Mais importante ainda, CloudMaster, como outros CMPs, permite que você mude de alocação de recursos de rotina manual para tarefas mais interessantes: desenvolvimento de automação com base em "infraestrutura como código", etc.
Na minha experiência, o surgimento de tais ferramentas se justifica se a empresa empregar pelo menos cinquenta máquinas virtuais e houver pelo menos quinze usuários ativos de diferentes nuvens. Por um lado, isso é uma certa complicação da infraestrutura, mas, por outro, está trazendo nuvens heterogêneas, cada uma com suas próprias ferramentas de gestão, a um denominador comum com a garantia de que não viole os padrões internos corporativos. Ao mesmo tempo, a ferramenta “rebaixa” a responsabilidade pela utilização de recursos e planejamento orçamentário para o nível de gerentes de projeto, o que é ideologicamente mais correto.