Irei demonstrar um exemplo do dia a dia, para maior entendimento:
O operador Ivan, necessita mudar a permissão de um diretório em três servidores que estão em locais distintos. Para esta operação, o Ivan precisará ter acesso aos três servidores, logar no servidor e executar o comando
chmod 400 /diretorio e deslogar do servidor. Para executar a tarefa em um servidor, ele irá demorar cerca de 5 minutos, entre fazer o levantamento do IP/Hostname de cada servidor e executar o comando.
Sabendo que cada servidor demanda 5 minutos do Ivan, ele iria gastar 15 minutos para terminar o job, levando em consideração que todas as ações iriam ser executadas sem problemas.
Agora, imagine em um parque com mil servidores espalhados pelo mundo e uma janela de manutenção de 10 horas.
Se em um servidor gastamos 5 minutos logo, 1000 servidores x 5 minutos = 5 mil minutos, ou seja, cerca de 80 horas ou 2 semanas de trabalho, além da possibilidade de erros operacionais e a necessidade de um feedback de sucesso ou falha em cada servidor. Para que esta demanda seja atendida, no período de manutenção estipulado pela chefia, seriam necessários 40 operadores, tornando-se inviável para a empresa este tipo de manutenção, que exija agilidade.
Demonstro abaixo, o mesmo exemplo de job citado anteriormente, utilizando o Chef Server (DevOps):
O operador Ivan irá criar um cookbook ou módulo para a tarefa, chamada de
permission, supondo que o servidor já esteja com o client do Chef instalado nos servidores, e estes servidores, estejam separados em um grupo, pois são servidores com o mesmo propósito de serviço.
O Ivan iria acessar a ferramenta do Chef, iria adicionar a receita criada a este ambiente em sua
run list.
Ou, simplesmente, iria utilizar o comando
knife da sua máquina para executar o job solicitado.
O chef Server iria rodar a receita em todos os servidores do ambiente, gastando cerca de 40 minutos para concluir toda a tarefa, ou seja, iria gastar 40 minutos para fazer esta alteração nos mil servidores, estando limitado ao poder de processamento e a disponibilidade dos mesmos.
Finalizando
Cito algumas vantagens de utilizar os conceitos de DevOps:
- Padronização nos processos de configuração e servidores;
- Documentação das configurações;
- Menor esforço para execução de tarefas em ambientes massivos/complexos;
- Diminuição de incidentes ocasionados por erro operacional;
- Facilidade para atualização e deploy de aplicações;
- Maior controle em ambientes de grande porte;
- Menor downtime dos serviços;
- Redução de custo;
- Centralização de operações;
- Automação de processos.
Existem inúmeras vantagens em utilizar DevOps, espero que vocês se interessem pelo assunto e estudem este conceito que está em plena evolução nos outros países, e que está tornando algo fundamental para os ambientes de TI atuais.
Que legal! Muito bom a teoria, mas agora, o que eu preciso saber para começar a mexer?
O profissional de DevOps necessita ter um conhecimento em S.O., conhecer algumas linguagens de programação e de scripts, alguma ferramenta de DevOps, etc. Segue abaixo, alguns conhecimentos necessários:
O profissional deve conhecer lógica de programação e alguns conceitos básicos de linguagem, dentre elas, é bom se ter algum contato com as seguintes tecnologias: Python, Ruby, Shell Script, PHP, Java, conhecer o básico de infra também se torna necessário: TCP/IP e seus protocolos (DNS, FTP, HTTP, SSH), S.O., etc.
Conhecer uma ferramenta de infraestrutura ágil (DevOps):
Existem algumas ferramentas de infraestrutura ágil disponíveis, algumas com versões gratuitas e outras com versões
community e
enterprise, as mais conhecidas são o Puppet, o Chef, AnsibleWorks e o SaltStack:
O Puppet e o Chef são as melhores ferramentas para Devops, segundo avaliação feita pela InfoWorld no final do ano passado:
No próximo artigo, irei falar sobre o Chef-Server.
Obrigado, pessoal.