Introdução ao termo “DevOps” para quem não tem ideia do que seja
A palavra ou expressão “DevOps”, já bem conhecida a um tempo, parece ter tomado uma propulsão nos últimos tempos. Se você não sabe absolutamente nada a respeito, você está no lugar certo.
A definição da Amazon em seu post a respeito, referenciado ao final dessa publicação, é:
O DevOps é a combinação de filosofias culturais, práticas e ferramentas que aumentam a capacidade de uma empresa de distribuir aplicativos e serviços em alta velocidade (...)
A palavra “DevOps” significa a junção dos times de Desenvolvimento (Developer — Dev) e de Infraestrutura (Operations — Ops). E só aqui já temos muito esclarecimento.
Por muito tempo os especialistas em determinada tecnologia ou área, eram muito valorizados. Ser um especialista em Java por exemplo, lhe tornava atraente para o mercado de maneira geral alguns anos atrás, quando o próprio Java ainda era mais popular que todas as outras linguagens.
Sempre houve uma certa divisão, principalmente entre a área de desenvolvimento e de infraestrutura. Ouvir frases como “Isso é questão de infra, eu não sou especialista nisto”, e “Isso é um problema de desenvolvimento, garanto que infraestrutura está ok!”, não eram nada incomuns.
Mas certo dia algumas pessoas começaram a entender que no final das contas, todos nós estamos tentando entregar a mesma coisa, valor para nosso cliente. Sem entregar isso, não adianta ser especialista em X ou Y, nosso trabalho como um todo não terá sentido, é como se a flecha tentasse resolver tudo sem o arco.
Basicamente esse termo expressa que precisamos mudar a nossa cultura de trabalho para que o time tenha foco total na entrega rápida, contínua e de qualidade para o cliente.
Ok, mas como fazer isso?
Não existe uma maneira específica para tornar isso realidade. Vai depender muito mais do meio em si. O correto é se discutir com os stackholders a forma mais adequada dentro da realidade do seu time, de efetuar essa entrega contínua e integração dos grupos.
Algumas das soluções mais populares são o uso de micro-serviços (ou microsserviços, microservices, etcs…), onde o sistema em si é dividido em pequenos serviços que podem ser distribuídos para os times de desenvolvimento, e serem resolvidos em paralelo, inclusive com tecnologias diferentes.
Vale mencionar também tecnologias de virtualização com o Docker. Se um desenvolvedor e um responsável de infraestrutura organizarem images de containers para seus projetos, certamente o processo de deploy e entrega será facilitado.
E o que dizer dos testes automatizados? Esses tem uma importância indescritível. Testes bem feitos garantem a qualidade da entrega e reduzem drasticamente a quantidade de bugs que por ventura o cliente possa encontrar. E é isso que queremos certo? Entrega de qualidade.
Concluindo
Não podemos simplesmente definir num post o que a sua empresa deve fazer para implementar DevOps em seus produtos, mas podemos nos convencer de que temos que mudar um pouco o nosso pensamento.
Um time de infraestrutura precisa entender exatamente como o projeto deve funcionar em produção e participar do projeto de construção. Um time de desenvolvimento tem a obrigação de conhecer minimamente como fornecer uma infraestrutura que se adeque a demanda.
Transferir a culpa um para o outro quando há um problema, não é uma solução. Unir-se para resolver da melhor forma possível é. Feedback é um dos principais princípios de DevOps.
Abaixo estão alguns links importantes para você conhecer mais afundo a cultura DevOps. Vamos sair da caixinha e abrir nossa mente? Somos um time, temos um foco e podemos alcançar isso nos ajudando, não nos digladiando.
Arranja um amiguinho do departamento ai e marca ele numa foto #SomosTodosTI. Brincadeira, não faz isso. Abraço e até a próxima (: