Capítulo 8: CaaS e FaaS
8.3 Container Instances
A maneira mais rápida e prática de executar uma aplicação conteinerizada no OCI é através do serviço Container Instances.
Container Instances é um serviço de computação serverless que permite a execução rápida e simplificada de contêineres, eliminando a necessidade de gerenciamento de servidores. Ele opera de forma semelhante a uma máquina virtual, permitindo que você configure o tipo de processador, a quantidade de CPU e a memória. No entanto, em vez de especificar uma versão de sistema operacional, como o Oracle Linux, você especifica uma imagem de contêiner a ser utilizada.
O serviço é ideal para executar workloads mais simples que não requerem plataformas de orquestração de contêineres mais complexas, como o Kubernetes.
O Container Instances oferece flexibilidade ao permitir a execução de um ou mais contêineres simultaneamente. Além disso, possibilita a configuração de variáveis de ambiente, a definição de políticas de restart, ajustes nas opções de inicialização e diversas outras configurações.
Para a aplicação OCI Pizza, serão implementados dois Container Instances. O primeiro será o contêiner primário, responsável por receber os acessos provenientes da Internet, enquanto o segundo funcionará como um Container Instance de backup, assegurando a continuidade do serviço em caso de falha no primário. Essa estratégia oferece maior resiliência e disponibilidade, garantindo que a aplicação permaneça operante mesmo diante de imprevistos.

8.3.1 Compute Shape
Primeiramente, ao criar um Container Instance, é necessário escolher um dos Compute Shapes disponíveis. Os shapes que terminam com ".Flex" são shapes flexíveis, permitindo que você defina tanto o número de OCPUs quanto a quantidade de memória RAM que o contêiner pode utilizar.
Para listar os shapes disponíveis para uso, utilize o comando abaixo:
É importante ressaltar que cada shape possui limitações em relação à quantidade máxima de OCPUs, memória e largura de banda de rede. Por exemplo, o comando abaixo lista todas as propriedades de todos os shapes disponíveis:
NOTA
Para obter mais detalhes sobre os shapes disponíveis para Container Instances, consulte a documentação oficial neste link.
Para a aplicação OCI Pizza, será usado o shape CI.Standard.E4.Flex com 4 GB de memória RAM e 2 OCPUs.
8.3.2 Container Instance da aplicação OCI Pizza
Para criar um Container Instance, é necessário especificar a URL da imagem do contêiner armazenada no OCIR, além de fornecer detalhes sobre o shape, como a quantidade de OCPUs e memória. Também é possível definir variáveis de ambiente, o aavailability domain e o OCID da sub-rede a ser utilizada. Esses elementos são fundamentais para garantir que o contêiner seja configurado de acordo com as necessidades da aplicação.
Os comandos para a criação dos dois Container Instances na região Brazil East (São Paulo) podem ser consultados neste script.
Abaixo o comando de exemplo para se criar o Container Instance primário (ci-ocipizza-primary):
NOTA
Os valores das variáveis $AVAILABILITY_DOMAIN, $COMPARTMENT_OCID, $SECRET_KEY, $NOSQL_COMPARTMENT_OCID e $SUBNET_OCID devem ser substituídos pelos correspondentes ao seu ambiente no OCI. Para obter uma visão geral dos valores, consulte o script de exemplo.
8.3.3 Container Instance como Backend do Load Balancer
Além disso, um dos Container Instances será configurado como Backup no Backend Set. Caso o Health Check falhe, o Container Instance Backup assumirá automaticamente a função de Primário, garantindo assim a continuidade da disponibilidade da aplicação.