Apos desenvolver software, voce precisa implanta-lo para entrega-lo aos usuarios. Mas implantar uma nova versao em um servico ja usado por muitas pessoas e mais complicado do que parece. O exame AWS DVA-C02 pergunta qual estrategia de implantacao escolher nessas situacoes.
Comparando Estrategias de Implantacao
Uma estrategia de implantacao e um metodo sobre como aplicar uma nova versao de software aos servidores existentes. Vamos comparar as quatro estrategias principais.
All-at-once
Instala a nova versao em todos os servidores simultaneamente. Conclui mais rapido mas o servico pode ter downtime durante a implantacao. Se algo der errado, voce precisa reimplantar a versao anterior.
Rolling
Implanta em grupos pequenos de servidores em sequencia. Durante a implantacao, alguns servidores executam a versao antiga enquanto outros executam a nova.
Blue/Green
Mantem o ambiente existente (Blue) funcionando enquanto constroi um ambiente completamente novo (Green). Quando pronto, todo o trafego e direcionado ao Green de uma vez. Se surgirem problemas, voce pode voltar instantaneamente ao Blue. E a abordagem mais segura, mas operar dois ambientes completos dobra o custo.
Canary
Apenas uma pequena porcao do trafego (por exemplo, 10%) e enviada primeiro para a nova versao. Se nao aparecerem problemas, o percentual e aumentado gradualmente ate chegar a 100%.
!4 estratégias de implantação: All-at-once, Rolling, Blue/Green, Canary
Estrategias de Implantacao no Lambda
Versions e Aliases do Lambda
Version: Snapshot imutavel da funcao Lambda. $LATEST = estado mais recentemente modificado. Alias: Rotulo com nome que aponta para uma versao especifica (ex: "prod", "dev").
Distribuicao de trafego com Aliases
Voce pode conectar duas versoes a um unico alias com pesos de trafego.
Exemplo: alias prod -> versao 1 (90%) + versao 2 (10%) = implantacao canario.
Integracao com AWS CodeDeploy: Canary10Percent5Minutes: 10% por 5 minutos, depois 100% Linear10PercentEvery1Minute: +10% a cada minuto AllAtOnce: 100% imediatamente
Rollback
Lambda: Mude o alias para a versao anterior (quase instantaneo) ECS: Atualize para Task Definition anterior EC2: Rollback via CodeDeploy
Pontos-Chave do Exame
"Novo ambiente, troca de trafego, rollback instantaneo" -- Blue/Green
"Teste com pouco trafego, expansao gradual" -- Canary
"Implantacao em lotes sequenciais" -- Rolling
"Nomear versao Lambda" -- Lambda Alias
"Dividir trafego Lambda entre duas versoes" -- Alias com pesos
"10% por 5 minutos depois tudo" -- Canary10Percent5Minutes
"Aumentar 10% a cada minuto" -- Linear10PercentEvery1Minute
"100% imediatamente" -- AllAtOnce
Blue/Green e a mais segura mas dobra o custo