Image credit: dev2ops.orgOlá pessoal,

o assunto do post de hoje é DevOps!

Todos já estão sabendo sobre a cultura DevOps? Se não, o Igor Araújo explicou bem nesse post aqui. Como o próprio nome já diz, o conceito do DevOps é estabelecer uma relação saudável e colaborativa entre a equipe de desenvolvimento (Dev) e a equipe de infra/operações (Ops).

DevOps é um termo que vem ganhando força. Para entender o porquê disso, temos que analisar como é o processo de desenvolvimento atual. Bem, os processos atuais, que vinham funcionando há mais de 20 anos eram todos baseados em sistemas estáticos. Muitos desses sistemas eram prontos de uma só vez e entregue somente no final do desenvolvimento. Qualquer mudança que fosse necessária levaria um outro grande tempo para ser realizada.

 

O mundo mudou bastante, novas tecnologias surgiram, os componentes eletrônicos se tornaram parte do nosso dia-a-dia e temos sistemas cada vez mais dinâmicos. A cada novidade uma adição é feita aos sistemas, atualizações constantes. E tudo tem que ser muito ágil, afinal, ninguém quer ficar para trás.

Muito bem, imaginem um cenário onde a equipe de infra e a equipe de desenvolvimento são totalmente separadas, não possuem colaboração e não estão caminhando juntos. Chances altas de aparecerem problemas, não é?!? Me permitam citar pelo menos um: equipe de desenvolvimento preparou uma nova versão para ser entregue ao cliente com uma nova funcionalidade. Essa nova versão exigiu a inclusão de uma nova coluna em uma tabela, mas a equipe de infra, apesar de ter sido instruída, ao colocar a versão em produção, não realizou o procedimento para adicionar a coluna, e então, obviamente, o sistema vai “quebrar”.

Para que esse problema não ocorra, as empresas que ainda mantém essa divisão – tipicamente de desenvolvimento e infra – costumam “burocratizar” demais o processo para que as atualizações cheguem nas mãos dos usuários finais. E é aí que começa o caos… imaginem um recurso que só pode ser concedido pelo funcionário de infra D. O funcionário A pede para B, que pede pra C, que pede finalmente pra D. Ele executa a operação (corretamente, se o pedido conseguiu chegar certinho até ele) e depois avisa a C para avisar a B para avisar a A que a alteração foi feita. Tudo isso mapeado, dentro dos melhores padrões da Engenharia de Software, mas que demandou tempo desnecessário e não é 100% garantido que tudo está da maneira que A havia previsto.

O conceito DevOps visa diminuir problemas como esse, pois teríamos uma equipe multidisciplinar (de desenvolvimento que agregue conhecimentos de infra) com possibilidade de fazer diretamente as atualizações necessárias nas tabelas e ser independente para realizar o deploy nos ambientes de homologação e produção. Esse cenário facilita a equipe a entregar continuamente um produto de qualidade.

Se você leu o post até aqui e se identificou com o cenário do caos (hehe) ou de uma burocracia que atrasa as novidades aos usuários finais, aqui vai umas dicas do que você deve incluir junto com a entrega da nova versão:

  • Manual de deploy básico do sistema. Mesmo que a infra já esteja acostumada, essa informação não é demais;
  • Quando houver mudanças no processo de deploy, ou alguma rotina extra que deva ser executada, ou criação de diretório, ou de variável de ambiente, inclua essa informação separadamente para que se destaque;
  • Scripts de atualização da sua base de dados, sempre que houver. Mantenha também um histórico do que mudou (estruturas e funcionalidades) em cada versão.

Por hoje é só. E você, já está se adaptando a um mundo mais dinâmico?

Um abraço e até a próxima!

Referências: