Observação:

Processar Arquivos no Oracle Cloud Infrastructure Object Storage com um Fluxo Nativo da Nuvem Escalável

Introdução

Em nossos aplicativos, muitas vezes precisamos processar grandes quantidades de arquivos. No passado, isso foi feito em lote, mas com as novas tecnologias e o advento da nuvem, agora somos capazes de transformar muitos processos seriais em paralelos. O uso de filas de mensagens, clusters Kubernetes e arquiteturas orientadas a eventos são algumas das tecnologias e arquiteturas amplamente usadas para obter o melhor do processamento de grande volume.

A Oracle Cloud Infrastructure (OCI) tem recursos para permitir escalabilidade e redução de custos. Vamos explorar os serviços nativos da nuvem.

Neste tutorial, veremos uma maneira muito comum de processar grandes quantidades de arquivos, em que as aplicações podem depositar seus arquivos em um bucket no OCI Object Storage e quando esses arquivos são depositados, um evento é gerado permitindo que uma função seja acionada para gravar o URL desse arquivo no OCI Streaming.

Observação: Podemos imaginar essa solução apenas com algum aplicativo de origem salvando o conteúdo dos arquivos no OCI Streaming enquanto nosso aplicativo apenas lê esse conteúdo, mas não é uma boa prática transferir grandes volumes de dados em uma fila do Kakfa. Para fazer isso, nossa abordagem usará um padrão chamado Claim-Check, que fará exatamente como nossa proposta. Em vez de enviar o arquivo pela fila de mensagens, enviaremos a referência a esse arquivo. Vamos delegar a leitura do arquivo para o aplicativo que será responsável pelo processamento.

Este tutorial apresentará estes componentes: OCI Object Storage, Events Service, Functions e Streaming.

No final desta cadeia, teremos o aplicativo consumindo a fila de streaming, no entanto, não discutiremos como o arquivo será processado.

img.png

Objetivos

Pré-requisitos

Tarefa 1: Criar a Instância do OCI Streaming

O OCI Streaming é um serviço de streaming gerenciado do tipo Kafka. Podemos desenvolver aplicativos usando as APIs Kafka e SDKs comuns no mercado. Nesta tarefa, criaremos uma instância do OCI Streaming e a configuraremos para execução em ambos os aplicativos para publicar e consumir um alto volume de dados.

  1. Faça log-in na Console do OCI, clique em Análise e IA e Streams.

  2. Selecione Compartimento e clique em Criar Stream.

    criar-stream.png

  3. Informe o Nome do Stream da instância do stream e mantenha os outros parâmetros com os valores padrão. Clique em Criar para inicializar a instância e aguardar o status Ativo.

    salvar-criar-stream.png

    Observação:

    • No processo de criação de streaming, podemos selecionar Criar automaticamente um pool de streams padrão para que o pool padrão seja criado automaticamente.

    • Você pode criar sua instância de stream em uma sub-rede privada. Nesse caso, a atenção para a função na Tarefa 4 deve estar na mesma sub-rede privada ou em uma sub-rede que tenha acesso à instância de fluxo de sub-rede privada. Verifique sua VCN, sub-redes, listas de segurança, gateway de serviço ou outros componentes de segurança. Certifique-se de que sua função possa acessar a instância do OCI Streaming.

  4. Clique no link DefaultPool.

    pool-padrão-option.png

  5. Clique em Definições de Conexão do Kafka e exiba as definições de conexão. Anote as informações conforme necessário nas próximas tarefas.

    stream-conn-settings.png

    kafka-conn.png

Tarefa 2: Criar um Bucket do OCI Object Storage

Precisamos criar um bucket. Os buckets são contêineres lógicos para armazenar objetos; portanto, todos os arquivos usados para esta demonstração serão armazenados neste bucket.

  1. Abra a Console do OCI e navegue até Storage, Buckets. Na seção Buckets, selecione Compartimento. O compartimento será o mesmo da instância do OCI Streaming criada na Tarefa 1.

    selecione-compartment.png

  2. Clique em Criar Bucket e informe um Nome do Bucket. Mantenha os outros parâmetros com os valores padrão e clique em Create.

    criar-bucket.png

    Podemos ver o bloco criado.

    buckets-dataflow.png

    Observação: Verifique as Políticas do OCI IAM para o bucket. Você precisa configurar as políticas se quiser usar esses buckets em seus aplicativos de demonstração. Para obter mais informações, consulte Visão Geral do Serviço Object Storage e Políticas do OCI IAM.

Tarefa 3: Ativar o Bucket do OCI Object Storage para Serviços do OCI Events

Precisamos ativar o bucket para emitir eventos. Portanto, clique nos detalhes do bucket e procure o link Emitir Edição de Eventos de Objeto e ative-o.

img_8.png

Tarefa 4: Criar Funções do OCI

Para executar a seguinte tarefa, faça download do código aqui: OCI_Streaming_Claim_Check.zip.

Tarefa 5: Configurar o OCI Events

Vamos configurar uma Regra de Evento para acionar sua função para obter as informações do bucket e enviá-las ao OCI Streaming.

  1. Selecione o mesmo compartimento para a regra e clique em Criar Regra.

    img_10.png

  2. Digite as seguintes informações.

    1. Na seção Condição das Regras.

      • Condição: Event Type.
      • Nome do Serviço: Object Storage.
      • Tipo de Evento: Object-Create, Object-Delete, Object-Update.
    2. Na seção Ação.

      • Tipo de Ação: Functions.
      • Compartimento da Função: <your function compartment name>.
      • Aplicativo de Função: <your function app, in this example ocistreaming-app>.
      • Função: fn_stream.

    img_9.png

Tarefa 6: Testar seu Circuito de Eventos

Observação: Para redes privadas, o código de teste precisa ser executado em um bastion conectado à mesma sub-rede privada do OCI Streaming.

No pacote de código-fonte OCI_Streaming_Claim_Check.zip, podemos encontrar uma pasta chamada monitoring e um arquivo chamado consume.py. Podemos usar esse código para monitorar e testar se a solução funciona corretamente.

Precisamos configurar o código.

img_11.png

Depois de configurar seus parâmetros de fluxo, você pode executar o código e verificar o circuito, que é bucket, evento, função e streaming.

img_12.png

Confirmações

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.