#1 Líder Global em Resiliência de Dados
Orientações da Veeam para os clientes afetados pela atualização de conteúdo da CrowdStrike

O que são microsserviços?

Microsserviços são uma abordagem arquitetônica para o desenvolvimento de aplicações que divide um projeto em serviços menores e mais independentes que se comunicam entre si por meio de APIs. O uso de microsserviços pode acelerar o desenvolvimento das aplicações, reduzindo a complexidade de cada parte do projeto. Microsserviços individuais podem ser reutilizados em vários projetos.

Descubra como a Veeam Data Platform pode ajudar a proteger a segurança dos seus dados em seu ambiente de nuvem, híbrido ou local.

Arquitetura monolítica vs. de microsserviços

Historicamente, as aplicações online sempre usaram uma arquitetura monolítica. Com essa abordagem de desenvolvimento de software, todos os processos dentro de um projeto estão estreitamente integrados. Um projeto SaaS monolítico pode conter vários componentes, incluindo:

  • Servidor Web e balanceador de carga
  • Registro e gerenciamento de usuários
  • Sistemas de pagamento
  • Sistemas CRUD para criação e exibição de conteúdo
  • Endpoints de API para uso externo

O problema com arquiteturas monolíticas é que, se a aplicação Web enfrenta um aumento na demanda, todo o sistema deve escalar. Além disso, à medida que a base de código cresce, fazer alterações nela fica muito mais difícil. A longo prazo, isso pode criar dívida técnica. Se parte da sua base de código depende de bibliotecas antigas ou desatualizadas, ou se você gostaria de migrar para uma nova estrutura para determinados recursos, eventuais problemas com outras partes da base de código podem causar atrasos.

Com os microsserviços, cada componente é um serviço autônomo. O serviço ao usuário é independente do sistema de pagamento, que é independente do sistema de conteúdo, e assim por diante. Os serviços não compartilham nenhum código entre si. Em vez disso, eles se comunicam entre si por meio de APIs.

Como cada componente é independente, é possível que eles sejam desenvolvidos em linguagens totalmente diferentes, se desejado. Além disso, se um componente falhar, isso não necessariamente interromperá toda a aplicação. Outros aspectos da aplicação que não dependem desse componente ainda podem funcionar normalmente.

Arquitetura orientada a serviços (SOA) vs. Arquitetura de microsserviços

Uma arquitetura orientada a serviços é aquela em que as aplicações são divididas em módulos. Esses módulos têm funções claramente definidas e são menores do que as aplicações monolíticas, tornando a SOA semelhante à abordagem de microsserviços. A principal diferença entre as arquiteturas SOA e de microsserviços é o escopo da arquitetura.

Os módulos construídos para SOA são compartilhados e reutilizados em toda a corporação. Por outro lado, os microsserviços dependem de módulos projetados para funcionar de forma independente. Isso não quer dizer que os componentes escritos para uma arquitetura de microsserviços não possam ser reutilizados, mas a abordagem é diferente. Por exemplo, módulos criados para uma aplicação SOA podem compartilhar a mesma camada de storage e se comunicar usando o mesmo Enterprise Storage Bus (ESB). Em um ambiente de microsserviços, cada serviço teria uma API separada e poderia usar seu próprio armazenamento.

Benefícios dos microsserviços

Os microsserviços têm várias vantagens, especialmente quando uma aplicação é projetada do zero para usar esse modelo.

  • Facilidade de desenvolvimento: Como os microsserviços são pequenas aplicações autônomas, cada uma pode ser desenvolvida por uma equipe separada. Cada microsserviço tem uma finalidade claramente definida, facilitando a escrita de testes para eles. Solucionar problemas de microsserviços geralmente é mais fácil do que solucionar problemas de uma aplicação monolítica. Além disso, é possível reutilizar microsserviços existentes, acelerando ainda mais o desenvolvimento à medida que o projeto cresce.
  • Flexibilidade: Os desenvolvedores de aplicações monolíticas muitas vezes se encontram presos a certas tecnologias ou maneiras de fazer as coisas em função da dificuldade de fazer alterações na base de código existente. Com os microsserviços, é mais fácil fazer alterações, experimentar novas tecnologias e refatorar o código em tempo real, porque há menos risco de consequências não intencionais ao trabalhar com um serviço autônomo.
  • Escalabilidade: Escalar uma aplicação monolítica pode ser difícil. Não é econômico simplesmente superprovisionar hardware, e essa abordagem de dimensionamento não é viável para lidar com picos repentinos e inesperados de demanda. Os microsserviços oferecem mais opções para dimensionar suas aplicações e podem ajudar os desenvolvedores a adicionar capacidade quando necessário e, em seguida, desativar serviços extras quando a demanda diminuir.
  • Resiliência: Se uma aplicação monolítica falhar, toda a aplicação falhará. Com os microsserviços, os problemas ficam restritos à aplicação específica que falhou. Por exemplo, uma falha no servidor de login de um jogo pode impedir que novos usuários se autentiquem, mas qualquer pessoa já conectada à aplicação poderá continuar a usá-la normalmente. Um problema com a galeria de fotos pode estar restrito a esse pequeno serviço e não interferir com outras áreas de um site.
  • Melhor utilização dos recursos: Dividir uma aplicação em serviços pequenos e claramente definidos pode oferecer melhorias de eficiência em comparação ao uso de uma arquitetura monolítica. Em vez de executar um CMS grande e sedento por recursos para gerenciar o conteúdo de um site, uma empresa poderia usar um CMS de microsserviço desacoplado e um frontend leve e personalizado para exibir seu conteúdo.

