Close

Microsserviços: entendendo o que são e seus benefícios

Até cerca de 2013, as empresas geralmente criavam software corporativo construindo aplicativos como unidades únicas com grandes bases de código e uma arquitetura monolítica. À medida que o software se tornou mais complexo e a computação em nuvem ganhou popularidade, essa abordagem se tornou menos prática.

O advento dos produtos de software como um serviço (aplicativos fornecidos na nuvem) permitiu que as empresas usassem provedores, como a Amazon Web Services, para criar novos servidores e adicionar redundância rapidamente. Isso garantiu que os serviços permanecessem on-line durante upgrades. Também estabeleceu uma nova era de velocidade e agilidade. Os usuários começaram a esperar upgrades e melhorias rápidos, levando as empresas a alterar seus processos de desenvolvimento.

As empresas começaram a dividir os aplicativos em serviços ou microsserviços menores e independentes. Por exemplo, em vez de incluir uma caixa de entrada de mensagens como parte de uma plataforma monolítica de comércio eletrônico, elas podem criar um microsserviço separado para essa funcionalidade.

Paralelamente, os desenvolvedores começaram a trabalhar em grupos menores e mais especializados, modificando e aprimorando serviços individuais sem risco para todo o aplicativo. Esses grupos geralmente assumiam também a responsabilidade pelas operações de seu código — um modelo chamado DevOps. Para facilitar essas alterações, os gerentes de projeto começaram a desenvolver novas metodologias, como a abordagem ágil, que divide os projetos em lançamentos menores e mais frequentes.

Continue lendo para saber mais sobre a anatomia dos aplicativos baseados em microsserviços. Além disso, descubra como o Compass da Atlassian reduz a complexidade e permite que os desenvolvedores colham os benefícios desse modelo arquitetônico.

Os microsserviços são uma coleção de unidades menores que sempre entregam e implementam aplicativos grandes e complexos.

Logotipo do Compass.

Teste o Compass grátis

Aprimore a experiência de desenvolvedor, catalogue todos os serviços e melhore a integridade do software.

O que são microsserviços?


Um microsserviço é uma função responsável por uma única parte da lógica (exceto pelos microsserviços de domínio, explicados abaixo). Vários microsserviços se combinam para criar aplicativos distribuídos, como o Jira Software.

Ilustração de microsserviços

Há três tipos de microsserviços:

  1. Os microsserviços de domínio combinam vagamente os serviços com a funcionalidade relacionada.
  2. Os microsserviços de integração facilitam a interação entre aplicativos não relacionados.
  3. Os microsserviços de unidade de trabalho lidam com funções singulares.

Os microsserviços interagem entre si usando interfaces de programação de aplicativos (APIs). Os desenvolvedores que trabalham em serviços individuais podem aprender o funcionamento interno dos outros microsserviços, o que é outra vantagem sobre a arquitetura monolítica.

A arquitetura baseada em microsserviços oferece muitos benefícios, mas também aumenta a complexidade. É por isso que a Atlassian desenvolveu o Compass — para ajudar as empresas a simplificarem os processos à medida elas que crescem. Essa plataforma extensível para experiência do desenvolvedor reúne todas as informações sobre resultados de engenharia e colaboração da equipe em um local central e pesquisável.

Princípios fundamentais dos microsserviços


A arquitetura baseada em microsserviços tem várias funções. Os desenvolvedores podem desenvolver e implementar seus serviços de forma independente usando as linguagens e tecnologias adequadas aos seus componentes.

A comunicação entre microsserviços é baseada em API, permitindo o acesso a dados de várias fontes sem modificação. Os serviços individuais podem ser dimensionados com base na demanda, economizando custos e garantindo a disponibilidade.

Esses atributos tornam os aplicativos distribuídos baseados em microsserviços flexíveis e fáceis de manter.

Na arquitetura de microsserviços, cada componente pode ser desenvolvido, implementado, operado, alterado e reimplementado sem comprometer o funcionamento de outros serviços ou a integridade do aplicativo.

Benefícios dos microsserviços


Os microsserviços oferecem muitas vantagens. Eles simplificam o desenvolvimento e o gerenciamento de projetos. Às vezes, podem eliminar a necessidade de equipes de operações separadas, pois os desenvolvedores podem lidar com as operações dos microsserviços que criam.

Alguns outros benefícios dos microsserviços incluem:

Ilustração de balança

