Implante Microsserviços com um Banco de Dados Convergido e Helidon
Arquitetura
Esta arquitetura mostra os recursos e a topologia necessários para usar microsserviços com o Cloud Infrastructure, um Oracle Database convergido e o Helidon.
Um Oracle Database convergido é um banco de dados otimizado que tem suporte nativo para tipos de dados modernos, componentes-chave de data center e os paradigmas de desenvolvimento mais recentes. Por exemplo, um banco de dados convergido suporta dados Espaciais para reconhecimento de localidades, JSON para lojas de documentos, IoT para integração de dispositivos, tecnologias na memória para análise em tempo real e dados relacionais tradicionais. Fornecendo suporte para todos esses tipos de dados, um banco de dados convergido pode executar todos os tipos de cargas de trabalho de IoT para Blockchain para Analytics e Machine Learning. Também pode lidar com qualquer paradigma de desenvolvimento, incluindo microsserviços.
A arquitetura de microsserviços tem três camadas principais - a camada de mensagens, a camada de aplicativos e a camada de banco de dados - para trazer agilidade, escala horizontal e robustez para os aplicativos empresariais. Essa arquitetura de referência reúne componentes baseados em padrões disponíveis na nuvem do Oracle Gen 2 para criar microsserviços robustos usando o Oracle Database como camada de persistência.
A camada de Mensagens é uma mensagem transacional do Java Message Service (JMS) incorporada ao banco de dados, ao Transactional Event Queues (TEQ) ou ao mecanismo de transporte baseado em Kafka, como o serviço de Streaming do Oracle Cloud Infrastructure.
- Monitoramento e alerta de eventos: Grafana e Prometheus
- Observabilidade e Acompanhamento: Kiali e Jaeger
- Aplicativos Tradicionais: Java Enterprise Edition e Oracle Weblogic
- Microsserviços Java: Java, helidon.io e Oracle GraalVM Enterprise
- Microsserviços poliglotas: node.js e python
- Malha de Serviços com o Oracle Container Engine for Kubernetes: Istio, Kubernetes e Docker
A camada do banco de dados consiste em duas instâncias do Autonomous Transaction Processing (ATP-1 e ATP-2). A arquitetura usa dados relacionais, dados espaciais, dados de documento, texto e JSON no banco de dados convergido e mensagens transacionais incorporadas no banco de dados para microsserviços a fim de simplificar fluxos de trabalho.
O diagrama a seguir é um exemplo de arquitetura de microsserviços para um aplicativo de entrega de alimentos móvel on-line.

