1 infra x 6 dev x 100 servidores: Pode isto, Arnaldo?

1 infra x 6 dev x 100 servidores: Pode isto, Arnaldo?

A regra é clara: Se você adota a cultura de DevOps, automatiza sua TI e implementa Deploy Contínuo, sim!

Nas empresas em que trabalhei como Gerente de TI e infraestrutura, sempre foquei em automação das atividades diárias da infra. Mesmo com equipes pequenas (três técnicos, um de Linux, um de Windows e um atuando com redes e segurança), demos conta de ambientes com mais de 120 servidores virtuais.

Atuando sozinho, em uma startup, subi e mantive um Cluster Hadoop com mais de 150 nós!

Agora, atuando como Consultor de TI e Cloud Computing, tenho visto em várias empresas (para não dizer na grande maioria) equipes de TI sobrecarregadas com atividades corriqueiras; equipes de infraestrutura batalhando para atender os desenvolvedores (e seus deploys) e tecnologias ultrapassadas de gestão de ambientes.

Nestes últimos meses, desenvolvi nestas consultorias um processo rápido (processo: não é uma “bala de prata” para todos os problemas) que dá um “respiro” nesta situação, aliviando a carga do pessoal de infra, deixando os desenvolvedores realizarem seus deploys a qualquer momento e atendendo as demandas do negócio.

Basicamente, este processo se resume em:

1) Automação da Infra (10 dias)
Pessoal de infra! Parem de reinventar a roda a cada novo servidor que “sobe”, novo path a ser aplicado ou novo deploy. Já fui técnico e sei que o mais difícil é “largar o osso”; automatizar a infra não irá tirar seu trabalho – mas sim, deixará você com mais tempo para pensar em novas implementações ou melhorias.

Suba um servidor Opscode Chef, defina quais são os padrões de cada SO que você administra e crie cookbooks/recipes que automatizem as tarefas de instalação/atualização. Crie uma Role com este recipe e aplique em seus servidores.

2) Automação do Deploy (5 dias por aplicação)
Existem vários recipes prontos em community.opscode.com, para as mais diversas linguagens de programação existentes hoje, que vão desde uma aplicação .NET até uma aplicação em Node.JS.

Suba um git server em seu ambiente (ou adote um pago, como o github.com ou bitbucket.org) para que seus desenvolvedores possam subir o código-fonte da aplicação e o script de automação faça o deploy “automagicamente”.

Adote Paretto: Escolha aqueles 20% de aplicações que demandam 80% de seu tempo e foque na automação delas inicialmente.
Disponibilize um servidor de logs real-time como o log.io (logio.org) para que seus desenvolvedores possam acompanhar em real time os logs e debugar a aplicação.

3) Implemente um Processo de Integração Contínua (20 dias)
Adote um Servidor de Integração contínua como o Jenkins (ou o TFS da Microsoft); Crie regras para testes unitários, performance, segurança e outras, com os diversos plugins existentes.

4) Evolua! – Processo contínuo
Pesquise as novidades existentes no mercado. Há muita tecnologia nova e inovadora sendo lançada a cada mês e em uso nos grandes (Facebook, Twitter, Netflix, Paypal). Estas empresas estão há anos-luz no uso destas tecnologias – e as usam em ambientes de 10.000 servidores e mais de 1MM de usuários simultâneos. Se é bom para eles, deve ser para você também.

———————
#Fica a Dica:

1) Para desenvolvedores: APIs RESTful, Node.JS, ElasticSearch (principalmente para substituir as querys de banco de dados!). Pense em um frontend que tem a função somente de “cuspir” conteúdo: ele busca a informação em uma API RESTful de seu backend, monta e entrega para o Browser (e um frontend em Node.JS, assincrono, irá te dar uma performance enorme – o Paypal adotou este modelo).

2) Para o “pessoal da infra”: “Infrastructure as Code”. Este é futuro. Em um ambiente com dezenas, centenas ou milhares de máquinas virtuais, vários SOs e várias linguagens de programação usadas pelos desenvolvedores, nosso método de trabalho “na unha” está morto. Aprenda Ruby (usado tanto no Chef como no Puppet), aprenda Phyton e foque em Cloud (públicas, privadas, AWS, RackSpace, Softlayer, OpenStack e CloudStack). São todas tecnologias que vieram para ficar e, a cada dia, estarão mais presentes no seu cotidiano.