Resiliência e isolamento de falhas

Um erro afeta todo o aplicativo em arquiteturas monolíticas. Mas os microsserviços são independentes. Uma falha não afetará as outras partes do aplicativo.

Ilustração ágil

Agilidade

Dividir os aplicativos em partes menores acelera o desenvolvimento. Isso permite que as equipes criem, testem e implementem software com mais rapidez.

Ilustração da caixa de ferramentas

Diversidade tecnológica

Os microsserviços permitem que os desenvolvedores escolham as ferramentas e as tecnologias certas para o trabalho. Isso aumenta a eficiência e a produtividade.

Ilustração de blocos empilhados

Manutenção aprimorada

A capacidade de testar componentes individuais facilita a localização e a correção de bugs sem colocar todo o aplicativo off-line.

Desafios dos microsserviços


A arquitetura baseada em microsserviços tem muitos benefícios, mas também traz desafios.

Um desafio dos microsserviços é que os serviços independentes geram registros. Essa é uma desvantagem em comparação com os registros centralizados dos monólitos, que fornecem uma única fonte confiável para desenvolvedores e equipes de operações. O monitoramento e o gerenciamento da infraestrutura também são mais complicados, pois existem muitas peças móveis. É um desafio testar e depurar porque, diferentemente dos monólitos, não existe um ambiente de desenvolvimento integrado (IDE).

O Compass da Atlassian pode ajudar com todos esses desafios. O Compass facilita a colaboração e permite que as empresas gerenciem as complexidades das arquiteturas distribuídas à medida que elas são dimensionadas. Ele faz isso reunindo as informações desconectadas em um local central e pesquisável.

Dispersão do desenvolvimento

Mudar da abordagem monolítica para os microsserviços gera mais complexidade, pois são mais serviços, em mais locais, criados por várias equipes. Pode ser difícil ver como componentes distintos se relacionam entre si, quem tem determinado componente e como evitar o impacto negativo em componentes relacionados. Se essa dispersão não for gerenciada, o desenvolvimento vai ficar mais lento e o desempenho operacional vai ser ruim. Conforme o sistema cresce, é necessária uma equipe de operações experiente para administrar reimplementações constantes e alterações frequentes na arquitetura.

Falta de propriedade clara

Fica difícil saber quem é responsável pelo que na arquitetura de microsserviços. A equipe de DevOps pode gerenciar uma combinação de APIs, bibliotecas de componentes, ferramentas de monitoramento e imagens do Docker para que os usuários implementem um aplicativo. É importante ter informações sobre proprietários, recursos e relações em evolução entre outros componentes. Portanto, é fundamental ter comunicação e coordenação precisa entre diversas equipes, para que todos possam encontrar com facilidade o conhecimento necessário para entender o produto.

Custos exponenciais de infraestrutura

Cada novo microsserviço adicionado à implementação de produção vem com o próprio custo de pacote de testes, esquemas táticos de implementação, infraestrutura de hospedagem, ferramentas de monitoramento e muito mais.

Sobrecarga organizacional maior

São necessárias mais comunicação e colaboração para coordenar atualizações e interfaces entre equipes de arquitetura de microsserviços.

Depuração

Pode ser difícil depurar um aplicativo com vários microsserviços, cada um com um conjunto próprio de registros. Além disso, o processo de negócios pode ser executado em várias máquinas em momentos diferentes, complicando ainda mais a depuração.

Resposta a incidentes

É importante ter uma inteligência de resposta a incidentes com microsserviços que inclua informações como: quem usa o microsserviço, onde ele foi implementado, como foi implementado e com quem falar quando algo dá errado.

Para que é usada a arquitetura de microsserviços?


Sites de grandes consumidores geralmente usam centenas ou milhares de microsserviços. Os microsserviços são particularmente úteis nos seguintes casos de uso e setores:

  • Sites de comércio eletrônico, como o eBay, usam microsserviços separados para carrinhos de compras, aplicativos móveis e mensagens.
  • Instituições financeiras como o Bank of America usam microsserviços para se comunicar com serviços externos. Elas também usam os microsserviços para lidar com funções como autorizações de usuários e exibição de transações.
  • Plataformas de redes sociais como Instagram e Facebook usam microsserviços para exibir feeds de notícias, mensagens, notificações e redes de amigos dos usuários.

Práticas recomendadas para gerenciar microsserviços