Descrição da ilustração helidon_microservices_db_architecture.png
A arquitetura tem os seguintes componentes:
- Balanceador de carga
O serviço Oracle Cloud Infrastructure Load Balancing fornece distribuição automatizada de tráfego de um único ponto de entrada para vários servidores no back-end.
- Container Engine for Kubernetes
O Oracle Cloud Infrastructure Container Engine for Kubernetes é um serviço totalmente gerenciado, escalável e altamente disponível que você pode usar para implantar seus aplicativos de contêineres na nuvem. Você especifica os recursos de computação necessários para os seus aplicativos, e o Container Engine for Kubernetes os provisiona no Oracle Cloud Infrastructure em uma tenancy existente. O Serviço Container Engine for Kubernetes usa o Kubernetes para automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos de contêineres entre clusters de hosts.
- Conector de serviço para o Kubernetes
Conecte o banco de dados do Oracle Autonomous Transaction Processing ao Oracle Container Engine for Kubernetes com o OCI Service Broker para Kubernetes.
O OCI Service Broker for Kubernetes é uma implementação do Open Service Broker API. O OCI Service Broker for Kubernetes serve especificamente para interagir com serviços do Oracle Cloud Infrastructure de clusters do Kubernetes. Ele inclui três adaptadores de service broker para vincular aos seguintes serviços do Oracle Cloud Infrastructure: Object Storage, Autonomous Transaction Processing, Autonomous Data Warehouse e Oracle Streaming Service.
É possível adicionar o OCI Service Broker para Kubernetes a clusters que você criou com o Oracle Cloud Infrastructure Container Engine for Kubernetes para interagir com os serviços do Oracle Cloud Infrastructure listados acima. Quando você adiciona o OCI Service Broker para Kubernetes a um cluster, não é necessário provisionar e cancelar manualmente o provisionamento dos serviços do Oracle Cloud Infrastructure sempre que implantar um aplicativo no cluster. Em vez disso, interaja com os serviços do Oracle Cloud Infrastructure usandokubectl
para chamar as APIs do Open Service Broker implementadas pelo OCI Service Broker for Kubernetes. - Registro
O Oracle Cloud Infrastructure Registry é um registro gerenciado pela Oracle que permite simplificar seu workflow de desenvolvimento para produção. O registro facilita o armazenamento, o compartilhamento e o gerenciamento de artefatos de desenvolvimento, como imagens do Docker. A arquitetura altamente disponível e escalável do Oracle Cloud Infrastructure garante que você possa implantar e gerenciar seus aplicativos de forma confiável.
- Armazenamento de objetos
O armazenamento de objetos fornece acesso rápido a grandes quantidades de dados estruturados e não estruturados de qualquer tipo de conteúdo, incluindo backups de bancos de dados, dados analíticos e conteúdo avançado, como imagens e vídeos. Use o armazenamento padrão para armazenamento "dinâmico" necessário para acessar rapidamente, imediatamente e com frequência. Use o armazenamento de arquivos compactados para o armazenamento "frio" que você mantém por longos períodos de tempo e raramente ou raramente acessa.
- Microsserviços
Use o Istio Service Mesh para conectar os microsserviços com um proxy a fim de fornecer informações de rastreamento visualizadas no Kiali.
Use Jaeger para rastrear e Kiali para observabilidade da malha de Istio.
- Helidon
Use anotações Helidon MicroProfile para monitorar a integridade e a atividade dos microsserviços.
- Autonomous Transaction Processing
O Oracle Autonomous Transaction Processing é um serviço de banco de dados autônomo, seguro e autorreparável, otimizado para cargas de trabalho de processamento de transações. Não é necessário configurar ou gerenciar nenhum hardware ou instalar qualquer software. O Oracle Cloud Infrastructure trata da criação do banco de dados, bem como do backup, aplicação de patches, upgrade e ajuste do banco de dados.
O diagrama a seguir é um exemplo do fluxo de trabalho de uma arquitetura de microsserviços para um aplicativo de entrega de alimentos móvel on-line.

