{"id":39613,"date":"2022-05-19T18:27:30","date_gmt":"2022-05-19T21:27:30","guid":{"rendered":"https:\/\/blog.binario.cloud\/?p=39613"},"modified":"2024-10-07T13:27:54","modified_gmt":"2024-10-07T16:27:54","slug":"microsservicos-tudo-que-voce-precisa-saber","status":"publish","type":"post","link":"https:\/\/binario.cloud\/blog\/microsservicos-tudo-que-voce-precisa-saber\/","title":{"rendered":"Microsservi\u00e7os: tudo que voc\u00ea precisa saber!"},"content":{"rendered":"\n

Seu time precisa criar novos componentes para uma aplica\u00e7\u00e3o core da sua empresa e atender requisitos de neg\u00f3cios em constante evolu\u00e7\u00e3o? Ou atualizar uma aplica\u00e7\u00e3o monol\u00edtica para linguagens mais recentes? Entregas de alta complexidade s\u00e3o o principal indicador de que sua empresa precisa partir para uma arquitetura de microsservi\u00e7os<\/strong> no desenvolvimento de novas solu\u00e7\u00f5es.<\/p>\n\n\n\n

Ent\u00e3o, se voc\u00ea est\u00e1 sofrendo com atraso em entregas de alta complexidade ou quer criar aplica\u00e7\u00f5es mais tolerantes a falhas, continue comigo neste guia completo sobre microsservi\u00e7os.<\/p>\n\n\n\n

O que \u00e9 e como funcionam os microsservi\u00e7os?<\/h2>\n\n\n\n

Microsservi\u00e7os s\u00e3o uma abordagem de arquitetura e organiza\u00e7\u00e3o para a cria\u00e7\u00e3o, desenvolvimento ou atualiza\u00e7\u00e3o de softwares atrav\u00e9s de pequenos servi\u00e7os independentes, que gerenciam seu pr\u00f3prio banco de dados e que se comunicam por meio de uma interface bem definida usando APIs leves. <\/p>\n\n\n\n

Nessa abordagem, a aplica\u00e7\u00e3o \u00e9 decomposta por suas fun\u00e7\u00f5es b\u00e1sicas para que cada fun\u00e7\u00e3o possa ser criada, aprimorada e implementada de maneira independente das outras.<\/p>\n\n\n\n

Por\u00e9m, a arquitetura de microsservi\u00e7os \u00e9 mais complexa do que acoplar fun\u00e7\u00f5es essenciais de uma aplica\u00e7\u00e3o de maneira flex\u00edvel, pois temos o fator humano totalmente envolvido aqui, na forma como as equipes de desenvolvimento s\u00e3o estruturadas. <\/p>\n\n\n\n

A comunica\u00e7\u00e3o entre os microsservi\u00e7os precisa preparar a aplica\u00e7\u00e3o para falhas inevit\u00e1veis, garantir escalabilidade futura e integra\u00e7\u00e3o de funcionalidades novas. Como um framework de arquitetura, os microsservi\u00e7os devem ser distribu\u00eddos entre pequenas equipes autossuficientes. Assim, caso aconte\u00e7am mudan\u00e7as na equipe, a aplica\u00e7\u00e3o n\u00e3o ser\u00e1 corrompida por completo.<\/p>\n\n\n\n

Qual a diferen\u00e7a entre microsservi\u00e7os da arquitetura monol\u00edtica?<\/h4>\n\n\n\n

Enquanto que na arquitetura de microsservi\u00e7os a aplica\u00e7\u00e3o \u00e9 decomposta, na arquitetura monol\u00edtica todas as fun\u00e7\u00f5es do software est\u00e3o acopladas. A principal vantagem da arquitetura de microsservi\u00e7os<\/strong> \u00e9 que uma falha em um dos microsservi\u00e7os n\u00e3o compromete os demais, j\u00e1 que cada um deles \u00e9 executado independentemente.<\/p>\n\n\n\n

A abordagem monol\u00edtica fazia parte do ciclo de garantia de qualidade, desde a atualiza\u00e7\u00e3o total da vers\u00e3o de atacado, at\u00e9 mesmo ap\u00f3s as altera\u00e7\u00f5es mais insignificantes. O resultado \u00e9 que, se alguma das partes atualizadas causasse erros, era necess\u00e1rio desativar a aplica\u00e7\u00e3o inteira, reverter a escala e corrigir o problema. Isso acontecia porque o c\u00f3digo-fonte da aplica\u00e7\u00e3o monol\u00edtica era incorporado em uma \u00fanica unidade de implanta\u00e7\u00e3o, como .war ou .ear. <\/p>\n\n\n\n

D\u00e1 pra imaginar o quanto isso atrasava o trabalho e a evolu\u00e7\u00e3o da aplica\u00e7\u00e3o, certo? Conforme as empresas sentiam a necessidade de lan\u00e7ar mais rapidamente suas aplica\u00e7\u00f5es ou atualiza\u00e7\u00f5es de software para o mercado, novas formas de lidar com o c\u00f3digo foram se tornando mais comuns, tais como a chamada arquitetura orientada a servi\u00e7o (SOA).<\/p>\n\n\n\n

O que Microservices tem a ver com SOA?<\/h2>\n\n\n\n

A arquitetura de microsservi\u00e7os \u00e9 bastante parecida com a arquitetura orientada a servi\u00e7o (SOA), bem conhecida pelos desenvolvedores de software como m\u00e9todo para fugir dos problemas das aplica\u00e7\u00f5es monol\u00edticas. <\/p>\n\n\n\n

Na arquitetura SOA, os servi\u00e7os individuais s\u00e3o organizados em torno de um processo de neg\u00f3cios espec\u00edfico atrav\u00e9s de protocolo de comunica\u00e7\u00e3o, como SOAP, ActiveMQ ou Apache Thrift, para que sejam compartilhados por meio de um Enterprise Service Bus (ESB). Quando reunidos em um pacote integrado por meio de um ESB, esses servi\u00e7os formam uma aplica\u00e7\u00e3o.<\/p>\n\n\n\n

Em SOA, a decomposi\u00e7\u00e3o da aplica\u00e7\u00e3o em servi\u00e7os individuais j\u00e1 permite criar, testar e ajustar os servi\u00e7os de maneira simult\u00e2nea, eliminando os ciclos de desenvolvimento monol\u00edticos. O problema \u00e9 que a centraliza\u00e7\u00e3o da comunica\u00e7\u00e3o em um ESB representava um ponto \u00fanico de falha para o sistema inteiro \u2014 basicamente, outra estrutura monol\u00edtica que podia congestionar todo o ciclo de desenvolvimento.<\/p>\n\n\n\n

Ent\u00e3o, qual a diferen\u00e7a entre SOA e microsservi\u00e7os<\/strong>? Diferentemente dos servi\u00e7os em SOA, os microsservi\u00e7os podem se comunicar entre si, normalmente de maneira stateless, tornando os softwares mais tolerantes a falhas e menos dependentes de um \u00fanico ESB. Al\u00e9m disso, os microsservi\u00e7os podem se comunicar por meio de interfaces de programa\u00e7\u00e3o de aplica\u00e7\u00f5es (APIs), o que traz flexibilidade para que as equipes de desenvolvimento escolham as ferramentas que desejarem.<\/p>\n\n\n\n

Qual a diferen\u00e7a entre microsservi\u00e7os e API?<\/h4>\n\n\n\n

Microsservi\u00e7os s\u00e3o um estilo de arquitetura para web service, em que a funcionalidade \u00e9 dividida em pequenos servi\u00e7os da web. J\u00e1 as APIs s\u00e3o os frameworks atrav\u00e9s dos quais os desenvolvedores podem interagir com uma aplica\u00e7\u00e3o da web. <\/p>\n\n\n\n

Nos \u00faltimos anos, as APIs p\u00fablicas se estabeleceram como produtos de neg\u00f3cio, j\u00e1 que a possibilidade de integra\u00e7\u00e3o entre aplica\u00e7\u00f5es aumenta a satisfa\u00e7\u00e3o e a reten\u00e7\u00e3o dos clientes. Por isso, seu apelo \u00e9 duplo para a maioria das empresas.<\/p>\n\n\n\n

Em geral, os microsservi\u00e7os se comunicam atrav\u00e9s de APIs<\/strong>. Al\u00e9m disso, elas podem ser usadas para expor os dados e funcionalidades de uma aplica\u00e7\u00e3o para terceiros, o que permite integra\u00e7\u00f5es poderosas e a evolu\u00e7\u00e3o cont\u00ednua da aplica\u00e7\u00e3o. Nesse sentido, o que h\u00e1 \u00e9 uma sobreposi\u00e7\u00e3o entre APIs e microsservi\u00e7os.<\/p>\n\n\n\n

Microsservi\u00e7os e containers<\/h2>\n\n\n\n

Levando em considera\u00e7\u00e3o a hist\u00f3ria da SOA, conseguimos ver que a arquitetura de microsservi\u00e7os \u00e9 uma evolu\u00e7\u00e3o de uma ideia que j\u00e1 existia. Em parte, os microsservi\u00e7os s\u00f3 se tornaram vi\u00e1veis gra\u00e7as aos avan\u00e7os nas tecnologias de conteineriza\u00e7\u00e3o, que permitem executar v\u00e1rias partes de uma aplica\u00e7\u00e3o de maneira independente no mesmo hardware e com um controle muito maior sobre os componentes individuais e ciclos de vida. <\/p>\n\n\n\n

Com as APIs e as equipes de DevOps, os microsservi\u00e7os em containers s\u00e3o os pilares das aplica\u00e7\u00f5es nativas em nuvem<\/strong><\/a>.<\/p>\n\n\n\n

Quando usar microsservi\u00e7os?<\/h2>\n\n\n\n

O exemplo das aplica\u00e7\u00f5es cloud native, que mencionamos acima, \u00e9 um bom ponto de partida. Em geral, os microsservi\u00e7os s\u00e3o indicados para aplica\u00e7\u00f5es que precisam de alta disponibilidade e escalabilidade<\/strong>. Al\u00e9m disso, eles podem ser usados para atualizar aplica\u00e7\u00f5es complexas compostas por v\u00e1rios componentes, como sistemas legados. <\/p>\n\n\n\n

Por isso, se voc\u00ea \u00e9 gestor de infra e est\u00e1 planejando migrar uma aplica\u00e7\u00e3o escrita em arquiteturas tradicionais para microsservi\u00e7os, mas ainda tem d\u00favidas se essa \u00e9 a melhor solu\u00e7\u00e3o, sugiro o uso dessa arquitetura na equipe de desenvolvimento da sua empresa sempre que precisar: <\/p>\n\n\n\n

1. Escalar ou implementar um componente individual rapidamente<\/p>\n\n\n\n

2. Reescrever sistemas legados em linguagens mais atuais<\/p>\n\n\n\n

3. Aprimorar a performance de um monolito a n\u00edvel de sistema e de neg\u00f3cio<\/p>\n\n\n\n

4. Quebrar uma aplica\u00e7\u00e3o muito grande em fun\u00e7\u00f5es menores<\/p>\n\n\n\n

Se voc\u00ea n\u00e3o tem certeza se seu time atual est\u00e1 pronto para dar esse passo, considere pensar sobre os seguintes t\u00f3picos:<\/p>\n\n\n\n