Close

Microservices: understanding what it is and its benefits

Não faz muito tempo que o jeito preferido de criar aplicativos era a arquitetura monolítica, uma unidade individual e autônoma. Essa abordagem funcionou bem para muitos desenvolvedores até os aplicativos ficarem mais complexos. Quando um pequeno trecho de código é alterado no sistema monolítico, é preciso reconstruir tudo, fazer testes e implementar uma versão nova do aplicativo.

Depois vieram os microsserviços, a abordagem que divide sistemas de software em unidades menores desenvolvidas e implementadas com autonomia. A arquitetura de microsserviços foi impulsionada pelo movimento DevOps, que busca fazer atualizações, como novos recursos, correções de bugs e melhorias de segurança, com frequência. Em muitos casos, ela também se tornou um caminho para empresas reescreverem aplicativos herdados usando linguagens de programação modernas e atualizações para a pilha de tecnologia.

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

O que são microsserviços?


A arquitetura de microsserviços, também conhecida como "microsserviços", é a abordagem de criação de aplicativos como uma série de serviços com implementação independente e desenvolvimento descentralizado e autônomo. Esses serviços são pouco integrados, implementáveis com independência e fáceis de manter. Enquanto o aplicativo monolítico é criado como unidade indivisível, os microsserviços dividem essa unidade em uma coleção de unidades independentes que contribuem para o todo. Os microsserviços são parte integral do DevOps, pois são a base para práticas de entrega contínua que permitem que equipes se adaptem com rapidez aos requisitos do usuário.

Ilustração de microsserviços

Um microsserviço é um serviço web responsável por parte da lógica de domínio. Vários microsserviços são combinados para criar um aplicativo, e cada um representa uma funcionalidade para o domínio. Os microsserviços interagem uns com os outros por meio de APIs, como REST ou gRPC, mas não têm conhecimento da atividade interna de outros serviços. Essa interação harmoniosa entre microsserviços é a arquitetura de microsserviços.

Com a arquitetura de microsserviços, desenvolvedores podem se organizar em equipes menores especializadas em serviços diferentes, com pilhas distintas e implementações dissociadas. Por exemplo, o Jira é formado por diversos microsserviços, e cada um representa uma funcionalidade específica, como pesquisa de itens, visualização de informações sobre o item, comentários, transições de item e muito mais.

Características dos microsserviços


Não existe definição formal para a arquitetura de microsserviços. No entanto, há padrões ou características comuns que valem a pena conhecer.

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


Microservices provide many advantages. They simplify development and project management. Sometimes, they may eliminate the need for separate operations teams since developers can handle operations for the microservices they build. 

Some other benefits of microservices include:

Ilustração de balança

Escalabilidade flexível

Os microsserviços são distribuídos por natureza e podem ser implementados em clusters. Assim, é possível ter escalabilidade horizontal dinâmica em todos os limites de serviço. Se o microsserviço atingir a capacidade de carga, novas instâncias desse serviço são implementadas com rapidez no cluster que o acompanha para ajudar a aliviar a pressão.

Ilustração ágil

Agilidade

Equipes pequenas e independentes costumam criar serviços dentro dos microsserviços, o que é um incentivo para a adoção de práticas ágeis. Assim elas ganham autonomia e rapidez para trabalhar, o que encurta o ciclo de desenvolvimento.

Ilustração da caixa de ferramentas

Flexibilidade tecnológica

Arquiteturas de microsserviço não costumam seguir uma abordagem definida com uma cadeia de ferramentas, mas permitem que equipes tenham a liberdade de escolher as ferramentas com que querem trabalhar.

Ilustração de blocos empilhados

Lançamentos frequentes

Uma das principais vantagens dos microsserviços são os ciclos de lançamento frequentes e mais rápidos. Como elemento importante da integração e da entrega contínua (CI/CD), os microsserviços permitem que as equipes experimentem novos recursos e revertam caso algo não funcione. Assim, fica mais fácil atualizar o código, e o tempo de entrada no mercado para novos recursos diminui.

Desafios dos microsserviços


Microservices-based architecture has many benefits, but it also comes with challenges. 

One challenge of microservices is that the independent services generate their logs. This is a disadvantage compared to monoliths' centralized logs, which provide a single source of truth for developers and operations teams. Monitoring and infrastructure management are also more complicated since many moving pieces exist. Testing and debugging are challenging because, unlike monoliths, no integrated development environment (IDE) exists.