Desafios dos microsserviços

O poder e a flexibilidade dos microsserviços os tornam uma escolha popular para aplicações grandes e complexas. No entanto, existem alguns desafios para implantá-los.

  • Complexidade: Embora cada componente de uma aplicação com arquitetura de microsserviços seja simples, a aplicação em si pode se tornar bastante complexa porque há muitos componentes diferentes para considerar. Dividir uma aplicação em vários componentes pode introduzir áreas extras onde as coisas podem dar errado. Isso também pode criar alguma sobrecarga de performance.
  • Consistência dos dados: Ao usar uma arquitetura de microsserviços, pode haver problemas com a consistência de dados e condições de corrida. Lidar com instâncias em que um microsserviço está lendo um banco de dados enquanto outro está tentando fazer o update pode ser desafiador.
  • Comunicação e descoberta de serviços: Garantir que todos os microsserviços sejam capazes de se comunicar efetivamente uns com os outros, e estejam cientes de quais serviços estão disponíveis e onde, pode ser um desafio. Isso é algo que deve ser abordado no início da fase de projeto.
  • Teste/depuração: De certa forma, testar microsserviços é mais fácil porque cada componente pode ser testado independentemente. No entanto, quando se trata de vincular componentes, testá-los e depurá-los pode ser um desafio. A saída inesperada que você está recebendo é devido a um erro no componente em que você está trabalhando no momento ou os dados que estão sendo alimentados a ele de um serviço diferente não são o que você esperava?
  • Monitoramento e gerenciamento de serviços: Um dos benefícios da arquitetura de microsserviços é a capacidade de criar e destruir instâncias de microsserviços sob demanda sem afetar outras áreas do programa. Gerenciar isso pode exigir ferramentas adicionais, como software para gerenciar a implantação de contêineres.

Tecnologias de microsserviços

Existem muitas ferramentas e tecnologias que são usadas para gerenciar arquiteturas de microsserviços. Aqui estão algumas tecnologias importantes que são vistas frequentemente em ambientes que usam microsserviços.

Conteinerização

Os contêineres são uma parte fundamental das arquiteturas de microsserviços. Eles permitem a implantação rápida de aplicações de microsserviços de forma previsível e eficiente. Existem várias variedades de ferramentas de conteinerização, desde os tradicionais LXC Linux Containers até o agora quase onipresente Docker. Os contêineres são versões prontas para execução de aplicações que contêm todas as bibliotecas e outras informações necessárias, permitindo a implantação com um clique em praticamente qualquer ambiente.

Contêineres

Embora seja possível gerenciar contêineres manualmente em uma implantação pequena, as organizações que executam várias implantações do docker em vários serviços de nuvem precisarão de uma maneira de automatizar esse processo. Soluções como o Kubernetes permitem automação em larga escala. Os desenvolvedores podem usar uma linguagem de serialização de dados legível por humanos chamada YAML para definir seus contêineres.

Gateway de API

Cada microsserviço se comunica com outros microsserviços por meio de APIs REST. Quando há um pequeno número de serviços conhecidos, fazer com que esses serviços se comuniquem diretamente é simples o suficiente. À medida que o ambiente se torna mais complexo, torna-se menos eficiente ter serviços se comunicando diretamente entre si. Os gateways e as ferramentas de gerenciamento de APIs facilitam para os desenvolvedores a integração de serviços pré-criados. O gateway recebe as solicitações e as repassa para os sistemas que ficam atrás delas. Se você precisar alterar alguma coisa sobre os serviços subjacentes, a única coisa que precisa ser atualizada é o gateway. Seus outros serviços podem continuar a passar solicitações para o gateway normalmente.

Registro de Serviço

Um registro de serviço é uma maneira eficaz de manter o controle dos microsserviços que estão disponíveis para enviar solicitações. Um registro de serviço é um banco de dados de serviços, suas instâncias e suas localizações. Em alguns modelos, um registro de serviço também pode ser responsável por invocar verificações de integridade usando a API de cada serviço para confirmar que eles estão atualmente aptos a lidar com solicitações. Alguns sistemas de gerenciamento de contêineres, como o Kubernetes, têm seus próprios registros de serviço integrados, facilitando a descoberta e o gerenciamento de serviços.

