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.
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.
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.
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:
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.
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.
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.
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.
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.
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.