Olá, concurseiro/a!
Um assunto que começa a ser cobrado pelas diversas bancas para os cargos da área de Tecnologia da Informação é microsserviços, um padrão arquitetural que é muito utilizado em grandes empresas, como a Amazon e a Netflix. Neste artigo vamos explicar um pouco do seu funcionamento, bem como os principais aspectos dessa arquitetura, como preparação para as bancas que estão começando a cobrar sobre esse tema tão atual.
Introdução
Martin Fowler escreveu sobre o tema pela primeira vez em 2014, compilando uma série de práticas e vantagens na sua adoção. Vários autores atribuem o conceito de Microsserviços como uma ramificação do padrão de Arquitetura Orientada a Serviço (SOA), cujo objetivo é disponibilizar as funcionalidades das aplicações na forma de serviços baseando-se na coleção de pequenos serviços desacoplados que se comunicam geralmente através de HTTP.
Tendo surgido nos últimos anos para conceituar uma forma de desenvolver software como uma suíte de serviços e deploys independentes e automatizados, a “Arquitetura de Microsserviços” vem sendo amplamente utilizada devido à evolução dos sistemas atuais, trazendo flexibilidade. É uma arquitetura extremamente escalável e de alta disponibilidade em comparação com a abordagem tradicional de desenvolvimento de software, os sistemas monolíticos.
Nos sistemas monolíticos, todas as funcionalidades ficam contidas dentro da própria aplicação, gerando uma maior dificuldade para solucionar problemas e para adicionar novos recursos à aplicação, uma vez que, quanto maior for, maior será a base do código e, como consequência, existirá um grande ponto único de falha. Por exemplo, se houver um pequeno erro em alguma funcionalidade – como na funcionalidade de cadastro de clientes – que deixe o sistema fora do ar, todas as demais funcionalidades que não possuem nenhuma relação serão impactadas.
Por outro lado, os sistemas baseados no conceito de Microsserviços são desenvolvidos de forma que cada módulo da aplicação seja um serviço standalone, no qual o seu deploy e os escalonamentos ocorrem independentemente da “aplicação principal”, em que cada módulo recebe suas requisições, as processa e devolve ao solicitante o resultado geralmente através de HTTP, conforme informado.Arquitetura de Microsserviços
As arquiteturas de software tratadas antes da expansão dos microsserviços têm sido chamadas de arquitetura monolítica. Na tabela 1 são demonstradas algumas diferenças para melhor entendimento:
Segundo Villamizar et al. (2015), escalar aplicações monolíticas é um desafio porque geralmente estas oferecem muitos serviços. Alguns deles são mais populares do que outros. Se os serviços populares precisam ser dimensionados porque são altamente exigidos, todo o conjunto de serviços também será dimensionado ao mesmo tempo, o que implica que os serviços impopulares irão consumir uma grande quantidade de recursos do servidor mesmo quando não forem utilizados.
A arquitetura baseada em microsserviços emergiu para simplificar essa realidade e é uma evolução para os modelos de aplicativos. Conforme Savchenko et al. (2015), microsserviços são uma entidade orientada por software que possui os seguintes recursos:
Isolamento – de outros microsserviços, bem como do ambiente de execução baseado em um recipiente virtualizado;
Autonomia – microsserviços podem ser implantados, destruídos, movidos ou duplicados de forma independente. Assim, os microsserviços não podem ser vinculados a nenhum recurso local porque o ambiente do microsserviço pode criar mais de uma instância do mesmo microsserviço;
Interface aberta e padronizada – descreve todos os objetivos específicos com eficácia, eficiência e métodos de comunicação disponíveis (API ou GUI);
O microsserviço é de grão fino – cada microsserviço deve lidar com sua própria tarefa.
As aplicações que expõem interfaces que podem ser usadas por outras aplicações para interagir são definidas como “interfaces de programação de aplicativos” (API) (Krylovskiy et al., 2015).
As API de microsserviço, que são criadas usando protocolos de comunicação na Internet como HTTP, aderem a padrões abertos, como REST e SOAP, e usam tecnologias de troca de dados como XML e JSON (Almeida et al., 2017).
Benefícios do Microsserviços
Para que uma aplicação seja operacional utilizando uma Arquitetura de Microsserviços, os serviços dessa aplicação precisam solicitar dados entre si de forma constante através de um sistema de mensageria.
Uma intersecção de código entre todos os sistemas, tratando as requisições, terá assim um grande sistema quebrado em serviços menores e mais leves, por critério de funcionalidades de negócio, integrados via protocolo HTTP ou padrão REST, por exemplo.
Com a segregação dos módulos em serviços, é possível que requisitos como escalabilidade e elasticidade, que se tornam necessários em situações de alta volumetria de requisições encontradas em soluções de médio e grande porte, aumentem ou reduzam instâncias para atender cada serviço da aplicação de acordo com a necessidade, consumindo recursos físicos sob demanda e direcionados para aquele módulo que está sendo muito requisitado.Uma vez os módulos estando separados e sendo desenvolvidos de forma independente, é possível engajar a equipe em unidades de negócios específicos, aumentando e direcionando a produtividade para atender requisitos específicos, visto que os deploys e as implementações são realizadas de forma independente.
Não há necessidade de se paralisar a aplicação, nem envolver todo os desenvolvedores e a equipe para avaliar os riscos e os requisitos de se implementar uma nova versão. Como resultado, se ganha agilidade na correção de bugs, sendo que estarão isolados nos respectivos módulos, não impactando nos demais serviços, além da agilidade de liberação de novas funcionalidades.
Dentro de uma Arquitetura de Microsserviços, existe uma divisão obrigatória, clara, organizada e bem segmentada, que envolve o negócio do cliente. Como consequência, as novas funcionalidades que são liberadas devem agregar valor, diferenciar a solução em comparação aos concorrentes e serem desenvolvidas de forma ágil ao cliente final.
O conceito de padrões de arquitetura escalável, flexível e de alta disponibilidade fornecido pela Arquitetura de Microsserviços tem sido muito bem recebido pela indústria e pela comunidade de desenvolvimento de Software, sendo adotado a cada dia mais por diversas empresas do mercado, com o objetivo de resolver e mitigar diversos problemas complexos e custosos que as arquiteturas monolíticas apresentam.
Essa é a integração ágil – assunto tratado em outro artigo aqui no portal –, uma abordagem de conexão de recursos que combina tecnologias de integração, técnicas de entrega ágil e plataformas nativas em cloud para aumentar a rapidez e a segurança na entrega de softwares.
Vamos ver agora algumas questões sobre esse tema:
- (IADES/BRB/ANALISTA EM TECNOLOGIA DA INFORMAÇÃO/2019) No contexto de microsserviços, trata-se de uma abstração da arquitetura web. Resumidamente, consiste em princípios/regras/constraints que, quando seguidos, permitem a criação de um projeto com interfaces bem definidas, dessa forma, permitindo, por exemplo, que aplicações se comuniquem.
Essa definição diz respeito a:
a) WSDL
b) SDK
c) JSON-RPC
d) XML-RPC
e) REST API.
- (CESPE/MPE-PI/ANALISTA MINISTERIAL-TECNOLOGIA DA INFORMAÇÃO/2018) Julgue o item a seguir, concernentes a microsserviços e arquiteturas de integração:
Um princípio básico dos microsserviços é que cada serviço gerencia seus próprios dados, sendo responsável pelo armazenamento particular desses dados e também pela execução em seus próprios processos.
Certo ou Errado?
O gabarito está no final deste artigo.
Agradecimentos
Agradeço ao amigo Sérgio Sierro com quem divido a autoria deste artigo, excelente profissional de infraestrutura com experiência no setor público e privado.
Referências
[1] https://www.redhat.com/pt-br/topics/microservices/what-are-microservices
[2] https://khoadinh.github.io/2015/05/01/microservices-architecture-overview.html
[3] https://www.deal.com.br/blog/7-beneficios-de-microservicos-e-arquitetura-escalavel/
[4] https://www.redhat.com/pt-br/topics/microservices
GABARITO
- e
- Certo
Professor Washington Almeida
Mestre em Engenharia de Software pelo Centro de Estudos e Sistemas Avançados do Recife – C.E.S.A.R. Atualmente é Analista Judiciário na Justiça Federal (TRF1), Professor no Gran Cursos Online e na Universidade de Brasília – UNB, no Departamento de Ciência da Computação – CIC, Campus Darcy Ribeiro. Certificado ISF ISO/IEC 27002. Ocupou a Função de Diretor do Núcleo de Operação de Centros de Dados na Justiça Federal – TRF1. Exerceu o cargo de Coordenador-Geral de Sistemas (DAS 101.4) no Ministério do Planejamento, Orçamento e Gestão – MPOG, servidor público ocupando o cargo de Analista em Tecnologia da Informação – ATI.
Aprovado em diversos concursos para cargos de T.I entre eles:
Agência Espacial Brasileira – Analista em Ciência e Tecnologia / Ministério do Planejamento, Orçamento e Gestão – Analista em Tecnologia da Informação / TRF 1ª Região – Analista Judiciário Especialidade Informática / Dataprev – Analista de Tecnologia da Informação / Codevasf – Analista em Desenvolvimento Regional – Informática / Ministério das Cidades – Analista de Sistemas / TRT 3ª Região – Técnico Judiciário – T.I / Eletrobrás Eletronorte – Analista de Sistemas / Governo do Distrito Federal – Professor Temporário – Informática / UNB – Professor Substituto – Departamento de Ciência da Computação.
Quer garantir a sua aprovação em concursos? Prepare-se com quem mais entende do assunto!
Estude onde, quando, como quiser e em até 12x sem juros!
Cursos Online para o Concursos
Quer ficar por dentro dos concursos abertos e previstos? Clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
Clique no link abaixo e inscreva-se gratuitamente:
Participe da conversa