Descrição da ilustração microservices_converged_db.png
As seguintes etapas aparecem nessa arquitetura:
- O cliente pesquisa revisões on-line e coloca um pedido. O microsserviço Order Service tem um recurso Search Reviews. As solicitações e os pedidos de Revisão de Pesquisa são enviados por meio de um balanceador de carga para o microsserviço Order Service. O Order Service se comunica com o banco de dados.
- A pesquisa de texto e dados JSON e a análise de sentimento são enviadas ao recurso Revisões de Pesquisa.
- Os microsserviços Order Service e Check Inventory Service se comunicam entre si usando mensagens transacionais.
- O Order Service envia uma ordem de local para a solicitação de entrega ao microsserviço Delivery Service.
- O cálculo espacial para entregas únicas ou múltiplas é enviado do banco de dados para o recurso Mapeamento de Rota do Serviço de Entrega.
- As análises operacionais com pouca codificação são enviadas do banco de dados para o Painel de Análise.
Recomendações
Os requisitos podem diferir da arquitetura descrita aqui. Use as seguintes recomendações como ponto de partida:
- Simplicidade
A arquitetura amplifica a necessidade de simplicidade no design da camada de persistência para microsserviços com um banco de dados convergido pela Oracle. Os modelos de segurança de banco de dados são um bom ponto de partida para obter segurança de autenticação e autorização. Além disso, o uso de backup e alta disponibilidade do banco de dados simplifica o desenvolvimento de microsserviços.
Uma boa compreensão do aplicativo direciona o acesso aos dados de cada microsserviço com o projeto em contextos limitados e o acoplamento solto dentro da infinidade desses serviços. Comece com isolamento em nível de esquema.
O dimensionamento correto do microsserviço é importante para tornar as dependências de dados mais gerenciáveis.
As mensagens transacionais baseadas em eventos criadas dentro do banco de dados Convergido permitem um acoplamento solto entre microsserviços, preservando exatamente uma vez as mensagens, fornecendo uma implementação eficiente de transações eventualmente consistentes entre microsserviços (chamadas de sagas).
- Capacidade de observação e gerenciamento
Observabilidade e gerenciabilidade com anotações Helidon e o uso de ferramentas de rastreamento permitem a automação na operação de um aplicativo baseado em microsserviços em escala. Esta é uma área para projetar bem, tanto na camada de aplicativos quanto na camada de banco de dados, especialmente à medida que a carga nos microsserviços aumenta e os ajustes são necessários para desempenho e disponibilidade em escala.
- Extensibilidade
A contêinerização de microsserviços gerenciados pelo Oracle Cloud Infrastructure Container Engine for Kubernetes permite a extensibilidade da camada de aplicativos. Embora nem sempre seja recomendável que cada microsserviço tenha seu próprio banco de dados, é certamente possível com a arquitetura do banco de dados convergido. Geralmente, o isolamento em nível de esquema entre microsserviços fornece um bom isolamento de dependências de dados desnecessárias.
- Segurança
Um banco de dados convergido fornece um alto nível de segurança que um aplicativo pode usar para fornecer funções no nível do usuário, autenticação, autorização e criptografia de dados. O acesso seguro dos microsserviços também é fornecido pelo Helidon em conjunto com a segurança na camada de persistência.
- Escala
Essa arquitetura adiciona instâncias de microsserviços usando o Oracle Container Engine for Kubernetes para gerenciá-las e um balanceador de carga para permitir o uso de várias instâncias para cada serviço com perfeição. A disponibilidade e a escala são tratadas com esse paradigma para microsserviços. O banco de dados fornece dimensionamento autônomo simples para um determinado nível (2 a 48 OCPUs (Oracle Compute Units) por sistema de banco de dados), que pode funcionar para a maioria dos aplicativos.
Considerações
Considere os pontos a seguir ao implantar essa arquitetura de referência.
- Desempenho
Dimensione o desempenho do aplicativo horizontalmente adicionando instâncias adicionais para o microsserviço e gerencie com o Kubernetes.
Dimensione o desempenho do banco de dados observando a carga do banco de dados na console de desempenho do Oracle Autonomous Transaction Processing e aumentando o número de OCPUs (até 48 no ATP-Compartilhadas).
- Segurança
A segurança dos microsserviços segue a segurança fornecida pelos Microsserviços Helidon e o modelo de segurança do Oracle Database - autenticação, autorização, controle de acesso dos recursos. A Oracle recomenda que os aplicativos usem os mecanismos de aplicação de segurança do banco de dados o mais possível.
- Disponibilidade
A alta disponibilidade tem duas partes, a camada de aplicativos e a camada de dados.
A disponibilidade dos aplicativos é obtida tendo contêineres sem monitoramento de estado, sendo reparados pelo Kubernetes e recuperando qualquer estado dos metadados da camada intermediária ou do banco de dados.
Espera física para PDBs entre domínios de disponibilidade do Oracle Cloud ou entre regiões é recomendada para arquiteturas de alta disponibilidade. Verifique os parâmetros de alta disponibilidade do Oracle Database para obter outras recomendações.
- Custo
A economia de nuvem se aplica a essa arquitetura de referência de microsserviços. Todos os componentes estão disponíveis no Oracle Cloud Infrastructure como um serviço gerenciado e você paga pelo que usa, em vez de pagar pelo hardware de provisionamento.
Implantar
O código do Terraform para esta arquitetura de referência está disponível no GitHub. Você pode fazer download do código do GitHub para seu computador, personalizar o código e implantar a arquitetura usando a CLI do Terraform.
- Implante usando o código do Terraform no GitHub:
- Vá para GitHub.
- Clone ou faça download do repositório no computador local.
- Siga as instruções no documento
README
.
- Implante usando o Oracle LiveLabs Criando Microsserviços com o Oracle Converged Database Workshop.
Mais Informações
Para obter mais informações, consulte os recursos a seguir:
- Criação de microsserviços com o Workshop de Banco de Dados Convergido da Oracle
- Whitepaper de Introdução dos Microsserviços
- Helidon Microservices
- Jaeger Tracing
- Istio Service Mesh e Service Management
- Kiali Service Mesh Management for Istio
- Guia do Usuário de Enfileiramento Avançado e Filas de Eventos Transacionais
- Visão Geral do Oracle Database High Availability
- Oracle Database Security Guide
Alterar Log
Este log lista apenas as alterações significativas:
Junho de 14, 2021 |
|