“Que nuvem? Como é que uma coisa pode estar na nuvem? Aonde está a prova?”
Muita gente ainda tem essa mesma dúvida quando o assunto é #Cloud Computing (Computação em Nuvem traduzindo para o português). Porém, esse conceito não é tão atual quanto se pensa.
Pois, com a chegada dos famosos Mainframes nos anos 60, uma grande revolução para a época, foi possível a realização de cálculos e processamentos nunca antes utilizados. Na década seguinte a IBM lança o sistema operacional V.M (Máquina Virtual), que permitia disponibilizar diversos sistemas virtuais em um único servidor físico (host), possibilitando que vários usuários trabalhassem em um único Mainframe ao mesmo tempo.
O acesso aos Mainframes era feito através de “Terminais burros” ficando o Mainframe com a responsabilidade de todo o processamento.
O sistema operacional V.M da IBM foi pioneiro e já utilizava conceitos que são os padrões hoje em Cloud Computing, permitindo que cada usuário usasse sua porção de memória, processamento e outros recursos.
A partir daí vários eventos marcantes foram acontecendo e contribuíram para o amadurecimento da nuvem, tais como: lançamento do primeiro PC (Personal Computer), adoção do TCP/IP pela ARPANET (a mãe da Internet), surgimento dos principais players do mercado (Apple, Microsoft, Oracle, Amazon, etc.).
Com a evolução tecnológica, os caminhos da prestação de serviço estão convergindo para a nuvem e as empresas naturalmente precisarão de mais servidores, links de internet de maior capacidade e por consequência, os clientes exigem mais agilidade nas entregas e maior disponibilidade dos serviços contratados.
Surge a principal barreira na evolução da Cloud
Na corrida para tornarem-se competitivas, as empresas precisam de mais profissionais em seu quadro para conseguir entregar e manter toda a infraestrutura necessária para comportar a demanda do mercado, mas as atividades cotidianas para suportar o ambiente começam a se acumular e elevam os custos operacionais. Atividades como: alocar servidores, gerenciar todas as máquinas virtuais hospedadas, manter o ambiente padronizado, gerir as mudanças, monitorar, provisionar novos recursos por demanda, dentre outras, começam a se tornar uma barreira na evolução deste conceito de prestação de serviços.
Figura 1 - Aumento do Interesse por Cloud Computing
Superando esta barreira!
É então que com foco em superar essa barreira, John Allspaw (Flickr/Yahoo!) e Paul Hammond (Flickr) realizam uma apresentação em 2009 na Web Performance and Operation Conference para mostrar como conseguiram juntar as equipes de Desenvolvimento e Operações e ganhar eficiência operacional e executar mais de 10 Deploys por dia no ambiente. Surge então o primeiro registro público do termo #DevOps.
O DevOps surge para unir estas duas áreas ao mesmo objetivo, trazer mais agilidade e automação para as atividades cotidianas e gerar maior eficiência financeira para as empresas que trabalham com serviços baseados em Cloud Computing.
Os 4 pilares do DevOps são:
Cultura
- Colaboração
- Fim das divisões
- Relação saudável entre as áreas
- Mudança de comportamento
Automação
- Deploy
- Controle
- Monitoração
- Gerência de configuração
- Orquestração
Avaliação
- Métricas
- Medições
- Performance
- Logs e integração
Compartilhamento
- O feedback é tudo
- Boa comunicação entre a equipe
As empresas têm ao seu alcance ferramentas que apoiam a aplicação prática destes pilares na entrega de serviços.
Uma caixa de ferramentas a serviço das empresas
Para alcançar o objetivo de agilizar (transformar em ágil) tanto a infraestrutura quanto os outros processos envolvidos na entrega de serviços, as empresas têm em suas mãos uma verdadeira caixa de ferramentas e cabe a ela decidir a que melhor se encaixa em seu negócio.
Algumas dessas ferramentas e seus objetivos:
Orquestradores: são ferramentas que permitem executar comandos e controlar nodes/instâncias do parque em tempo real. Alguns destes são Kubernetes, Fabric, Capistano, Func e Mcollective.
Ferramentas de gerência de configuração: controlam estados de seu sistema, ajudam a centralizar toda as configurações e facilitam a administração e criação de novos ambientes. Algumas delas são Puppet, Chef, Cfegine e Salt.
Ferramentas para bootstrapping e provisionamento: são aquelas que auxiliam a instalar um sistema operacional em uma máquina física ou em uma máquina virtual, dentre elas existem alguns provedores de CLOUD que já oferecem essa facilidade nativamente ou utilizar ferramentas como o Kickstart, Cobbler e ManageIQ que atuam neste segmento.
Automação: é a criação de scripts para realização autônoma de atividades que demandariam tempo se executadas em ambientes de grande porte. Dessa forma, utiliza-se linguagens de programação #Ruby ou #Python, por exemplo), para automatizar atividades como alocação de IPs, DNSs, aplicações de regras, dentre outras.
Medir e Monitorar: essa atividade é de extrema importância para o sucesso de todo o processo, pois para evidenciar todo o serviço executado é necessário a criação de dashboards que darão uma visão gerencial do ambiente. Utiliza-se ferramentas como Grafana, Graylog ou zabbix para exibir o estado do ambiente, tráfego dos pacotes, utilização das portas e responder perguntas como: será que a mudança realizada no ambiente trouxe melhorias?
O céu é o limite
Após o advento do DevOps, as empresas conseguem desenvolver um trabalho cooperativo entre duas áreas que anteriormente sentiam-se de lados opostos e agregar todo conhecimento destas áreas a favor do negócio, fazendo com que a computação em nuvem ganhe um folego extraordinário para alcançar patamares inimagináveis desde sua criação.