A Caixa Mágica: Guia Prático de Contêineres na AWS
A Dor Universal do Desenvolvedor
Todo desenvolvedor já ouviu (ou disse) estas frases: * "Mas... funcionou na minha máquina!" * "Você precisa atualizar a versão do Python no seu servidor!" * "Ah, faltou instalar a biblioteca X..."
Esses problemas nascem de uma única causa: a inconsistência entre os ambientes de desenvolvimento, teste e produção.
Analogia: Pense que sua aplicação é um "bolo de aniversário" complexo. * O Mundo Antigo: Você assa o bolo (desenvolve o código) na sua cozinha (seu laptop). Depois, você o coloca em um prato (o servidor de produção) para entregar. Mas no caminho, o prato pode ser diferente, o clima pode mudar, e o bolo chega todo desmontado.
A tecnologia de Contêineres foi inventada para resolver essa dor.
1. A Invenção da "Tupperware" (O que é um Contêiner?)
- O que é? Um contêiner é um pacote padronizado que agrupa o código da sua aplicação junto com todas as suas dependências (bibliotecas, runtimes, ferramentas de sistema).
- Analogia: Em vez de entregar o bolo em um prato, você o coloca dentro de uma "caixa de plástico selada e padronizada" (uma "Tupperware"). Dentro da caixa, você coloca não apenas o bolo, mas também um garfo, um guardanapo e as velinhas – tudo que é necessário para consumi-lo.
- A Ferramenta Padrão: Docker é a plataforma de software mais popular do mundo para criar, rodar e gerenciar contêineres.
Os Benefícios da "Tupperware":
- Portabilidade: A "Tupperware" é universal. Ela funciona da mesma forma no seu laptop, no servidor de testes e na nuvem AWS. O problema "funciona na minha máquina" desaparece.
- Consistência: Garante que o ambiente seja idêntico em todos os estágios do desenvolvimento.
- Leveza e Rapidez: Contêineres compartilham o kernel do sistema operacional do host, o que os torna muito mais leves e rápidos para iniciar do que uma máquina virtual completa.
2. O Gerente de Logística (A Orquestração)
A Dor: Gerenciar uma ou duas "Tupperwares" é fácil. Mas como você gerencia 10.000 delas para uma aplicação de grande escala? Como você lida com a "expansão de contêineres" (container sprawl) ou com "contêineres zumbi" (que travaram e estão consumindo recursos)?
A Solução: Um Orquestrador de Contêineres. * Analogia: O "Gerente de Logística de um grande evento de catering". Ele é responsável por implantar, escalar e gerenciar a saúde de milhares de "Tupperwares".
As Ferramentas de Orquestração na AWS:
Amazon ECS (Elastic Container Service):
- O orquestrador de contêineres nativo e simplificado da AWS. É profundamente integrado com o ecossistema AWS, tornando-o mais fácil de aprender e usar.
Amazon EKS (Elastic Kubernetes Service):
- O orquestrador padrão da indústria, o Kubernetes, oferecido como um serviço gerenciado. É mais complexo, mas oferece um poder e uma flexibilidade imensos, além de evitar o "aprisionamento tecnológico" (vendor lock-in).
3. O Depósito de Caixas (O Registro)
- A Dor: "Onde eu guardo minhas 'imagens de Tupperware' prontas para serem usadas pelo orquestrador?"
- A Solução: Um Registro de Contêineres.
- Analogia: O "depósito refrigerado e seguro" onde você armazena seus diferentes modelos de "Tupperware" (imagens Docker).
Serviço AWS: Amazon ECR (Elastic Container Registry). É o seu repositório Docker privado, seguro e gerenciado na AWS.
4. A Revolução Serverless para Contêineres (AWS Fargate)
A Dor Final: Mesmo com um orquestrador, eu ainda preciso gerenciar uma frota de instâncias EC2 para rodar meus contêineres.
A Solução: AWS Fargate. * O que é? Um motor de computação serverless para contêineres que funciona com ECS e EKS. * Analogia: Um "serviço de entrega mágico". Em vez de você gerenciar sua própria frota de caminhões (instâncias EC2) para transportar suas "Tupperwares", você simplesmente entrega a Tupperware para a Fargate. Ela cuida de encontrar um caminhão do tamanho certo, fazer a entrega e depois dispensar o caminhão. * O Resultado: Você para de pensar em servidores e foca apenas nos seus contêineres.
HACK PARA CERTIFICAÇÃO: Para a prova: 1. Contêineres (Docker) resolvem o problema de portabilidade e consistência. 2. Orquestradores (ECS/EKS) resolvem o problema de gerenciamento em escala. 3. Amazon ECR é o serviço para armazenar suas imagens de contêiner. 4. AWS Fargate é a opção serverless para rodar contêineres sem gerenciar instâncias EC2.
A Revolução da Tupperware: Guia de Benefícios e Conceitos de Contêineres
A Dor Universal: Todo desenvolvedor já ouviu (ou disse) a frase: "Mas... funcionou na minha máquina!". Esse problema clássico surge de pequenas diferenças entre o ambiente do desenvolvedor, o de testes e o de produção, causando falhas, atrasos e frustração.
Os Contêineres foram criados para resolver essa dor de uma vez por todas.
Analogia: Pense que sua aplicação é um "bolo de aniversário". No método antigo, você o entregava em um prato, vulnerável a qualquer mudança no ambiente. Um contêiner é a invenção da "Tupperware": um pacote padronizado e selado que garante que seu bolo chegue intacto e perfeito, não importa onde.
1. A Diferença Fundamental: VMs vs. Contêineres
Para entender um contêiner, precisamos compará-lo com uma Máquina Virtual (VM), como uma instância EC2.
- Analogia: Pense em construir moradias em um terreno (seu servidor físico).
Máquina Virtual (VM): É como construir uma "Casa". Para cada casa, você precisa de uma fundação, encanamento e fiação elétrica completos e independentes (um Sistema Operacional convidado completo). É robusta, mas pesada e consome muitos recursos.
Contêiner: É como construir um "Apartamento" em um prédio. O prédio (o Sistema Operacional do host) já tem a fundação e a infraestrutura principal. Cada apartamento (contêiner) compartilha essa infraestrutura, mas é totalmente isolado com suas próprias paredes e decoração (a aplicação e suas dependências).
O Resultado: Contêineres são muito mais leves, rápidos para iniciar e permitem que você coloque muito mais "apartamentos" (aplicações) no mesmo "terreno" (servidor), resultando em uma enorme eficiência de custos.
2. Os 4 Superpoderes dos Contêineres
1.
Consistência Ambiental
- A Dor que Resolve: O fim do "funciona na minha máquina".
- Como? A "Tupperware" (contêiner) garante que o "bolo" (código) e todos os seus "utensílios" (bibliotecas e dependências) viajem sempre juntos. O ambiente é idêntico do laptop do desenvolvedor até a produção na nuvem.
2.
Eficiência Operacional
- A Dor que Resolve: O desperdício de recursos de ter uma máquina virtual inteira para cada pequena aplicação.
- Como? Por serem leves, você pode rodar múltiplos contêineres (aplicações) em uma única instância EC2, maximizando o uso do hardware e reduzindo custos. Eles iniciam em segundos, não em minutos.
3.
Produtividade do Desenvolvedor
- A Dor que Resolve: A lentidão e o risco de atualizar aplicações monolíticas gigantes.
- Como? Contêineres são o veículo perfeito para microsserviços. Equipes diferentes podem trabalhar em "Tupperwares" separadas (ex: o serviço de login, o serviço de pagamento) e atualizá-las de forma independente, sem medo de quebrar o resto da aplicação.
4.
Controle de Versão
- A Dor que Resolve: "Como este ambiente foi configurado? O que mudou desde a última versão?"
- Como? A "receita de bolo" de um contêiner é um arquivo de texto chamado
Dockerfile
. Este arquivo descreve, passo a passo, como construir o ambiente. Você pode versioná-lo no Git junto com o seu código, criando um histórico perfeito e auditável da sua infraestrutura.
E Agora?
Entendemos os benefícios. Mas como, na prática, nós... 1. ...criamos um contêiner? -> A resposta é Docker, a ferramenta padrão para construir nossas "Tupperwares". 2. ...executamos o contêiner? -> O Docker também nos permite rodar os contêineres em nosso laptop ou em um servidor. 3. ...gerenciamos múltiplos contêineres em escala? -> Essa é a pergunta de um milhão de dólares. A resposta são os Orquestradores, como o Amazon ECS e o Amazon EKS, os "gerentes de logística" da nossa frota.
HACK PARA CERTIFICAÇÃO: Para a prova: 1. Entenda a diferença fundamental: VMs virtualizam o hardware, Contêineres virtualizam o SO. 2. O principal benefício dos contêineres é a portabilidade e a consistência entre ambientes. 3. Saiba que Docker é a tecnologia mais popular para contêineres. 4. Lembre-se dos principais serviços de contêineres da AWS: ECS (o orquestrador da AWS), EKS (Kubernetes gerenciado), ECR (o registro para guardar imagens) e Fargate (a opção serverless).
Docker: A Receita para Aplicações Portáteis e Consistentes
No último guia, aprendemos que um contêiner é como uma "Tupperware" que resolve o problema do "funciona na minha máquina". A pergunta seguinte é: como nós criamos e gerenciamos essas "Tupperwares"?
A resposta é Docker. Docker é uma plataforma de software completa que te dá as ferramentas para construir, compartilhar e rodar contêineres.
1. A Anatomia do Mundo Docker
Para dominar o Docker, você precisa entender três conceitos fundamentais que formam seu fluxo de trabalho.
1.
O Dockerfile
(A Receita)
- O que é? Um arquivo de texto simples que contém as instruções passo a passo para construir o seu ambiente.
- Analogia: A "Receita do Bolo".
- Exemplo de Receita (
Dockerfile
):# 1. Comece com uma base de Python 3.9 FROM python:3.9-slim # 2. Copie o código da sua aplicação para dentro da imagem COPY . /app # 3. Instale as dependências necessárias RUN pip install -r /app/requirements.txt # 4. Diga ao Docker qual comando rodar quando o contêiner iniciar CMD ["python", "/app/main.py"]
2.
A Imagem Docker (O Molde)
- O que é? O resultado da execução da "receita" do
Dockerfile
. É um pacote leve, autônomo e executável. - Analogia: O "Bolo Congelado e Pré-Embalado". É um modelo estático e que não pode ser alterado. Você pode guardar este "bolo congelado" em um depósito (como o Amazon ECR) e compartilhá-lo com sua equipe.
3.
O Contêiner Docker (O Produto Final)
- O que é? Uma instância em execução de uma Imagem Docker.
- Analogia: O "Bolo Sendo Servido". É a versão viva e dinâmica da sua imagem. Você pode criar centenas de "fatias de bolo" (contêineres) idênticas a partir do mesmo "bolo congelado" (imagem).
2. Os Benefícios na Prática
Com o Docker, você resolve dores críticas do desenvolvimento de software:
- Padronizar Ambientes: Garante que o ambiente de desenvolvimento seja idêntico ao de produção, acabando com as surpresas na hora da implantação.
- Reduzir Conflitos: O "serviço de pagamentos" pode rodar em um contêiner com Java 8, e o "serviço de relatórios" pode rodar em outro com Java 17, na mesma máquina, sem nenhum conflito de dependências.
- Habilitar Microsserviços: Contêineres são o veículo perfeito para arquiteturas de microsserviços. Cada serviço vive em sua própria "Tupperware", isolado e independente, permitindo que equipes diferentes trabalhem em paralelo.
3. Os Modelos de Implantação
Você pode rodar o Docker em um único servidor ou em uma frota na nuvem.
-
Cenário 1 (À Esquerda): Docker em um Único Host
- Um único servidor (seja seu laptop ou uma instância EC2) tem o Docker instalado. Ele gerencia múltiplos contêineres que compartilham o sistema operacional deste único host. Ótimo para desenvolvimento e aplicações pequenas.
-
Cenário 2 (À Direita): Docker em uma Frota na AWS
- Aqui, temos múltiplas instâncias EC2, cada uma com o Docker instalado.
O Desafio da Escala: Este cenário revela a dor que os orquestradores resolvem. Como você decide em qual instância EC2 rodar seu novo contêiner? Como eles se comunicam pela rede? O que acontece se uma instância falhar? Gerenciar isso manualmente é um pesadelo. É para resolver isso que existem o Amazon ECS e o EKS.
- Aqui, temos múltiplas instâncias EC2, cada uma com o Docker instalado.
HACK PARA CERTIFICAÇÃO: Para a prova: 1. Docker é a plataforma de software para criar e rodar contêineres. 2. Um
Dockerfile
é a "receita" para construir uma Imagem Docker. 3. Um Contêiner é uma instância em execução de uma Imagem. 4. Os contêineres resolvem o problema de portabilidade e consistência de ambiente.
A Fábrica de Contêineres: Guia do Amazon ECS e ECR
Já aprendemos a criar nossa "Tupperware" (um contêiner Docker). Agora enfrentamos dois novos desafios: 1. Onde eu guardo meus "moldes de Tupperware" (as imagens Docker) de forma segura e privada? 2. Como eu gerencio a produção de milhares de "Tupperwares" em uma frota de servidores?
A AWS responde a essas dores com dois serviços integrados: o Amazon ECR e o Amazon ECS.
1. O Depósito Seguro (Amazon Elastic Container Registry - ECR)
- A Dor que Resolve: O Docker Hub é ótimo, mas é um registro público. Onde eu armazeno as imagens de contêiner privadas e proprietárias da minha empresa?
- O que é? O Amazon ECR é um registro de contêineres Docker totalmente gerenciado.
- Analogia: É o "Depósito Central de Moldes" da sua fábrica. É um armazém seguro, privado e organizado onde você guarda todos os seus "moldes de Tupperware" (suas imagens Docker).
Benefícios Chave do ECR:
Privado e Seguro: Totalmente integrado com o AWS IAM, permitindo que você defina permissões granulares sobre quem pode enviar (
push
) ou baixar (pull
) suas imagens. As imagens são criptografadas em repouso.Alta Disponibilidade: Por baixo dos panos, o ECR armazena suas imagens no Amazon S3, herdando sua altíssima durabilidade e disponibilidade.
Integrado ao Ecossistema: Funciona perfeitamente com o Docker no seu laptop e, o mais importante, com os orquestradores da AWS, como o ECS e o EKS.
2. O Gerente de Logística (Amazon Elastic Container Service - ECS)
- A Dor que Resolve: O pesadelo de gerenciar manualmente centenas de contêineres em uma frota de servidores EC2. O ECS é o orquestrador que automatiza isso.
- Analogia: É o "Gerente de Operações da Fábrica". Ele é responsável por pegar os moldes do depósito (ECR) e iniciar, parar e monitorar a produção.
A Anatomia da Fábrica (Os Componentes do ECS):
Para entender o ECS, você precisa conhecer seus quatro componentes principais:
-
O Cluster:
- Analogia: A "Fábrica" em si. É um agrupamento lógico de "máquinas" (instâncias EC2 ou a capacidade do Fargate) onde seus contêineres irão rodar.
-
A Definição de Tarefa (Task Definition):
- Analogia: A "Ordem de Produção". É o seu blueprint, um arquivo JSON que descreve exatamente o que precisa ser feito.
- O que define? "Pegue o 'molde da Tupperware azul' (a imagem do ECR). Dê a ele 512MB de 'energia' (RAM) e 256 unidades de 'força de processamento' (CPU). Abra a porta 80 para comunicação."
-
A Tarefa (Task):
- Analogia: A "linha de montagem em funcionamento". É uma instância em execução da sua "Ordem de Produção". É a "Tupperware" sendo efetivamente fabricada.
-
O Serviço (Service):
- Analogia: O "Supervisor de Produção". Seu trabalho é garantir que a fábrica esteja sempre produzindo o que foi pedido.
- O que ele faz? Ele lê a "Ordem de Produção" e garante que o número desejado de "linhas de montagem" (Tasks) esteja sempre rodando. Se uma linha quebrar (a Task parar), o supervisor automaticamente inicia uma nova. Ele também se integra com o Elastic Load Balancing para distribuir o tráfego entre suas Tasks.
HACK PARA CERTIFICAÇÃO: Para a prova: 1. ECR é o serviço para ARMAZENAR imagens Docker (O Depósito). 2. ECS é o serviço para RODAR e GERENCIAR (orquestrar) contêineres (O Gerente da Fábrica). 3. Entenda a hierarquia do ECS: Um Serviço mantém um número desejado de Tarefas rodando, e cada Tarefa é uma instância de uma Definição de Tarefa, tudo isso dentro de um Cluster. 4. Fargate é a opção SERVERLESS para rodar contêineres com ECS, eliminando a necessidade de gerenciar as instâncias EC2 do cluster.
O Sistema Operacional da Nuvem: Guia de Kubernetes e Amazon EKS
Já vimos que o Amazon ECS é o orquestrador de contêineres nativo da AWS. Mas existe outro nome que domina o universo dos contêineres: Kubernetes.
O Kubernetes é um projeto de código aberto, originalmente criado pelo Google, que se tornou o padrão de fato da indústria para orquestração de contêineres.
Analogia: Se o ECS é o "gerente de logística" da Amazon, o Kubernetes é o "Sistema Operacional da Frota Global". É uma plataforma poderosa e universal para gerenciar frotas de "navios cargueiros" (servidores) que transportam "contêineres".
1. O Padrão da Indústria (O que é Kubernetes?)
- A Dor que Resolve: A necessidade de uma forma poderosa, flexível e, o mais importante, independente de provedor (vendor-neutral) para gerenciar aplicações em contêineres em qualquer escala e em qualquer ambiente (on-premises ou em qualquer nuvem).
A Anatomia de um Cluster Kubernetes:
O Plano de Controle (Control Plane):
- Analogia: A "Sede Corporativa (QG)" da sua empresa de logística. É o cérebro que toma todas as decisões: onde agendar os contêineres, como monitorá-los e como escalar.
Os Nós de Trabalho (Worker Nodes):
- Analogia: Os "navios cargueiros" da sua frota. São as suas instâncias EC2, os "músculos" que efetivamente executam os contêineres.
O Pod:
- Analogia: A "unidade de embarque". É o menor objeto que o Kubernetes gerencia. Um Pod encapsula um ou mais contêineres que precisam rodar juntos no mesmo "navio".
2. O Melhor dos Dois Mundos (Amazon Elastic Kubernetes Service - EKS)
A Dor: Montar e gerenciar um Plano de Controle do Kubernetes que seja seguro, resiliente e escalável é extremamente complexo. É uma tarefa para uma equipe de especialistas.
A Solução da AWS: Amazon EKS. * O que é? Um serviço gerenciado que facilita a execução do Kubernetes na AWS. * Analogia: A AWS te oferece a "Sede Corporativa (QG) como um Serviço".
O Modelo de Responsabilidade do EKS:
A AWS Gerencia: O Plano de Controle. A AWS cuida da instalação, escalabilidade e alta disponibilidade dos "nós mestres" que formam o cérebro do seu cluster, distribuindo-os por múltiplas Zonas de Disponibilidade.
Você Gerencia: Os Nós de Trabalho. Você é responsável por provisionar e gerenciar a frota de "navios" (as instâncias EC2) que executarão seus contêineres.
!!! tip "Insight de Especialista"
O EKS é certificado como conforme ao Kubernetes. Isso significa que qualquer aplicação, ferramenta ou plugin que funciona com o Kubernetes padrão funcionará perfeitamente no EKS. Você pode migrar suas cargas de trabalho de outros provedores de nuvem para o EKS com o mínimo de esforço.
3. A Batalha dos Titãs: ECS vs. EKS
"Qual orquestrador eu devo escolher?" Esta é uma das principais decisões de arquitetura para contêineres na AWS.
Característica | ||
---|---|---|
Curva de Aprendizagem | Menor. Mais simples e com conceitos nativos da AWS. | Maior. Exige conhecimento dos conceitos do Kubernetes (Pods, Services, Deployments, etc.). |
Flexibilidade/Controle | Bom, focado na simplicidade. | Extremo. O Kubernetes é conhecido por sua vasta gama de configurações e extensões. |
Ecossistema | Profundamente integrado com os serviços da AWS. | Gigantesco. Beneficia-se de toda a comunidade de código aberto da CNCF (Cloud Native Computing Foundation). |
Portabilidade | Menos portável. É uma solução AWS. | Alta. Aplicações no EKS podem ser movidas para o Google Kubernetes Engine ou Azure Kubernetes Service com poucas mudanças. |
O Veredito do Arquiteto: * Para equipes que buscam simplicidade máxima e uma profunda integração com o ecossistema AWS, ECS é a escolha perfeita. * Para equipes que precisam de flexibilidade máxima, já têm experiência com Kubernetes, ou têm uma estratégia multi-nuvem, EKS é o padrão ouro.
HACK PARA CERTIFICAÇÃO: Para a prova: 1. Saiba que Kubernetes é um popular orquestrador de contêineres de código aberto. 2. O Amazon EKS é o serviço gerenciado da AWS para rodar o Kubernetes. 3. Entenda a principal diferença: ECS é mais simples e nativo da AWS. EKS é o padrão da indústria, mais complexo e mais portável. 4. Lembre-se do AWS Fargate como a opção serverless para rodar contêineres com ambos, ECS e EKS.
Adeus, Servidores: Guia de Computação Serverless para Contêineres com Fargate
Já aprendemos a empacotar nossas aplicações em contêineres (Docker) e a orquestrá-las com o Amazon ECS ou EKS. Mas ainda resta uma dor de cabeça: quem gerencia a frota de servidores EC2 que roda tudo isso?
É aqui que entra o AWS Fargate, a tecnologia que traz a filosofia serverless para o mundo dos contêineres.
1. As Dores de Cabeça de um Gerente de Frota
Gerenciar seu próprio cluster de instâncias EC2 para rodar contêineres (Tipo de Lançamento EC2) é poderoso, mas traz desafios complexos:
O Jogo de "Tetris" (Bin Packing):
- A Dor: Como você distribui eficientemente contêineres de tamanhos diferentes nas suas instâncias para maximizar o uso e não desperdiçar recursos? É um problema de otimização extremamente difícil.
A Manutenção da Frota:
- A Dor: Você ainda é responsável por escolher o tipo de instância, aplicar patches de segurança no sistema operacional, gerenciar a escalabilidade do cluster e proteger os servidores.
A Expansão Descontrolada:
- A Dor: Gerenciar a proliferação de contêineres, garantir que as versões estão corretas e lidar com "contêineres zumbi" (que travaram) exige um esforço operacional significativo.
2. A Entrega Mágica (A Solução com AWS Fargate)
O Fargate é uma tecnologia que permite que você execute contêineres sem pensar em servidores.
- Analogia: Pense na diferença:
- Modo EC2: Você é o gerente de logística que precisa gerenciar sua própria frota de caminhões.
- Modo Fargate: Você não tem caminhões. Você simplesmente entrega sua "Tupperware" (seu contêiner) para o "Serviço de Entregas Mágico da Amazon". A Fargate "invoca" um caminhão do tamanho exato, faz a entrega e o caminhão desaparece.
O Novo Modelo de Responsabilidade
O Fargate muda radicalmente o que você precisa gerenciar.
Com o Fargate, toda a complexidade de gerenciar o cluster, o sistema operacional e os agentes é transferida para a AWS.
Benefícios Chave do Fargate:
Sem Gerenciamento de Cluster: Você nunca mais precisará escolher um tipo de instância EC2, atualizar uma AMI ou aplicar um patch de segurança em um servidor para seus contêineres.
Segurança Aprimorada: Cada tarefa ou pod roda em seu próprio ambiente de computação isolado, melhorando a segurança por padrão.
Custo Otimizado: Você paga por segundo, com base na CPU e memória que seu contêiner solicita, não por uma instância EC2 inteira que pode estar parte do tempo ociosa.
3. O Fluxo de Trabalho Simplificado
Usar o Fargate com o Amazon ECS é incrivelmente simples:
Crie sua Imagem de Contêiner: Use o Docker para criar a "receita" e o "molde" da sua aplicação, e armazene-a no Amazon ECR.
Especifique os Recursos: Na sua Definição de Tarefa do ECS, você define o tamanho da sua "Tupperware": "Esta tarefa precisa de 1 vCPU e 2GB de RAM".
Defina as Políticas: Configure as permissões de rede e as IAM Roles que sua tarefa precisa.
Execute: Diga ao ECS para rodar a tarefa usando o Tipo de Lançamento (Launch Type) Fargate.
É isso. O Fargate cuida de todo o resto.
HACK PARA CERTIFICAÇÃO: Para a prova: 1. AWS Fargate é a tecnologia SERVERLESS para rodar contêineres com ECS e EKS. 2. A principal vantagem do Fargate é que ele elimina a necessidade de gerenciar a infraestrutura de servidores (o cluster de instâncias EC2). 3. Com Fargate, você define e paga pelos recursos no nível da tarefa/contêiner, não no nível da instância.