Cargas de trabalho de função
Uma função é um trecho de código sem estado que executa tarefas à medida que é chamada por solicitações d HTTP. Com as funções do IBM Code Engine, você pode executar sua lógica de negócios de maneira escalável e sem servidor. IBM Code Engine As funções oferecem um ambiente de execução otimizado para dar suporte a cenários de baixa latência e rápida expansão horizontal. O código da sua função pode ser escrito em um ambiente de execução gerenciado que inclua versões específicas do Node.js ou do Python.
Um pacote configurável de código é uma coleção de arquivos que representa seu código de função. Este pacote configurável de códigos é injetado no contêiner de tempo de execução Seu pacote configurável de códigos é criado pelo Code Engine e armazenado no registro do contêiner ou sequencial com a função. Um pacote configurável de código não é uma imagem de contêiner padrão do Open Container Initiative (OCI)
Ciclo de vida de uma instância de função
Quando uma função é chamada (iniciada), a instância de Função correspondente é inicializada com o contêiner de Tempo de execução configurado e os parâmetros de Recurso O processo da primeira inicialização é referido como cold start..
Para reduzir a latência de cold start, o Code Engine otimiza a chamada pré-aquecendo determinados tempos de execução com configurações específicas de CPU e memória. As combinações pré-aquecidas para funções incluem os tempos de execução Node.js e Python, bem como a combinação padrão de CPU e memória para funções, que é 0.25 vCPU x 1 GB de memória. Além disso, o sistema é projetado para melhorar a reutilização de instâncias de Função que já estão inicializadas Portanto, uma instância de Função é mantida ativa após a chamada ser concluída para permitir chamadas subsequentes, reutilizando a mesma instância e reutilizando o estado da instância quando a última chamada foi concluída A reutilização de uma instância de Função não é garantida..
Quais são os recursos-chave de trabalhar com funções?
Revise os tópicos a seguir para saber mais sobre como trabalhar com as Funções do IBM Code Engine
- Isolamento
- Criação de log
- Tempos de execução
- Executando funções
- Segurança
- Simultaneidade de chamada e ajuste de escala de instâncias de função
- Compactando seu código-fonte para uma função
Isolamento
O Code Engine é um serviço regional multilocatário em que os locatários compartilham a mesma rede e infraestrutura de computação. Em particular, a infraestrutura de rede e de computação são recursos compartilhados e alguns componentes de gestão são comuns a todos os locatários. No entanto, os locatários e suas cargas de trabalho são isolados uns dos outros usando projetos Code Engine. Code Engine evita a comunicação entre projetos, fornecendo isolamento para seus aplicativos dentro de um ambiente de diversos locatários, que pode incluir aplicativos, tarefas em lote e funções. Além disso, há controles de acesso que são executados em um nível de recurso para permitir que somente usuários autorizados executem determinadas operações em recursos do projeto, como funções ou outras cargas de trabalho Code Engine.
Para obter mais informações sobre isolamento de carga de trabalho, consulte Code Engine isolamento de carga de trabalho.
Criação de log
O código de função pode gravar registros ' stdout e ' stderr que são capturados e encaminhados para uma instância IBM Cloud Logs. IBM Cloud Logs é uma instância de registro da plataforma que você pode configurar para
indexar seus registros. Para obter mais informações, consulte Visualizando logs .
Tempos de execução
Code Engine inclui Tempos de execução gerenciados que podem ser usados para suas Funções.
Os tempos de execução gerenciados incluem Node.js e Python versões e combinações específicas de CPU e memória. Esses tempos de execução são otimizados para uma inicialização rápida Esses tempos de execução são pré-aquecidos, o que evita a sobrecarga de extrair imagens de contêiner e iniciar contêineres e processos Seu código é injetado em um contêiner já em execução.
Para obter mais informações, consulte Tempos de execução
Executando funções
Quer seu código esteja no formato de código-fonte em um arquivo local ou em um repositório do Git, quer seja uma imagem de contêiner armazenada em um registro público ou privado, o Code Engine oferece uma maneira simplificada de executar seu código como uma função.
É possível criar e chamar sua função no Code Engine das maneiras a seguir:
-
Executar a partir de um pacote configurável de código existente
-
Executar a partir do código-fonte existente Se você estiver iniciando com o código-fonte que está localizado em um repositório Git ou em sua estação de trabalho local, será possível apontar para o local de sua origem e o Code Engine se encarregará de construir a imagem para você.
Para obter mais informações sobre como criar e chamar funções, consulte Trabalhando com funções no Code Engine.
Segurança
Code Engine oferece proteção imediata contra ataques DDoS para sua função. A proteção contra ataques DDoS do site Code Engine é fornecida pelo site Cloud Internet Services (CIS), sem nenhum custo adicional para você. DDoS A proteção abrange ataques a protocolos das Camadas 3 e 4 do Modelo de Interconexão de Sistemas (OSI) ( TCP/IP ), mas não ataques à Camada 7 ( HTTP ). Consulte “DDoS protection ”.
Code Engine também oferece uma malha de serviços para utilizar sua camada de rede, o que permite o tráfego mútuo com Transport Layer Security ( TLS ) entre funções, garantindo assim a segurança da comunicação entre serviços e entre usuários e serviços.
Para obter mais informações sobre segurança, consulte Code Engine e segurança.
Simultaneidade de chamada e ajuste de escala de instâncias de função
Quando diversas funções estão sendo chamadas ao mesmo tempo, o Code Engine inicializa novas instâncias de função para cada chamada, mas, ao mesmo tempo, tenta maximizar a reutilização Apenas uma chamada de função é manipulada por uma instância
de função em um único momento. Para Node.js, a função pode ser configurada com concurrency > 0 para permitir que várias chamadas sejam manipuladas em uma única instância de função.
Empacotando seu código-fonte para uma função
As funções podem ser empacotadas de três maneiras diferentes.
- como um único arquivo
- como vários arquivos (com uma estrutura de pastas e módulos dependentes)
- como uma imagem de contêiner
Como posso começar com funções?
Para implementar um aplicativo Code Engine simples com uma hello-world imagem de amostra, consulte o tutorial Executando IBM Code Engine Funções.
Para aprofundar o trabalho com funções, consulte Trabalhando com funções no Code Engine.