Atlassian's Compass can help with all these challenges. Compass facilitates collaboration and allows companies to manage the complexities of distributed architectures as they scale. It does this by bringing the disconnected information together in a central, searchable location.

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.

Microsserviços e DevOps: cara de um, focinho do outro


Com o aumento de complexidade e dependência entre os microsserviços, práticas de DevOps (como automação da implementação, do monitoramento e do ciclo de vida) agora são vistas como fundamentais para esse tipo de arquitetura. É por esse motivo que, muitas vezes, os microsserviços são considerados o primeiro passo na adoção da cultura de DevOps, que permite:

  • Automação
  • Escalabilidade aprimorada
  • Capacidade de gerenciamento
  • Agilidade
  • Entrega e implementação mais rápidas

Tecnologias e ferramentas importantes para a arquitetura de microsserviços


O conceito de contêiner é simples: um pacote com o aplicativo e todas as dependências, que facilita e consolida a implementação. Como não têm a sobrecarga de um sistema operacional, os contêineres são menores e mais leves do que as máquinas virtuais tradicionais. Portanto, são a combinação perfeita para serviços menores dentro das arquiteturas de microsserviços, porque podem ser iniciados e interrompidos com rapidez.

Com a proliferação de serviços e contêineres, é essencial orquestrar e gerenciar grandes grupos de contêineres. O Docker é uma plataforma popular de conteinerização e tempo de execução que ajuda desenvolvedores a criar, implementar e executar contêineres. No entanto, executar e gerenciar contêineres em escala só no Docker é um desafio. Existem outras soluções, como Kubernetes, Docker Swarm, Mesos e HashiCorp Nomad, que ajudam a lidar com a conteinerização em escala.

A conteinerização e a implementação de contêineres são o novo padrão de infraestrutura distribuída. Docker e Kubernetes empacotam o serviço em um contêiner completo que pode ser implementado e descartado com rapidez. Essas novas ferramentas de infraestrutura são complementares à arquitetura de microsserviços. Com um sistema de gerenciamento de contêineres, fica fácil conteinerizar, implementar e administrar microsserviços.

O que são microsserviços?


A arquitetura de microsserviços, também conhecida como "microsserviços", é a abordagem de criação de aplicativos como uma série de serviços com implementação independente e desenvolvimento descentralizado e autônomo. Esses serviços são pouco integrados, implementáveis com independência e fáceis de manter. Enquanto o aplicativo monolítico é criado como unidade indivisível, os microsserviços dividem essa unidade em uma coleção de unidades independentes que contribuem para o todo. Os microsserviços são parte integral do DevOps, pois são a base para práticas de entrega contínua que permitem que equipes se adaptem com rapidez aos requisitos do usuário.

Ilustração de microsserviços

Um microsserviço é um serviço web responsável por parte da lógica de domínio. Vários microsserviços são combinados para criar um aplicativo, e cada um representa uma funcionalidade para o domínio. Os microsserviços interagem uns com os outros por meio de APIs, como REST ou gRPC, mas não têm conhecimento da atividade interna de outros serviços. Essa interação harmoniosa entre microsserviços é a arquitetura de microsserviços.

Com a arquitetura de microsserviços, desenvolvedores podem se organizar em equipes menores especializadas em serviços diferentes, com pilhas distintas e implementações dissociadas. Por exemplo, o Jira é formado por diversos microsserviços, e cada um representa uma funcionalidade específica, como pesquisa de itens, visualização de informações sobre o item, comentários, transições de item e muito mais.

Futuro dos microsserviços


What tools do people commonly use in microservices?

Businesses often use containerization tools such as Kubernetes and Docker. They also frequently use API gateways between microservices and their clients. These gateways perform API traffic functions such as authentication, access control, and load balancing.

How do microservices differ from monolithic architecture?

Monoliths are large codebases that function as one system. They require system downtime for updates and debugging. Microservices architectures are distributed applications with smaller, independent chunks of functionality. Developers can upgrade, improve, and debug these modules without taking the entire application offline. This simplifies scaling and aids development velocity.

How do microservices impact DevOps?

Those who understand DevOps know that continuous integration and continuous delivery (the DevOps CI/CD pipeline) are the mainstays of DevOps methodologies. The modular nature of microservices aligns perfectly with this approach. Microservices empower developers to swiftly create, test, and deploy small, frequent releases.

Join the Atlassian Community for more microservices articles and discussions.

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