Ao longo dos anos, os desenvolvedores criaram dezenas de práticas recomendadas essenciais para o desenvolvimento de microsserviços. Abaixo estão alguns exemplos:

  • O princípio de responsabilidade única (SRP) especifica que cada módulo ou microsserviço deve ter apenas uma função. A integração contínua (IC) do SRP é uma metodologia de controle de código-fonte que automatiza as verificações de qualidade do código antes da fusão em um projeto, permitindo a velocidade ao eliminar a necessidade de um processo de controle de qualidade separado. Essa prática recomendada de DevOps ajuda na velocidade. A IC precede a entrega contínua (CD), que executa ferramentas de construção automatizadas para manter o software pronto para implementação.
  • Os Gateways de API simplificam a comunicação entre microsserviços, gerenciam a autenticação e a autorização e aumentam a segurança.
  • A comunicação assíncrona entre microsserviços preserva a autonomia, reduzindo as dependências que podem retardar o funcionamento do aplicativo.
  • O controle de versão de microsserviços é fundamental quando os desenvolvedores implementam mudanças importantes, como a remoção de uma operação inteira. Essa prática suaviza as transições e minimiza a probabilidade de interrupção do serviço.

O Open DevOps da Atlassian, desenvolvido com o Jira Software, facilita que as equipes integrem automaticamente as ferramentas da Atlassian e dos parceiros, permitindo que elas se concentrem na criação e operação do software.

Gerencie melhor sua arquitetura de microsserviços com o Compass


O Compass da Atlassian é uma plataforma de experiência do desenvolvedor que reúne arquitetura de software distribuída e equipes colaborando em um só lugar. Ele fornece uma visão geral conveniente de todos os componentes e serviços onde a equipe trabalha. Ele também inclui um catálogo de componentes de software para ajudar os desenvolvedores a encontrar facilmente o que desejam.

Ilustração de microsserviços

O Compass permite fácil gerenciamento de componentes, rastreamento de propriedade e monitoramento de relacionamentos. Ele também acompanha as mudanças em tempo real.

Integrar o Compass em seu ambiente de desenvolvimento é simples devido à sua interface de usuário personalizável e à compatibilidade com ferramentas internas e de terceiros. Aprenda a gerenciar sua arquitetura de microsserviços com o Compass e como ele reúne informações desconectadas em um local central e unificado.

Microsserviços: perguntas frequentes


Quais ferramentas as pessoas costumam usar em microsserviços?

As empresas costumam usar ferramentas de conteinerização, como Kubernetes e Docker. Elas também usam frequentemente gateways de API entre microsserviços e seus clientes. Esses gateways executam funções de tráfego de API, como autenticação, controle de acesso e balanceamento de carga.

Como os microsserviços diferem da arquitetura monolítica?

Monólitos são grandes bases de código que funcionam como um só sistema. Eles exigem tempo de inatividade do sistema para atualizações e depuração. As arquiteturas de microsserviços são aplicativos distribuídos com fragmentos de funcionalidade menores e independentes. Os desenvolvedores podem atualizar, melhorar e depurar esses módulos sem que todo o aplicativo fique off-line. Isso simplifica o dimensionamento e ajuda na velocidade de desenvolvimento.

Como os microsserviços afetam o DevOps?

Aqueles que entendem de DevOps sabem que a integração e a entrega contínuas (o pipeline de DevOps IC/CD) são os pilares das metodologias de DevOps. A natureza modular dos microsserviços se alinha perfeitamente a essa abordagem. Os microsserviços possibilitam aos desenvolvedores criar, testar e implementar rapidamente versões pequenas e frequentes.

Participe da Comunidade da Atlassian para ver mais artigos e discussões sobre microsserviços.

Gerencie microsserviços com o Compass

O Atlassian Compass ajuda a gerenciar a complexidade da arquitetura de microsserviços distribuída e escalável. É a plataforma extensível para experiência do desenvolvedor, que reúne informações desconectadas sobre resultados de engenharia e colaboração da equipe em local central e pesquisável. Além de ajudar a controlar a dispersão de microsserviços com o Catálogo de Componentes, o Compass ajuda a estabelecer práticas recomendadas e mensurar a integridade do software com Indicadores de desempenho, bem como disponibilizar dados e insights em toda a cadeia de ferramentas de DevOps usando extensões criadas na plataforma do Atlassian Forge.

Ilustração de microsserviços no Compass