Como Funciona o Serviço OCI Functions

Descubra como o OCI Functions funciona quando você implanta uma função e quando chama uma função.

O que acontece quando você implanta uma função no OCI Functions?

Quando você tiver gravado o código de uma função e ele estiver pronto para implantação, você poderá usar um único comando da CLI do Fn Project para executar todas as operações de implantação em sequência:

  • criar uma imagem do Docker com base na função
  • fornecer uma definição da função em um arquivo func.yaml que inclui:
    • o tempo máximo que a função pode executar
    • a quantidade máxima de memória que a função pode consumir
  • submeter a imagem ao registro Docker especificado
  • fazer upload de metadados de função (incluindo as restrições de memória e tempo e um link para a imagem no registro do Docker) para o Servidor Fn
  • adicionar a função à lista de funções mostradas na Console

O processo acima de implantar uma função no OCI Functions é mostrado no diagrama.

Esta imagem mostra o processo de: criar uma imagem do Docker com base em uma função; enviar a imagem para um registro do Docker; criar um arquivo func.yaml, fazer upload da definição de função para o Servidor Fn e exibi-la na Console.

Observe que, depois que a imagem tiver sido submetida a upload para o registro do Docker, será sua responsabilidade atualizar a imagem. Por exemplo, quando há suporte para novas versões de idioma (para obter mais informações, consulte FDKs (Function Development Kits)).

O que Acontece quando Você Chama uma Função?

Você pode chamar uma função que implantou no OCI Functions:

  • Da CLI do Fn Project.
  • Dos SDKs do Oracle Cloud Infrastructure.
  • De solicitações HTTP assinadas para o ponto final de chamada da função. Cada função tem um ponto final de chamada.
  • Outros serviços do Oracle Cloud (por exemplo, acionados por um evento no serviço Events) ou por serviços externos.

Quando uma função é chamada pela primeira vez, o OCI Functions primeiro verifica a solicitação com o serviço IAM. Supondo que a solicitação passe verificações de autenticação e autorização, o OCI Functions então transmite a solicitação ao Servidor Fn, que usa a definição da função para:

  • identificar a imagem do Docker da função a ser extraída do registro do Docker
  • executar a função executando a imagem da função como um contêiner em uma instância de uma sub-rede associada ao aplicativo ao qual a função pertence

Quando a função está sendo executada dentro do contêiner, a função pode ler e gravar outros recursos e serviços em execução na mesma sub-rede (por exemplo, Database as a Service). A função também pode ler e gravar para outros recursos compartilhados (por exemplo, Object Storage) e outros Oracle Cloud Services. Você pode especificar o tempo máximo que a função pode executar definindo um timeout no arquivo func.yaml ou na Console.

O OCI Functions armazena os logs da função no Oracle Cloud Infrastructure ou em um destino de log externo.

Quando a função terminar de executar e depois que um período estiver inativo, o contêiner do Docker será removido. Se o OCI Functions receber outra chamada para a mesma função antes que o contêiner seja removido, a segunda solicitação será roteada para o mesmo contêiner em execução. Se o OCI Functions receber uma chamada para uma função que esteja sendo executada em um contêiner em execução, o OCI Functions será dimensionado horizontalmente para atender às solicitações recebidas e um segundo contêiner do Docker será iniciado.

O OCI Functions mostra informações sobre chamadas de função em gráficos de métricas.

O processo acima de chamar uma função é mostrado no diagrama.

Esta imagem mostra como as funções implantadas no Servidor Fn interagem com outros serviços do Oracle Cloud Infrastructure (IAM, Object Storage, DBaaS), ferramentas (Console OCI, Fn Project CLI) e serviços externos (IaaS, PaaS, SaaS). Uma função é mostrada como tendo sido implantada como um contêiner em uma instância de uma sub-rede dentro de uma VCN.