Conheça 6 vantagens que a arquitetura de micros serviços podem gerar para seu negócio

Algumas empresas não sabem ao certo os benefícios de utilizar uma arquitetura em micros serviços para suas aplicações ou então, não sabem nem exatamente do que se trata a questão, criamos esse artigo para mostrar um pouco sobre o que é a arquitetura em micros serviços e quais os benefícios para seu negócio.

Quando falamos em micros serviços, você encontrará alguns termos como: Contêiner, API’s, CI/CD (Continuos Integrations e Continuos Delivery) e diversos outros, não necessariamente todas as soluções sendo necessárias para o correto funcionamento de sua arquitetura.

Nesse artigo, não pretendemos entrar em questões técnicas e nem explicar cada uma dessas ferramentas, mas sim, mostrar sobre as vantagens e benefícios de utilizar uma arquitetura orientada a micros serviços.

Imagine uma aplicação monolítica, um E-commerce onde todas as partes do seu sistema estão em um único código fonte, tudo junto e misturado, carrinho, cadastro, produtos, etc.

Quando seu cliente clicar para adicionar itens no carrinho, será adicionado o produto, ele poderá finalizar a compra e realizar o pagamento.

Agora, eis que surge uma nova demanda para realizar uma atualização no código e inovar a forma que os clientes finalizam as compras, ao invés de ir direto para o pagamento os seus clientes serão redirecionados para uma outra página que irá recomendar produtos semelhantes.

Para tal atualização, os desenvolvedores terão que realizar alteração no código fonte (onde está toda a aplicação), mover toda a equipe de desenvolvimento para análise e adequações necessárias e caso ocorra alguma falha corremos o risco de ter uma indisponibilidade total da aplicação e consequentemente termos que realizar um rollback.

Nesse caso, vemos que todos os desenvolvedores realizam o deploy em um mesmo local e assim gerando possibilidade de indisponibilidades na aplicação.

Se neste exemplo estivéssemos trabalhando com arquitetura em Micros Serviços, cada parte da sua aplicação teria um código autônomo e todo o processo de alteração e atualização poderá ser realizado de forma que não haja indisponibilidade na aplicação toda, nós iríamos apenas acessar o “módulo” em que está localizado aquela parte do seu software e alteraríamos apenas o “carrinho”, caso tenhamos algum problema, o seu E-commerce ainda estará no ar e a única parte que precisaríamos realizar um “Rollback” seria o código do “carrinho”, ou seja, é possível trabalhar de forma muito mais distribuída e ágil.

 

Atualmente, com plataformas de nuvem como a AWS e AZURE, podemos criar arquiteturas de Micros Serviços de forma muito mais ágil, com serviços nativos que são auto gerenciados ou então de forma Serverless, como exemplo, temos: EC2, ALB, ECS, EKS, FARGATE e diversos outros.

Com este breve exemplo, vamos citar algumas vantagens de trabalhar com este tipo de arquitetura.

#1 – Disponibilidade:

Com a descentralização do código e infraestrutura, nota-se que, quando necessário realizar atualizações na aplicação, podemos trabalhar de forma desacoplada – autônoma e não afetar toda a aplicação.

Além disso, com os recursos que as plataformas de nuvem oferecem, podemos trabalhar com arquiteturas em Alta Disponibilidade onde, além de trabalharmos com partes da aplicação, podemos replicar cada parte em mais Zonas de disponibilidade, com isso, caso tenhamos um problema de infraestrutura física, teremos outra Zona de disponibilidade (AZ) em funcionamento.

#2 – Liberdade e agilidade:

Por conta de os serviços serem fracamente acoplados, é possível adotarmos tecnologias específicas para cada trabalho.

Podemos adotar novas tecnologias mais rapidamente e com menores riscos, com os serviços sendo autônomos, temos um fortalecimento independente de tecnologia e podemos resolver problemas através da escolha inteligente de ferramentas específicas, como exemplo podemos utilizar linguagens de programação específicas para cada módulo, criar imagens bases com as ferramentas necessárias de coleta de Log’s específicas como, FluentD, Logstash ou Filebeat e até mesmo ferramentas de segurança individuais.

#3 – Escalabilidade segmentada:

Com a possibilidade de desacoplamento das partes da aplicação, podemos dedicar o aumento de recursos para partes do software que tenham um maior número de requisições, sem a necessidade do aumento de toda a infraestrutura, ou seja, serviços críticos podem ser utilizados mais recursos do que os outros e ter escalabilidade sob demanda.

#4 – Segurança:

Da mesma maneira que a questão da escalabilidade, serviços mais críticos, com maior número de acessos e que sejam públicos, podemos dedicar mais recursos de segurança para que não tenhamos problemas.

Além disso, podemos realizar a criação de ambientes de DEV/HML (Desenvolvimento e homologação) para toda parte do seu sistema, assim reduzindo o acesso ao ambiente de produção e garantindo sua integridade e aumentando a segurança, dessa forma, podemos liberar acesso a pessoas específicas de cada time para partes sensíveis do código, uma vez que sendo monolítico é um pouco mais difícil de segmentar acessos.

Outro ponto, são os serviços gerenciados das plataformas de nuvem, onde nativamente temos ferramentas de segurança que podem ser facilmente ativadas.

#5 – Implantação automatizada:

Para alcançar êxito em uma arquitetura de micros serviços é fundamental realizar bem a questão de CI/CD, sem um bom processo de integração contínua, não é possível desfrutar a agilidade que uma arquitetura em micros serviços pode oferecer.

Com micros serviços, podemos utilizar diversas ferramentas de integração contínua e deployment contínuo (CI/CD), essas ferramentas permitem que nós façamos builds, testes de integração, deploy e rollback de forma prática e ágil.

Em uma arquitetura monolítica nós costumamos encontrar um único processo de build onde a saída é o aplicativo completo em si, com isso, toda vez que for lançado um release o processo irá rodar e o aplicativo será testado e publicado gerando um atraso, pois teremos que parar a aplicação inteira para poder lançar um novo recurso. Já em uma arquitetura de micros serviços podemos encontrar diversas configurações de build de forma heterogênea e sem ter indisponibilidade.

As ferramentas existentes de CI permitem realizar todo este processo de forma automatizada e integrada com as ferramentas de versionamento de código como, BitBucket, CodeCommit, GitHub, GitLab, etc.

 

#6 – Custos:

Se tratando de micros serviços podemos ter otimização de custos sim, um exemplo é a utilização dos recursos de forma granular, ao invés de subirmos máquinas para atender requisições, nós podemos disponibilizar um maior número de contêineres para atender a demanda por partes do seu sistema, podendo ser dividido por partes críticas e não críticas e caso você utilize os recursos em nuvem, sabemos que isso afeta de forma significativa os seus custos.

Podemos citar diversas vantagens de trabalharmos com a arquitetura em micros serviços como, gestão mais modular, facilidade de integração com API’s, resiliência e outros mais.

E com todo este processo configurado de forma correta com uma ferramenta de CI/CD podemos reduzir o tempo e custo em processos de Quality Assurance-Deploy.

 

Nós da BRLink, temos diversos cases com arquiteturas em micros serviços, empresas como Grupo Pão de Açúcar, CNA e NexTI, são exemplos de utilização e caso queiram saber mais e realizar um estudo para verificar a compatibilidade de sua aplicação com este tipo de arquitetura, entre em contato conosco.