Tags

Micro Serviços e DevOps – Uma escolha certeira

Que o desenvolvimento de software vem evoluindo, isso todos nós sabemos. Nos últimos anos, o processo de desenvolvimento de Software evoluiu de uma maneira absurda, e isso é muito bom, pois isso quer dizer que conseguimos desenvolver cada vez mais software de qualidade, de alta performance para atender as demandas que mercado, tendo em vista que nosso publico fica cada vez mais exigente.

Algo que começou a se popularizar a algum tempo, foi a utilização de API’s em nossas aplicações, pois assim seria mais fácil realizar integrações com outros aplicativos, com nossas app’s mobile, etc.  E esse cenário foi bem visto, e começamos a segmentar cada vez mais nossas aplicações, onde surgiram os Micro Serviços.

Mas, oque raios são esses Micro Serviços?

De maneira bem simples, Micro Serviço, é uma pequena parte de minha aplicação, ou seja, em vez de termos uma unica aplicação onde se concentra tudo, teremos varias aplicações menores.

Não entendeu ainda? Bom, com as aplicações desenvolvidas atualmente, nós criamos uma unica aplicação contendo tudo oque precisamos, certo? Isso seria uma aplicação monolítica.

Vamos ilustrar um pouco este cenário:

Nossa aplicação monolítica, neste caso será nossa plataforma de E-commerce, e estamos próximos de uma black Friday. Nós conhecemos nossa aplicação, e sabemos que da maneira que está escalada ela não irá aguentar o dia de promoções, certo? Oque nós fazemos para que nossa aplicação aguente? Subimos mais algumas máquinas virtuais, instalamos nossa aplicação neste servidores e o incluímos em nosso load balance, certo?

Como eu disse, nós conhecemos nossa aplicação, e sabemos que a aplicação não aguentaria o tranco, apenas devido a parte do carrinho de compras, ou seja, fizemos um escalonamento absurdo, por causa de apenas um pequeno pedaço da aplicação que não iria aguentar. Esse é mesmo o cenário ideal?

 

Aqui entra o nosso cenário de Micro Serviços.

Imagine, se sua aplicação fosse toda desenvolvida em Micro Serviços, não seria bem mais fácil, e provavelmente mais barato você escalonar apenas o serviço relacionado ao carrinho de compras? Então, quando trabalhamos baseados em Micro Serviços, segmentamos toda nossa aplicação a pequenos serviços que formam um todo, onde podemos escalar cada um deles como necessário por exemplo.

Tudo bem, mas, onde entra o processo de DevOps nessa história toda?

Bom, imagine você tendo que implantar seu E-commerce monolítico manualmente, em todos os servidores da Farm, complicado não? E os riscos? São grandes, não são? Imagine agora, se você tivesse que publicar 100 aplicações menores em farms? Seria mais trabalhoso ainda, mais riscos, e mais prejuízos. Só para termos base, imagine que você precise alterar configurações no Web.config de sua aplicação, em apenas 1 você já tem muitos riscos, agora, multiplique isso por 100. Qual a probabilidade de seu operador errar ou esquecer algum durante o processo de implantação?

Quando você utiliza uma plataforma de DevOps para a sua aplicação, como o Visual Studio Team Services por exemplo, você garante que TODO seu software será implementado com Segurança em CADA um dos Servidores da sua Farm, ou seja, você garante que todas as suas 100 aplicações menores, serão implementadas com segurança e qualidade. E como você garante isso se utilizar o Visual Studio Team Services? Por exemplo, temos todo o controle de versões de nossa aplicação, temos o processo de build automatizada, e também releases automatizadas, onde você pode configurar todos seus ambientes, configurar variáveis de ambiente que devem ser alteradas em sua aplicação, configurações que devem ser realizadas em servidores, e após configurado, as implantações ocorrem sem intervenção humana, garantindo assim, que todos os passos, realmente serão seguidos.

Neste ponto, podemos incluir um outro cenário em potencial, seria a utilização de Contêineres, que embora eu não vá abordar neste artigo, é muito importante que você ter isso em seu roadmap.

Para concluir todo esse nosso raciocínio, é importante que comecemos a trabalhar com modelos de alta performance em nossas aplicações, utilização de Micro Serviços, e tudo isso, acoplado a um processo bem definido de DevOps, pois apenas dessa maneira, poderemos atender a demanda de mercado com qualidade e segurança para nossas empresas e nossos clientes.