Otimize fluxos de trabalho assíncronos integrando a Fila do OCI com Funções do OCI

O serviço de Fila do Oracle Cloud Infrastructure (OCI) permite enviar mensagens entre sistemas de forma assíncrona, permitindo que você desacople seus sistemas e melhore o desempenho deles. Ele foi projetado para lidar com altos volumes de dados transacionais e garante que as mensagens sejam processadas sem perda ou duplicação.

O serviço OCI Queue é totalmente gerenciado e dimensiona automaticamente com base no throughput dos produtores e consumidores, usando padrões abertos para oferecer suporte à comunicação com qualquer cliente ou produtor com o mínimo de esforço. Os aplicativos sem servidor geralmente contam com uma combinação de vários serviços (API Gateway, Functions, etc.) para funcionar corretamente. No entanto, para que esses componentes distribuídos se comuniquem entre si, o serviço de Fila é crucial. Ele também permite que seu aplicativo estenda a comunicação com outros componentes do OCI ou até mesmo fora do OCI.

Arquitetura

Essa arquitetura de referência implanta um aplicativo Python de amostra para o Oracle Container Engine for Kubernetes (OKE), que verifica regularmente a fila configurada para extrair novas mensagens, chama uma função configurada usando mensagens extraídas e, em uma execução bem-sucedida, remove as mensagens da fila.

O aplicativo se autentica como instance_principal quando interage com os serviços do OCI. A Fila e as Funções podem estar em qualquer região, e os OCIDs de fila e função devem ser especificados durante a criação da pilha. Se for necessário atualizar os OCIDs de fila e função após a implantação do Terraform, você poderá editar o artefato de implantação do Kubernetes (parte do projeto DevOps do OCI criado).

A implantação do Terraform inclui a criação dos pipelines e repositórios necessários em um serviço DevOps do OCI para automatizar as etapas necessárias para colocar o código-fonte do aplicativo em produção. O código-fonte do aplicativo é hospedado em um repositório de código DevOps. O usuário pode então confirmar o código no repositório, que aciona o início de um pipeline de build.

O diagrama a seguir ilustra essa arquitetura de referência.



fila-fn-automação-arch-oracle.zip

