Esse post é a segunda parte do nosso artigo sobre “O que é DevOps?“. Se você perdeu a primeira etapa e tá perdido no assunto, então não deixe de ler o primeiro post. É só clicar aqui.
Ok, agora que você já sabe o que é DevOps e como funciona esse todo esse processo, que tal ir um pouco mais a fundo nessa conversa? Bom, você já sabe que se trata de uma cultura e que – pra ser alcançada com sucesso – a equipe/área de desenvolvimento precisa passar por algumas etapas.
Nesse artigo, vamos falar um pouco sobre as tecnologias utilizadas por profissionais que trabalham com isso, sobre as boas práticas que fazem parte dessa cultura e algumas tendências de mercado que vale à pena ficar de olho. Continue lendo e vem conhecer um pouco do dia-a-dia da galera de DevOps!
Boas práticas DevOps
Criar uma cultura DevOps não é algo simples e, para chegarmos a esse objetivo, existem alguns itens básicos para a aplicação efetiva desse conceito, entre eles:
- Microsserviços
- Integração Contínua
- Infraestrutura em Cloud
- Logs
- Automação
Iremos detalhar cada uma dessas boas práticas nos tópicos a seguir.
1. Microsserviços
Dentro da área de desenvolvimento, microsserviços fazem parte de uma espécie de arquitetura, na qual uma aplicação é desenvolvida através de pequenos e inúmeros serviços. Cada um desses serviços possui processos próprios, o que resulta em um consumo menor de recursos em cada processo.
Vamos utilizar o exemplo de um site em HTML. A página em HTML gera requisições a um aplicativo no servidor. Geralmente, essa comunicação é feita por requisições HTTP. O aplicativo que fica no lado do servidor é um sistema monolítico, ou seja, ele lida como um todo com as requisições, um conjunto de rotinas em que todas elas podem se comunicar. Se alguma alteração é feita, é necessário fazer deploy de todo o aplicativo.
Entretanto, com a ideia dos microsserviços, o seu aplicativo se torna uma suíte de serviços. E, nesse caso, deixa de ser monolítico. Será possível atualizar diferentes funções e fazer o deploy individualmente.
Como cada serviço permite um deploy separado do sistema, a resolução de problemas e o trabalho em equipe acabam ficando mais fáceis. É possível, inclusive, escrever serviços em diferentes linguagens, tirando ainda mais proveito dessa fragmentação dos aplicativos.
2. Integração Contínua (IC)
Ela ocorre quando o código é frequentemente atualizado, com novas alterações feitas pela equipe através de algum sistema de versionamento. Depois disso, são realizados testes para avaliar se está tudo em ordem e funcionando bem. O objetivo dessa prática é encontrar bugs de forma mais rápida, melhorar a qualidade geral da aplicação e diminuir o tempo de entrega das atualizações.
Assim como os microsserviços, a entrega contínua segue modelos de metodologias ágeis, como o Scrum. Por trazer resultados rapidamente, esse método tem sido amplamente utilizado no meio de desenvolvimento de softwares.
Quando a infraestrutura do software é voltada para a integração contínua, geralmente, há também processos de testes automatizados. Isso promove a rápida identificação dos problemas e permite adequações para que as novas versões possam ser lançadas com risco menor. Serviços como o AWS CodePipeline permitem fazer isso de forma produtiva e instantânea.
3. Infraestrutura em Cloud
A computação na nuvem é uma das tecnologias que mais tem contribuído para o sucesso do DevOps. Devido às suas características de conectividade, é possível escalar a capacidade de processamento e virtualizar servidores.
“Oi? Dá pra falar em português?”
Opa, dá sim!
Escalabilidade
Quando falamos em escalabilidade, nesse caso, estamos falando sobre o aumento da capacidade computacional. Imagine que na sua empresa há apenas um servidor, no qual o seu aplicativo está instalado. Pense no seguinte cenário:
O número de requisições de clientes é maior que a capacidade de processamento do seu servidor.
Nesse caso, o que acontece? Simples, a sua aplicação vai cair ou já caiu!
Agora, com uma alta escalabilidade será possível espelhar esse servidor ou utilizar outros serviços da nuvem para manter seu serviço no ar. Aumentando, assim, a capacidade do servidor somente quando for necessário. Isso faz com que você possa contar com inúmeras máquinas, mas pague apenas pela utilização delas e não para tê-las disponíveis trabalhando 24 horas ao dia.
Acho que estou entendendo… mas como isso é possível? Por meio da virtualização!
Virtualização
Através dela é possível ter inúmeros servidores na nuvem prontos para serem utilizados de acordo com a sua necessidade. Hoje, algumas das melhores práticas de DevOps dependem da nuvem, como os conceitos de infraestrutura e os testes contínuos.
Trabalhando com cloud computing é possível obter ganhos (quase) inacreditáveis em performance e custos.
4. Sistema de Logs
Sabe aqueles arquivos chatos que são gerados sempre que você faz deploy na aplicação? Às vezes até parece lixo, mas os logs podem ser alguns dos seus principais aliados na hora de descobrir bugs e como resolvê-los.
Tá e qual é o processo natural de resolução de um erro? Quando o encontramos, fazemos uma “leitura dinâmica” e tentamos encontrar o que tem de errado. Se não encontrarmos, fazemos o debug, que é o passo a passo da execução do aplicativo até o momento em que aconteceu o problema. O único problema é que isso pode levar horas!
A fim de evitar isso, a cultura DevOps diz para automatizar o sistema de logs para obter rapidamente a solução dos problemas através da identificação do erro exato.
Além disso, os logs permitem que você descubra quais são os triggers de falhas no sistema, onde estão os gargalos no seu aplicativo e se existem brechas de segurança em sua aplicação. É pelos logs que você sabe de onde vem e para onde vai o tráfego do seu servidor, o que tem passado pelo firewall e que tipo de conteúdo é recebido por email, por exemplo.
Eu entendo que, em um primeiro momento, pode até parecer desconexo, mas creia em mim. Quem já trabalhou com suporte sabe como logs podem “salvar vidas”. Portanto, aprenda a automatizá-los, isso vai mudar sua forma de trabalhar. Para isso, existem ferramentas como Amazon CloudWatch, Logstach e New Relic.
5. Automação
Bom, se posso tirar tantas coisas boas da arquitetura, criando logs e escalando meus serviços, tem que haver alguma forma de fazer isso automaticamente, certo? Sim, esse pensamento está perfeito!
Essa é uma das melhores características do DevOps! Os processos que citamos podem ser facilmente automatizados e existem diferentes formas de fazer isso.
Python é uma das principais linguagens utilizadas para automatização de determinados processos. Você pode, por exemplo, criar scripts que alertem quando seu banco de dados passar de determinada porcentagem da capacidade de utilização, o que permite que você tome algumas ações preventivas.
Além disso, as maiores fornecedoras de serviços de cloud (falaremos mais sobre isso) utilizam soluções que automatizam esses processos de logs, alertas e monitoramento. Dessa forma, os resultados provenientes das boas práticas de DevOps se tornam mais fáceis de serem atingidos.
Tecnologias e ferramentas DevOps
Se você quer usar essas metodologias ou tornar-se um profissional preparado para atuar em um ambiente que utilizam a cultura DevOps, é importante saber quais são os maiores players do mercado e quais os nomes que vale a pena acompanhar.
6. Sistema Linux
Antes de qualquer coisa, você precisa estar bem preparado. Você pode ser expert em Windows e Mac OS, mas se não souber nada das distribuições Linux, já estará em desvantagem no mercado. Grande parte dos servidores – senão a maioria – utiliza Linux como plataforma. Isso ocorre por muitos fatores, você pode saber um pouco mais sobre eles neste post. Depois de entender a realidade do Linux, conheça as suas distribuições e as diferenças entre elas.
7. Tecnologias de Automação
Como falamos antes, as principais formas de automatizar processos de logs e alertas é através de linguagens de programação, como o Python, ou usando ferramentas comerciais. Se você quiser aprender a fazer isso, pode começar fazendo um curso de Python.
Para automatizações em geral existem soluções interessantes no mercado como o Vagrant, Prometheus, Snort, Splunk, Nagios entre muitos outros.
8. Tecnologias de Cloud Computing
Dentro da área de cloud computing, existem duas divisões: os fornecedores de nuvem e as empresas que fornecem consultoria. Geralmente, tende a ser mais fácil utilizar as consultorias para ter os serviços de nuvem, pois são especializadas e certificadas nos produtos que as fornecedoras oferecem.
Entre as principais fornecedoras de tecnologias de serviços de cloud, temos a AWS (Amazon), Azure (Microsoft), Google e Softlayer (IBM). Elas oferecem preços e serviços diferentes, então é interessante estudar sobre cada uma delas para escolher em qual você quer se especializar e tirar certificações.
Como consultorias que se destacam, podemos citar de exemplo a Rivendel e a BMSIX: duas das maiores consultorias em cloud do Brasil. Elas atendem clientes como Petrobrás, Asus, Nubank, Microsoft, LG e Multiplus. Vale dar uma pesquisada no site dessas empresas e ler o que elas falam sobre seus serviços, para assim, conhecer um pouco mais sobre a área.
Vamos começar?
Agora é hora de começar a estudar! Mesmo que ainda não seja uma cultura oficialmente utilizada no seu ambiente de trabalho, se você é desenvolvedor, eu sugiro que comece seus estudos nessas práticas e tecnologias. Isso será um diferencial para você e, em breve, provavelmente essa cultura vai chegar até a sua empresa ou equipe de desenvolvimento.
Ou melhor! Você pode sugerir e ajudar a orientar no processo de implementação. Pode valer uma boa promoção, hein!
Como você viu, é um assunto extenso e ainda tem muita coisa bacana pra ser desenvolvida utilizando essas práticas. Se ficou alguma dúvida, ou tem sugestões, críticas, elogios, não deixe de comentar abaixo. Espero que o post tenha esclarecido um pouco mais sobre a rotina de um profissional ou equipe que possui a cultura DevOps. Até a próxima!