Microsserviços para a empresa: Projeto, desenvolvimento e implementação
fevereiro 28, 2022 / Unisys Corporation
Pouco tempo? Conheça os pontos principais:
- Ao projetar uma arquitetura de microsserviços, é importante:
- Decomponha a aplicação em capacidades de negócios.
- Construa os serviços com as ferramentas e técnicas apropriadas.
- Projetar a arquitetura para expor as partes necessárias dos serviços.
- Use os protocolos apropriados para comunicação.
- Descentralizar a arquitetura.
- Implemente os serviços com contratos orientados ao consumidor.
- As ferramentas e estruturas usadas para implementar microsserviços incluem REST, Consul, Oracle Helidon e Kubernetes.
- Os benefícios dos microsserviços incluem maior flexibilidade, escalabilidade e manutentibilidade.
- Os desafios dos microsserviços podem incluir maior complexidade e dificuldade em depuração e testes.
- Para implementar microsserviços com sucesso, é importante ter uma estratégia de negócios clara e protocolos de comunicação bem definidos.
- Também é importante ter as ferramentas e tecnologias certas e uma equipe de desenvolvimento qualificada e experiente.
Os microsserviços estão se tornando mais comuns, particularmente no desenvolvimento de aplicação nativa da nuvem.
Ele surgiu como um padrão arquitetônico popular porque permite que grandes aplicações sejam construídas como um conjunto de pequenos serviços independentes que se comunicam entre si através de uma rede. Essa abordagem facilita o projeto, desenvolvimento e implantação de sistemas de software complexos porque você pode atualizar e modificar serviços individuais sem afetar todo o sistema, tornando-o mais flexível e escalável do que os métodos tradicionais.
Os microsserviços podem ser implementados usando uma variedade de abordagens e tecnologias. Isso pode incluir designs baseados em domínio, entrega contínua, plataformas escaláveis, automação de infraestrutura e uso de diferentes linguagens de programação. Os microserviços refletem como os líderes de negócios querem organizar suas equipes e processos de desenvolvimento de aplicação.
Começando com a arquitetura de microsserviços
Ao projetar a arquitetura de microsserviços, não há um conjunto definitivo de princípios padrão. No entanto, há alguns temas e técnicas de design usados por várias organizações para começar com as etapas iniciais da construção de uma arquitetura de microsserviços eficiente.
Desmantelamento
Em primeiro lugar, identificar as capacidades de negócios da aplicação ajudará as equipes a construir serviços em conformidade. Uma vez identificadas as capacidades, as equipes podem decidir em qual serviço desejam trabalhar e começar a construir de acordo com os requisitos de seu negócio. Cada equipe pode se tornar um especialista no domínio em que está trabalhando e descobrir técnicas e estratégias que melhor se adequam à aplicação.
Construção
Depois de identificar as capacidades do negócio, as equipes podem restringir as ferramentas, técnicas, plataformas e abordagens necessárias para construir os serviços. Abordagens como Java com MySQL e Scala/Spark podem ser usadas de acordo com a experiência da equipe e os requisitos da aplicação.
Planejamento
Ao projetar a arquitetura de microserviços, é imperativo analisar as partes dos serviços que devem ser expostas e os protocolos que devem ser usados para se comunicar com os serviços fornecidos. Detalhes desnecessários e pesados levarão a confusão e perda de flexibilidade nos serviços.
Descentralização
A arquitetura pode ser descentralizada por equipes trabalhando em serviços específicos. Um modelo de fonte interna permitirá que os desenvolvedores façam as alterações necessárias no código e avancem sem depender do proprietário do serviço para retificar os erros. Um modelo de serviço detalhado simplificará o processo para os desenvolvedores, resultando em melhor desempenho e desenvolvimento.
Implantação
Um contrato detalhado orientado para o consumidor ajudará cada API do consumidor a capturar os requisitos da aplicação. Esses contratos são compartilhados com os prestadores de serviços para ajudá-los a atender às necessidades de cada cliente. É essencial aprovar acordos orientados ao consumidor antes de implantar os serviços para ajudar os fornecedores a compreender a interdependência dos serviços.
Algumas ferramentas e estruturas para implementar microsserviços
RESTANTE
A Transferência de Estado Representativo (REST) é uma ferramenta eficiente que permite que microsserviços se comuniquem diretamente via HTTP e é usada para construir APIs RESTful. As solicitações e respostas são tratadas usando formatos padrão como XML, HTML e JSON.
Consul
Uma tecnologia de descoberta de serviços, o Consul oferece suporte para APIs HTTP REST e DNS. Essa estrutura permite que os desenvolvedores gerem automaticamente a configuração em arquivos usando um modelo Consul. Ele também realiza verificações de integridade e exclui certos microserviços da descoberta de serviços quando as verificações de integridade falham.
Oracle Helidon
Helidon é uma estrutura de microserviços desenvolvida e lançada pela Oracle. É um repositório de bibliotecas Java que os desenvolvedores podem usar para construir a arquitetura de microsserviços. O Helidon vem em duas variantes, Helidon MP e Helidon SE. O primeiro é uma escolha viável para os desenvolvedores do Java, pois é uma implementação das especificações do MicroProfile. Este último atua como um kit de ferramentas que suporta recursos do Java SE e APIs fluentes.
Sapata de mola
Outra estrutura Java, Spring Boot, oferece componentes colaborativos e permite que sistemas de grande escala sejam construídos usando arquiteturas simples. O Spring Boot é fácil de integrar com outras estruturas devido à inversão do controle.
Vejamos algumas opções de implementação:
Para a implantação de microsserviços, os desenvolvedores podem escolher entre esses padrões comumente usados:
Instâncias multiserviço por host
Ao usar as múltiplas instâncias de serviço por padrão de host, os desenvolvedores podem posicionar um ou mais hosts físicos ou virtuais para executar múltiplas instâncias de serviço. Cada serviço funciona em uma porta bem conhecida em uma ou várias portas.
Há duas variantes deste padrão. Primeiro, cada instância de serviço é um processo ou um grupo de processos. Os desenvolvedores podem implantar uma instância de serviço Java como uma aplicação web em um servidor Apache Tomcat. A outra variante envolve a execução de múltiplas instâncias de serviço no mesmo processo ou grupo de processos, como a implementação de múltiplas aplicações web Java no mesmo servidor Apache Tomcat ou a execução de vários pacotes OSGi no mesmo contêiner.
O padrão tem muitos benefícios, como o uso eficiente de recursos. Essa eficiência deriva do processo ou grupo de processos executando múltiplas instâncias de serviço, como múltiplas aplicação web compartilhando o mesmo servidor Apache Tomcat e JVM.
Instância de serviço por padrão de host
Esse padrão permite que os desenvolvedores executem cada serviço isoladamente em seu host pessoal. Há duas especializações nessa abordagem:
- Instância de serviço por máquina virtual
- Instância de serviço por contêiner
Instância de serviço por padrão de máquina virtual
Essa abordagem envolve embalar cada serviço como uma imagem de máquina virtual (VM), como um Amazon EC2 AMI. Um bom exemplo é o Netflix, pois eles usaram essa abordagem para implementar seu serviço de streaming de vídeo empacotando cada serviço como um AMI EC2 usando o Aminator e implementando cada serviço como uma instância EC2.
Muitas ferramentas estão disponíveis para construir VMs, como Aminator, Jenkins e Packer.io. O Aminator empacota os serviços como um AMI EC2, enquanto o Packer.io automatiza a criação de imagens de VM e suporta tecnologias de virtualização como DigitalOcean, VirtualBox, VMware e EC2.
Ao usar a instância de serviço por padrão de máquina virtual, as equipes podem desfrutar dos benefícios da infraestrutura madura da nuvem e não se preocupar com o esgotamento de recursos e memória da CPU, pois os serviços funcionam isoladamente, tornando a implementação mais simples e confiável.
Instância de servidor por padrão de contêiner
Como o nome sugere, esse padrão envolve a implementação de instâncias de serviço em seus contêineres. Os contêineres têm um sistema de arquivos raiz dedicado e um espaço de nome de porta, que permitem às equipes limitar a memória e os recursos da CPU de um contêiner. Exemplos de tecnologias de contêineres incluem Solaris Zones e Docker. As equipes também podem usar o Kubernetes e a Marathon para gerenciar a colocação do contêiner alinhada com os recursos necessários e os recursos disponíveis em cada host.
Os benefícios dos contêineres são semelhantes aos VMs, pois ambas as abordagens envolvem o isolamento de serviços e permitem o monitoramento dos recursos consumidos por cada contêiner. OS contêineres são leves e mais fáceis de construir, pois não existem mecanismos pesados de inicialização do sistema operacional.
Implantação sem servidor
O AWS Lambda é um excelente exemplo de um padrão de implantação sem servidor. A tecnologia suporta serviços Node.js, Java e Python. As equipes podem empacotar os microsserviços em um arquivo ZIP e carregá-lo no AWS Lambda para executar automaticamente instâncias e lidar com solicitações.
Há quatro maneiras de implementar a função AWS Lambda:
- Invocar a função diretamente usando uma solicitação de serviço da web
- Implementação automática em resposta a eventos gerados pelos serviços da AWS, incluindo DynamoDB, Kinesis, S3 ou Simple Email Service
- Usando o AWS API Gateway para gerenciar solicitações HTTP de clientes da aplicação
- Seguindo um cronograma periodicamente
O AWS Lambda é uma das maneiras mais convenientes de implantar microsserviços. Ele oferece o benefício de preços baseados em solicitação que permite que as organizações paguem pelo mundo que os serviços executam, permitindo que as equipes se concentrem mais no desenvolvimento da aplicação em vez de se preocupar com a infraestrutura de TI.
Conclusões
O sucesso é uma meta em movimento e, quando se trata de escalar a tecnologia, não há bala de prata. Os microserviços são uma abordagem relativamente nova, mas mostram resultados incomparáveis quando executados corretamente. Os microserviços ajudam a dividir aplicações mais significativas em partes menores que são mais fáceis de gerenciar. O processo também permite que a cultura de uma organização seja mais aberta e adaptável a mudanças e melhorias.
Atores globais, incluindo Coca-Cola, Netflix, Amazon e Etsy, resolveram seus problemas mais complicados relacionados à escala e expansão usando a arquitetura de microsserviços. Essa mudança permitiu que essas organizações e outras ganhassem flexibilidade, durabilidade e maior engajamento dentro das equipes.
Com microsserviços, organizações mais jovens podem aproveitar o poder do software legado e das tecnologias modernas e simplificar a curva de aprendizagem para equipes e a próxima geração de desenvolvedores, orientando-as para a transformação digital.