Disjuntores

Os disjuntores são usados para monitorar a integridade dos serviços em uma arquitetura de microsserviços. Quando um disjuntor está no lugar, os microsserviços podem se comunicar entre si normalmente, e o disjuntor mantém uma contagem de quaisquer erros. Se o número de erros detectados atingir um determinado limite dentro de um determinado período de tempo, o disjuntor será ativado. Se esse número não for atingido, o disjuntor definirá a contagem de volta a zero e continuará o monitoramento. Isso ajuda a garantir a operação confiável dos microsserviços, contabilizando quaisquer tempos limite aceitáveis ou outros erros.

Casos de uso e exemplos de microsserviços

A arquitetura de microsserviços é útil para qualquer ambiente em que uma aplicação voltada para a Web precisa ser capaz de evoluir e dimensionar ao longo do tempo. Os microsserviços são usados em tudo, desde jogos e comércio eletrônico até logística e finanças.

Comércio eletrônico

O provedor de soluções de comércio eletrônico Bigcommerce defende o uso de arquitetura de microsserviços e soluções de comércio eletrônico sem interface para alguns de seus clientes. Ele cita o aumento da agilidade e flexibilidade como alguns dos principais benefícios dessa arquitetura.

Área de saúde

Os microsserviços permitem que os provedores de serviços de saúde criem aplicações separadas, mas fracamente acopladas, que podem trabalhar juntos e ter acesso apenas aos dados de que precisam. O uso de uma arquitetura de microsserviços oferece várias vantagens em relação aos sistemas ESB tradicionais. Não há um ponto único de falha, portanto, problemas com um sistema não afetarão outros sistemas potencialmente mais críticos. Além disso, os testes e a segurança tornam-se mais gerenciáveis quando os sistemas são isolados. Maximizar a disponibilidade de sistemas e dados em um ambiente de saúde é crucial, e a abordagem moderna de microsserviços está se tornando cada vez mais popular, pois ajuda a atingir essas metas.

Bancário e Financeiro

Muitas organizações no setor bancário e financeiro dependem fortemente de sistemas legados que são difíceis de atualizar. Em vez de tentar modificar uma base de código legado monolítica, muitas organizações usam microsserviços que se conectam a essa base de código existente para fornecer funcionalidade extra. As instituições financeiras mais novas são capazes de começar do zero, projetando sistemas baseados em microsserviços e APIs individuais. As instituições mais antigas podem manter sua base de código monolítica enquanto ainda fazem melhorias na experiência do usuário e criam novos recursos que fazem interface com esse código. Em combinação com sistemas, como os sistemas de segurança e proteção de dados para serviços financeiros da Veeam , as empresas podem ter a confiança de que seus sistemas são robustos e os dados dos usuários estão protegidos.

Transporte e Logística

O setor de transporte e logística está liderando a adoção de muitas tecnologias, incluindo tecnologias de Internet das Coisas, que podem ser úteis para o rastreamento da cadeia de suprimentos. Um projeto proeminente, o NIMBLE, adotou uma abordagem de arquitetura de microsserviços à IoT federada, oferecendo monitoramento e otimização em tempo real confiáveis e escaláveis das cadeias de suprimentos.

Ao adotar uma abordagem baseada em microsserviços para o desenvolvimento, as organizações podem testar novos dispositivos e tecnologias rapidamente e sem interferir nos fluxos de trabalho existentes. Dada a natureza 24 horas das cadeias de suprimentos modernas, essa agilidade é um recurso incrivelmente útil.

Como começar com a Veeam

A Veeam facilita o gerenciamento de backups e a segurança dos dados, seja qual for o ambiente em que os seus dados estejam hospedados. Quer você use uma arquitetura local monolítica, use principalmente provedores SaaS de terceiros, como o Salesforce, para gerenciar as informações de seus clientes ou hospede aplicações na nuvem, a Veeam pode ajudar a proteger seus dados.

Oferecemos soluções de backup e recuperação para plataformas de nuvem AWS, Azure, Google e IBM e implantações do Kubernetes, além de soluções populares de virtualização. Nossas ferramentas são projetadas para encaixar em sua configuração existente da forma mais integrada possível.

Oferecemos edições comunitárias gratuitas de muitas de nossas ferramentas. Por exemplo, o Veeam Kasten é gratuito para até cinco nós. Isso dá aos usuários a chance de testar o sistema antes de decidir se devem implantá-lo em uma escala maior. Versões de avaliação por tempo limitado de nossos produtos corporativos também estão disponíveis.

Proteja sua organização contra violações e perda de dados com a Veeam Data Platform.