A arquitetura tem os seguintes componentes:

  • 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 mesmo continentes).

  • Projeto do DevOps

    Um agrupamento lógico de recursos do DevOps necessários para implementar um workflow CI/CD. Os recursos do DevOps podem ser artefatos, pipelines de build, pipelines de implantação, conexões externas, triggers e ambientes. Os projetos DevOps facilitam a ativação de logs, monitoramento e notificações para todos os seus recursos DevOps.

  • Pipeline de build

    Um pipeline de build pega um ID de commit de seus repositórios de código de origem e usa esse código de origem para executar suas instruções de build. Os pipelines de build definem um conjunto de estágios para o processo de build: criar, testar e compilar artefatos de software, entregar artefatos a repositórios do OCI e, opcionalmente, acionar uma implantação. Você pode definir o fluxo e as instruções da execução do build no arquivo de especificação do build.

  • Repositório de código

    Repositórios Git privados hospedados pelo serviço do DevOps. Você pode armazenar, gerenciar e desenvolver código-fonte com Repositórios de Código DevOps do OCI.

  • Pipeline de implantação

    Uma sequência de etapas para entregar e implantar um conjunto de artefatos em um ambiente de destino. O fluxo e a lógica da release do software podem ser controlados pela definição dos estágios que podem ser executados em série ou em paralelo.

  • Estágios de implantação
    Os estágios são ações individuais que ocorrem durante uma execução de um pipeline. O pipeline de implantação DevOps inclui os seguintes tipos de estágio predefinidos para você usar no seu processo de release:
    • Implantação incremental: uma release incremental para OKE, Funções ou grupos de instâncias.
    • Espera: Espere N segundos.
    • Aprovação manual: Continuar se a aprovação for fornecida; interromper se a aprovação for rejeitada.
    • Chamar função: Execute tarefas personalizadas ou integrações chamando uma Função e passando um artefato de parâmetros de solicitação.
  • Artefato DevOps

    Um artefato DevOps é uma referência ou ponteiro para qualquer arquivo, binário, pacote, manifesto ou imagem que compõe seu aplicativo. Ao criar um artefato, informe ao Oracle DevOps o local de origem do artefato real. O DevOps suporta os repositórios OCI Container Image Registry e OCI Artifact Registry.

  • Serviços de Registro em Log e Notificação do OCI

    O serviço OCI Logging armazena logs relacionados à implantação. A saída de runtime da implantação e os resultados finais da implantação são mostrados como entradas de log. O serviço OCI Notifications fornece visibilidade sobre o estado mais recente do projeto de implantação e seus recursos e executa qualquer ação necessária. Por exemplo, você é notificado quando um evento importante, como um estágio em um pipeline de implantação aguardando aprovação. Quando receber a mensagem de notificação, você poderá ir para o pipeline de implantação DevOps e aprovar o estágio.

  • Ambientes de implantação

    Um ambiente é uma coleção de recursos de computação de um cliente em que os artefatos são implantados. Os ambientes podem ser uma instância de função, de máquina virtual (VM) de computação, bare metal ou um cluster do OKE.

    • Cluster do OKE: O OCI Container Engine for Kubernetes é um serviço totalmente gerenciado, escalável e altamente disponível que você pode usar para implantar seus aplicativos em contêineres na nuvem.
    • Instâncias de computação: o serviço OCI Compute permite provisionar e gerenciar hosts de Computação na nuvem. Você pode implantar instâncias do Compute com configurações que atendam aos seus requisitos de recursos para CPU, memória, largura de banda da rede e armazenamento.
    • Funções: O Oracle Functions é uma plataforma de funções como serviço totalmente gerenciada, multitenant, altamente escalável e sob demanda. O serviço foi desenvolvido no Oracle Cloud Infrastructure de nível empresarial e desenvolvido pelo mecanismo de código-fonte aberto do Fn Project.

    Os ambientes podem estar em diferentes regiões do OCI da região do pipeline de implantação. Essa separação permite que os desenvolvedores implantem em várias regiões do OCI usando o mesmo pipeline de implantação.

  • Grupos e políticas dinâmicos do IAM

    Um grupo dinâmico é um tipo especial de grupo que contém recursos (como instâncias de computação) que correspondem às regras definidas (portanto, a associação pode ser alterada dinamicamente à medida que os recursos correspondentes são criados ou excluídos). Essas instâncias agem como atores "principais" e podem fazer chamadas de API para serviços de acordo com as políticas que você escreve para o grupo dinâmico.

    Uma política é um documento que especifica quem pode acessar quais recursos e como. O acesso é concedido no nível de grupo e compartimento. Isso significa que você pode gravar uma política que dá a um grupo um tipo específico de acesso em um compartimento específico ou à própria tenancy.

Recomendações

Use as recomendações a seguir como ponto de partida. Seus requisitos podem ser diferentes da arquitetura descrita aqui.
  • Implantação

    Ao implantar a arquitetura por meio do Resource Manager, preserve os valores padrão o máximo possível se nenhuma alteração explícita for necessária.

Considerações

Ao implantar a solução e usar o aplicativo, considere os seguintes aspectos:

  • Implantando a solução

    Privilégios administrativos são necessários para configurar grupos dinâmicos e políticas associadas. O nome de usuário e o token de autenticação do OCI são necessários para autorização ao repositório Git DevOps do OCI e para a configuração de segredos no OKE.

  • Usando o aplicativo

    O ajuste dos parâmetros do aplicativo Python pode ser tratado no projeto DevOps criado modificando as variáveis no início do programa queue_automation.py e na configuração do segredo OCIR no OKE.

Implantar

O código Terraform desta implantação, juntamente com o código-fonte do aplicativo Python, estão disponíveis em GitHub.

  1. Clique em Implantar no Oracle Cloud

    Se você ainda não estiver conectado, informe a tenancy e as credenciais do usuário.

  2. Selecione a região na qual você deseja implantar a pilha.
  3. Siga os prompts na tela e as instruções para criar a pilha.
  4. Depois de criar a pilha, clique em Ações do Terraform e selecione Planejar.
  5. Aguarde a conclusão do job e revise o plano.

    Para fazer alterações, retorne à página Detalhes da Pilha, clique em Editar Pilha e faça as alterações necessárias. Em seguida, execute novamente a ação Plano.

  6. Se nenhuma alteração adicional for necessária, retorne à página Detalhes da Pilha, clique em Ações do Terraform e selecione Aplicar.

Explorar Mais

Revise esses recursos adicionais para saber mais sobre os recursos dessa arquitetura de referência.

Aquisições

  • Author: Andrei Ilas