

# Práticas recomendadas para o Lambda MicroVMS
<a name="microvms-best-practices"></a>

Siga essas práticas recomendadas para criar aplicações confiáveis, econômicas e seguras com o AWS Lambda MicroVMS.

## Design de aplicações
<a name="microvms-best-practices-design"></a>

Projete sua aplicação para que ela funcione bem com os snapshots de microVM e ganchos do ciclo de vida.
+ **Use ganchos do ciclo de vida**: implemente `/run` para a inicialização pós-execução, `/suspend` para uma limpeza gradual, `/resume` para o restabelecimento da conexão e `/terminate` para a descarga de dados.
+ **Gerencie a reutilização de snapshots**: gere UUIDs, segredos e valores aleatórios no hook `/run` e não durante a criação da imagem. Use CSPRNGs para toda geração de números aleatórios.
+ **Projete para retomada**: valide todas as conexões de rede e o estado em cache no hook `/resume`. As conexões do AWS SDK geralmente se recuperam de modo automático, mas esse pode não ser o caso das conexões personalizadas.

## desempenho
<a name="microvms-best-practices-performance"></a>

Otimize o desempenho da microVM com as seguintes práticas:
+ **Dimensione corretamente sua microVM**: escolha o menor tamanho de microVM que atenda às suas necessidades de CPU, memória e largura de banda. A largura de banda escala de acordo com a memória configurada.
+ **Minimize o tamanho do snapshot**: mantenha o espaço reduzido ocupado pela aplicação para reduzir os tempos de execução e retomada. Remova as dependências do tempo de compilação e os arquivos temporários antes que o snapshot da imagem seja capturado.
+ **Use suspensão/retomada para workloads sensíveis à latência**: mantenha em estado suspenso os ambientes usados frequentemente para retomar rapidamente a execução.

## Segurança
<a name="microvms-best-practices-security"></a>

Siga estas práticas para proteger workloads de microVM:
+ **Alterne os tokens de autenticação**: gere tokens de curta duração (15 a 30 minutos). Implemente a lógica de atualização do token em seu cliente antes da expiração.
+ **Defina o escopo dos tokens para portas específicas**: use o parâmetro `allowedPorts` para limitar o escopo do token somente para as portas usadas por sua aplicação.
+ **Use a saída de VPC para tráfego confidencial**: direcione o tráfego para bancos de dados e APIs internas por meio de um conector de saída de VPC em vez de internet pública.
+ **Aplique o IAM com privilégios mínimos**: separe os perfis de compilação (criação de imagem) dos perfis de execução (runtime). Conceda as permissões mínimas necessárias.

## Otimização de custos
<a name="microvms-best-practices-cost"></a>

Reduza custos com as seguintes estratégias:
+ **Configure as políticas de inatividade**: configure `maxIdleDurationSeconds` para suspender automaticamente as microVMs ociosas. As microVMs suspensas não incorrem em cobranças de computação.
+ **Defina maximumDurationInSeconds**: evite custos excessivos definindo um tempo de encerramento rígido em cada microVM.
+ **Encerre as microVMS que não forem usadas**: não deixe que as microVMS sejam executadas indefinidamente. Use `suspendedDurationSeconds` para encerrar automaticamente após longos períodos de inatividade.
+ **Recursos de tags**: use tags em imagens de microVM para alocação de custos e geração de relatórios no AWS Cost Explorer.
+ **Dimensione corretamente suas microVMS**: comece com um número mínimo que atenda às suas necessidades de desempenho. Você pode aumentar esse número mínimo em 4 vezes durante o pico de atividade sem precisar provisionar novamente.
+ **Limpe as imagens não utilizadas**: exclua as versões da imagem da microVM das quais você não precise mais para reduzir os custos de armazenamento.

## Monitoramento
<a name="microvms-best-practices-monitoring"></a>

Monitore sua microVMS de forma eficaz:
+ **Analise stateReason**: quando as microVMs são encerradas inesperadamente, a resposta `get-microvm` inclui `stateReason` com o motivo da falha inesperada.