Integre as Funções do OCI e os serviços de Evento do OCI para publicar mensagens em fluxos privados do OSS
A arquitetura nativa da nuvem orientada a eventos utiliza recursos e eventos na nuvem como o principal mecanismo de comunicação entre serviços. Ele permite sistemas escaláveis, resilientes e ágeis, separando componentes e permitindo reações em tempo real aos eventos. Ele utiliza streaming de evento e computação sem servidor para comunicação e processamento distribuídos orientados a eventos.
O Oracle Cloud Infrastructure Events é uma ferramenta poderosa para criar automação com base em alterações de estado em vários recursos da nuvem. Ele nos permite criar regras que entregam eventos a recursos específicos do OCI, como Oracle Cloud Infrastructure Streaming, Funções do OCI e Oracle Cloud Infrastructure Notifications.
Em determinados cenários, é necessário publicar mensagens em fluxos privados. Embora os Eventos do OCI possam entregar eventos diretamente a pontos finais de streaming públicos, no momento eles não suportam a entrega de mensagens diretamente a pontos finais de streaming privados, pois os pontos finais privados só podem ser resolvidos dentro da mesma VCN e os Eventos do OCI não têm acesso para enviar mensagens a um fluxo privado. No entanto, isso pode ser feito usando Funções do OCI como um tipo de ação em sua regra de eventos.
Essa arquitetura de referência fornece uma visão geral abrangente de como aproveitar as Funções do OCI com Eventos do OCI para entregar mensagens a pontos finais de streaming privados.
Arquitetura
Essa arquitetura de referência demonstra como utilizar as Funções do OCI e os Eventos do OCI para publicar mensagens em um ponto final de streaming do OSS privado sempre que um arquivo for criado ou atualizado no Oracle Cloud Infrastructure Object Storage.
O diagrama de arquitetura ilustra o fluxo de dados, que começa com o upload de um arquivo para um bucket específico no OCI Object Storage. Os Eventos OCI são acionados com base nas condições de regra de evento definidas. O evento emitido, em seguida, chama uma função que extrai dados dos arquivos submetidos a upload e publica os dados e as mensagens de evento em um ponto final de streaming privado configurado no serviço OCI Functions. É importante observar que o serviço e a função de streaming devem ser criados na mesma rede virtual na nuvem (VCN) e na mesma sub-rede privada para garantir que a função do OCI possa acessar o ponto final da mensagem de streaming privado.
O diagrama a seguir ilustra essa arquitetura de referência.
oci-funções-eventos-integração-diagrama-oracle.zip
Antes de começar
- Configure seu aplicativo OCI Functions e o serviço OCI Streaming (pool e fluxo de fluxos).
- Reúna as seguintes informações. Esses valores são obrigatórios para configurar as variáveis de ambiente para Funções do OCI.
- ID do Usuário
O OCID do usuário com o qual fazer a autenticação.
- ID da Tenancy
OCID da Tenancy. Pode ser encontrado no perfil do usuário.
- Impressão Digital
Será usado para autenticação na API do OCI.
- Região
Identificador da região na qual as solicitações serão criadas.
- Chave privada da API
Local do arquivo de chave privada da API.
- OCID do Stream
OCID do Fluxo do OSS.
- Token de Autenticação
Token de Autenticação das definições do Usuário.
- Ponto final do fluxo
Ponto final do Fluxo do OSS (Obtido no "Ponto Final de Mensagens" da tela de informações do Fluxo).
- ID do Usuário
A arquitetura tem os seguintes componentes:
- Locação
Uma tenancy é uma partição segura e isolada que a Oracle configura no Oracle Cloud quando você acessa o Oracle Cloud Infrastructure. Você pode criar, organizar e administrar seus recursos no Oracle Cloud em sua tenancy. Uma tenancy é sinônimo de empresa ou organização. Geralmente, uma empresa terá uma única tenancy e refletirá sua estrutura organizacional dentro dessa tenancy. Em geral, uma única tenancy é associada a uma única assinatura e, em geral, uma única assinatura só tem uma tenancy.
- Região
Uma região do Oracle Cloud Infrastructure é uma área geográfica localizada que contém um ou mais data centers, denominada domínios de disponibilidade. As regiões são independentes de outras regiões, e grandes distâncias podem separá-las (entre países ou até mesmo continentes).
- Compartimento
Os compartimentos são partições lógicas entre regiões em uma tenancy do Oracle Cloud Infrastructure. Use compartimentos para organizar seus recursos no Oracle Cloud, controlar o acesso aos recursos e definir cotas de uso. Para controlar o acesso aos recursos em um determinado compartimento, você define políticas que especificam quem pode acessar os recursos e quais ações eles podem executar.
- Domínios de disponibilidade
Domínios de disponibilidade são data centers stand-alone e independentes dentro de uma região. Os recursos físicos de cada domínio de disponibilidade são isolados dos recursos de outros domínios de disponibilidade, o que oferece tolerância a falhas. Os domínios de disponibilidade não compartilham infraestrutura como energia ou refrigeração ou a rede interna do domínio de disponibilidade. Portanto, provavelmente uma falha em um domínio de disponibilidade não afetará os outros domínios de disponibilidade da região.
- Domínio de falha
Um domínio de falha é um agrupamento de hardware e infraestrutura dentro de um domínio de disponibilidade. Cada domínio de disponibilidade tem três domínios de falha com potência e hardware independentes. Quando você distribui recursos entre diversos domínios de falha, seus aplicativos podem tolerar falhas físicas no servidor, na manutenção do sistema e na alimentação dentro de um domínio de falha.
- Rede virtual na nuvem (VCN) e sub-redes
Uma VCN é uma rede personalizável e definida por software que você configura em uma região do Oracle Cloud Infrastructure. Como as redes tradicionais de data center, as VCNs oferecem total controle sobre seu ambiente de rede. Uma VCN pode ter vários blocos CIDR não sobrepostos que você pode alterar após a criação da VCN. Você pode segmentar uma VCN em sub-redes, com escopo definido para uma região ou para um domínio de disponibilidade. Cada sub-rede consiste em um intervalo contíguo de endereços que não se sobrepõem a outras sub-redes da VCN. Você pode alterar o tamanho de uma sub-rede após a criação. Uma sub-rede pode ser pública ou privada.
- Lista de segurança
Para cada sub-rede, você pode criar regras de segurança que especifiquem a origem, o destino e o tipo de tráfego que deve ser permitido dentro e fora da sub-rede.
- Gateway de serviço
O gateway de serviço fornece acesso de uma VCN a outros serviços, como o Oracle Cloud Infrastructure Object Storage. O tráfego da VCN para o serviço Oracle passa pela malha da rede Oracle e nunca atravessa a internet.
- Object Storage
O armazenamento de objetos oferece 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. Você pode armazenar de forma segura e depois recuperar dados diretamente da internet ou de dentro da plataforma da nuvem. Você pode dimensionar o armazenamento de forma integrada sem prejudicar o desempenho ou a confiabilidade do serviço. Use o armazenamento padrão para armazenamento de acesso frequente que você precisa acessar de forma rápida, imediata e com frequência. Use o armazenamento de arquivos compactados para armazenamento "frio" que você mantém por longos períodos de tempo e raramente acessa.
- Eventos
Os serviços do Oracle Cloud Infrastructure emitem eventos, que são mensagens estruturadas que descrevem as alterações em recursos. Os eventos são emitidos para operações de criação, leitura, atualização ou exclusão (CRUD), alterações no estado do ciclo de vida do recurso e eventos do sistema que afetam os recursos da nuvem.
- Streaming
O Oracle Cloud Infrastructure Streaming oferece uma solução de armazenamento totalmente gerenciada, escalável e durável para a ingestão de streams contínuos de alto volume de dados que você pode consumir e processar em tempo real. Você pode usar o Streaming para ingerir dados de alto volume, como logs de aplicativo, telemetria operacional, sequência de cliques na web ou para outros casos de uso em que os dados são produzidos e processados de modo contínuo e sequencial em um modelo de mensagens do padrão publicar-assinar.
- Funções
O Oracle Cloud Infrastructure Functions é uma plataforma totalmente gerenciada, multitenant, altamente escalável, sob demanda, do Functions-as-a-Service (FaaS). É alimentado pelo mecanismo de código aberto do Fn Project. As funções permitem que você implante seu código e o chame diretamente ou o acione em resposta a eventos. O Oracle Functions usa contêineres Docker hospedados no Oracle Cloud Infrastructure Registry.
- LogO registro em log é um serviço altamente escalável e totalmente gerenciado que oferece acesso aos seguintes tipos de logs de seus recursos na nuvem:
- Logs de Auditoria: Logs relacionados a eventos emitidos pelo serviço Audit.
- Logs de serviço: Logs emitidos por serviços individuais, como API Gateway, Events, Functions, Load Balancing, Object Storage e logs de fluxo da VCN.
- Logs personalizados: Logs que contêm informações de diagnóstico de aplicativos personalizados, outros provedores de nuvem ou um ambiente on-premises.
Recomendações
- VCN
Quando você cria uma VCN, determina o número de blocos CIDR necessários e o tamanho de cada bloco com base no número de recursos que planeja anexar às sub-redes na VCN. Use blocos CIDR que estão dentro do espaço de endereço IP privado padrão.
Selecione blocos CIDR que não se sobrepõem a nenhuma outra rede (no Oracle Cloud Infrastructure, no seu data center local ou em outro provedor de nuvem) para a qual você pretende configurar conexões privadas.
Depois de criar uma VCN, você poderá alterar, adicionar e remover seus blocos CIDR.
Ao projetar as sub-redes, considere seu fluxo de tráfego e os requisitos de segurança. Anexe todos os recursos dentro de uma camada ou atribuição específica à mesma sub-rede, que pode servir como limite de segurança.
- Cloud Guard
Clone e personalize as receitas padrão fornecidas pela Oracle para criar receitas personalizadas do detector e do respondedor. Essas receitas permitem especificar que tipo de violações de segurança geram uma advertência e quais ações podem ser executadas nelas. Por exemplo, talvez você queira detectar buckets do Object Storage que tenham visibilidade definida como pública.
Aplique o Cloud Guard no nível da tenancy para abranger o escopo mais amplo e reduzir a carga administrativa de manter várias configurações.
Você também pode usar o recurso Lista Gerenciada para aplicar determinadas configurações a detectores.
- Funções do OCI
A função OCI nesta arquitetura foi desenvolvida usando Python. Observe que o serviço OCI Functions suporta várias linguagens de programação e você pode usar o idioma de sua escolha para desenvolver as funções e implantá-las.
- OCI Streaming
O pool de Fluxos é criado usando uma sub-rede privada em uma VCN. E o fluxo é criado usando esse pool de streams. Certifique-se de criar a função na mesma VCN que o fluxo do OSS privado e ter todo o acesso necessário.
O Streaming também aproveita o ecossistema Kafka Connect para estabelecer interface diretamente com produtos da primeira e de terceiros, usando conectores de origem e pia Kafka prontos para uso. Consulte Explorar Mais para obter mais informações sobre como usar o Kafka Connect.
- Armazenamento de Objetos do OCI
Essa arquitetura usa o Armazenamento de Objetos Padrão para fazer upload de um arquivo. Certifique-se de ativar "Emitir eventos de Objeto" para que mesmo o serviço possa ser acionado. Também é recomendável usar buckets privados para dados confidenciais.
- Eventos do OCI
Nesta arquitetura, os Eventos do OCI são configurados para ouvir alterações no OCI Object Storage para eventos de "Criação de Objeto" e "Atualização de Objeto". O serviço é chamado após o upload do objeto para o OCI Object Storage e chama a função para processamento.
Considerações
Ao implementar essa arquitetura de referência, é importante levar em conta os seguintes aspectos.
- Desempenho
Eventos OCI, Funções OCI e OCI Streaming são altamente escaláveis. Considere ajustar o número de partições e fluxos, com base no tamanho e no número de arquivos esperados.
- Segurança
Use políticas para restringir quem pode acessar os recursos do OCI.
Para o serviço OCI Object Storage, a criptografia é ativada por padrão e não pode ser desativada.
Todo o acesso a funções implantadas no OCI Functions é controlado por meio do Oracle Cloud Infrastructure Identity and Access Management (IAM), que permite que privilégios de gerenciamento de funções e de chamada de funções sejam designados a usuários e grupos de usuários específicos.
É recomendável armazenar segredos e dados confidenciais no OCI Vault. Considere o uso do OCI Vault para armazenar chaves de API e token de autenticação usados para autorização com serviços do OCI.
- Disponibilidade
A Oracle garante alta disponibilidade das Funções do OCI, Eventos do OCI, OCI Streaming e OCI Logging, que são nativos da nuvem e totalmente gerenciados. O OCI Streaming inclui os seguintes recursos de alta disponibilidade:
- Fluxo constante de dados de log
- Serviço multithread e escalável horizontalmente
- Ingestão quase em tempo real
- Resiliência contra interrupções de curto prazo
- Otimizado para uso eficiente de dados
- Custo
Você paga somente pelos recursos usados enquanto uma função está em execução.
Implantar
O repositório GitHub contém o código Funções do OCI que implementa essa arquitetura de referência.
- Vá para GitHub.
- Clone ou faça download do repositório para seu computador local.
- Siga as instruções no documento
README
.