AWS Black Belt LATAM 2023— Trilha de Containers
Como dito, o AWS Black Belt é um programa, onde há treinamentos dentro deste programa, sendo ele restrito a alguns profissionais, que devem cumprir com alguns critérios para participar, sendo eles, ser um profissional experiente em produtos AWS, conte com algumas das principais certificações como a Professional ea Specialty, pois em todo momento durante o programa será lembrado que esse é para Level 300 e esse programa é exclusivo para Parceiros AWS. Exclusividade.
Sobre o programa de treinamento
O treinamento ocorre durante 5 dias das 9h-13h, onde se tem contato com o horário de especialistas, vulgo Senseis, cuja função é capacitar os selecionados, essa capacitação acontece por meio de vivência, sim, nos afundam em um mar de conteúdo, palestras , documentações, boas práticas, laboratórios e Kahoot (Perguntas e respostas) ao final de cada dia. Acredite, é incrível receber muitas informações, poder praticar durante os laboratórios. Sempre que participamos, temos a sensação de estar recarregado e pronto para mudar o mundo.
Esse ano tivemos novas trilhas adicionadas ao programa e conforme listado a seguir:
Containers: 24 a 28 de Julho
Networking: 24 a 28 de Julho
Analytics: 21 a 25 de Agosto
Security: 18 a 22 de Setembro
VMware: 02 a 06 de Outubro
Migration: 02 a 06 de Outubro
AI/ML: 23 a 27 de Outubro
Database: 23 a 27 de Outubro
Microsoft: 06 a 10 de Novembro
Como dito, os pré-requisitos:
Containers
- Certificação Miníma
– Certificação Associate-level AWS (Arquiteto de Soluções, Desenvolvedor ou Administrador de SysOps). - Certificação Recomendada
– Certificação AWS de nível profissional (Solutions Architect, DevOps Engineer)
Rede
- Certificação Miníma
– Certificação Associate-level AWS (Arquiteto de Soluções ou Administrador de SysOps). - Certificação Recomendada
– Professional/Specialty-level AWS certification (Solutions Architect, Advanced Networking)
Análise
- Certificação Miníma
– Certificação Associate-level AWS (Arquiteto de Soluções, Desenvolvedor ou Administrador de SysOps). - Certificação Recomendada
– Certificação AWS Professional/Specialty-level (Solutions Architect, DevOps Engineer, Database, Machine Learning, Data Analytics)
Segurança
- Certificação Miníma
– Certificação Associate-level AWS (Arquiteto de Soluções ou Administrador de SysOps). - Certificação Recomendada
– Professional/Specialty-level AWS certification (Solutions Architect, DevOps Engineer, Security)
VMware
- Certificação Miníma
– Certificação Associate-level AWS (Arquiteto de Soluções ou Administrador de SysOps). - Certificação Recomendada
– Certificação AWS de nível profissional (Arquiteto de Soluções)
Migração
- Certificação Miníma
– Certificação Associate-level AWS (Arquiteto de Soluções, Desenvolvedor ou Administrador de SysOps). - Certificação Recomendada
– Certificação AWS Professional/Specialty-level (Solutions Architect, DevOps Engineer, Database, Advanced Networking, Security)
IA/ML
- Certificação Miníma
– Certificação Associate-level AWS (Arquiteto de Soluções, Desenvolvedor ou Administrador de SysOps). - Certificação Recomendada
– Professional/Specialty-level AWS certification (Solutions Architect, Machine Learning)
Base de dados
- Certificação Miníma
– Certificação Associate-level AWS (Arquiteto de Soluções, Desenvolvedor ou Administrador de SysOps). - Certificação Recomendada
– Certificação AWS Professional/Specialty-level (Solutions Architect, Database)
Microsoft
- Certificação Miníma
– Certificação Associate-level AWS (Arquiteto de Soluções, Desenvolvedor ou Administrador de SysOps). - Certificação Recomendada
– Professional/Specialty-level AWS certification (Solutions Architect, DevOps Engineer, Database)
OBS.: A Amazon Web Services, envia recomendações de cursos para serem feitos antes do evento, grande parte desses cursos estão na plataforma AWS Skill Builders
O que aconteceu nesses dias? Contaremos a vocês!
Dia 1
– Iniciou-se as 9h, havendo uma apresentação sobre o programa e trilha, após isso, começamos os treinamentos.
Sessão 1: O que há de novo?
Aqui foi dada uma visão geral sobre os principais serviços e funcionalidades lançados e anunciados nos últimos meses nos eventos Re:Invent e Re:Inforce;
– Service Connect — ECS
– VPC Lattice
– AWS Signer
– AWS ECR ( Pull Through cache e Scan contínuo com o AWS Inspector )
Sessão 2: AWS EKS Blueprints ( Laboratório )
Nessa sessão foram explicados os motivos e benefícios do uso do EKS Blueprints e nesse laboratório, há informações sobre o uso e disponibilidade de execução por meio de Terraform(TF) ou AWS CDK, vale lembrar que os módulos TF, são criados e esperados pela AWS , tendo assim qualidade e segurança no uso desses.
- Repositório EKS Blueprints:
https://github.com/aws-ia/terraform-aws-eks-blueprints - Laboratório
https://catalog.workshops.aws/eks-blueprints-terraform/en-US/010-introduction
Dia 2
Sessão 1: Estratégias de Auto Scaling
Aqui vimos uma visão sobre estratégias de dimensionamento, e o ponto impar é recursos de aplicação devem ser identificados continuamente, pois, assim o dimensionamento é eficiente, não se faz Scaling apenas com CPU e Memória, o contínuo se faz para ter situações reais de comportamento da aplicação durante o uso comum e atípico.
Mas veremos mais alguns pontos de atenção.
Pensando em provedor de capacidade, temos o AWS Fargate, esse já é nosso conhecido, mas em resumo, aqui você não se “preocupa” com o dimensionamento do recurso, pois aqui é “Provision e pagar pelos recursos que você precisa”.
Quando se usa EC2 como Capacity Provider, há todo um trabalho a se fazer e se pensar, pois, é de responsabilidade sua a escolha do tipo e tamanho da instância EC2, podendo faltar capacidade ou sobrar, e lembre-se, você está pagando por isso.
Seria mais um problema em dimensionamento em AWS ECS.
Já pensou em qual ordem de prioridade entre Infra x Aplicação? Qual deve escalar primeiro?
Quando a aplicação precisar escalar horizontalmente haverá um belo problema se estiver usando o EC2 como um provedor de capacidade e sabe o por quê?
Pois o processo de dimensionamento é:
ECS pub. Métricas CloudWatch -> Alarm o ASG -> Cria/inicia EC2 -> Posiciona as tasks nos host
Sessão 2: Cluster AutoScaler(CAS) vs Karpenter
Houve uma explicação sobre as diferenças e benefícios do uso de cada um desses e Karpenter é a melhor escolha.
Links:
CAS https://aws.github.io/aws-eks-best-practices/cluster-autoscaling/
Karpenter https://aws.github.io/aws-eks-best-practices/karpenter/
Sessão 3: Karpenter (Lab)
Link https://catalog.us-east-1.prod.workshops.aws/join?access-code=1537-0be113-0b
Sessão 4: KEDA — Kubernetes Event Driven AutoScaler (Demo)
Essa sessão é fantástica, o KEDA basicamente suporta centenas de eventos distintos e por meio deles você consegue escalar sua aplicação/cluster. Ou seja, use métricas, use o tamanho da sua fila SQS, use o SNS.
Dia 3
Sessão 1: O que é Service Mesh?
Uma service mesh, assim como o projeto open source Istio , é uma maneira de controlar como diferentes componentes de uma aplicação monitoram dados entre si. Diferentemente de outros sistemas de gerenciamento de comunicação, a service mesh é uma camada de infraestrutura dedicada, desenvolvida diretamente em uma aplicação. Essa camada de infraestrutura visível pode documentar o desempenho das emoções entre os diferentes componentes da aplicação, facilitando a otimização da comunicação e evitando o tempo de inatividade, conforme a aplicação evolui.
Assim, o Service mesh, permite que os desenvolvedores foquem na construção e implementação de lógica de negócios sem se preocupar com a complexidade no aspecto de comunicação de rede.
Como o Service mesh funciona?
Bom, o mesh trabalha com o padrão Sidecar, esse padrão é bem conhecido no Kubernetes e bem comum no mundo dos containers, e como o nome é auto sugestivo, sidecar é aquele “carrinho” que se prende ao lado das motocicletas e no mundo dos containers é igual, basicamente é um container proxy junto ao container de aplicação no mesmo pod(k8s) ou task(ecs), assim toda interação, comunicação passa por esse proxy e com isso possibilita o rastreamento distribuído, logging, health checks, rastreamento e configurações externalizadas.
Clique aqui para saber sobre a referência do sidecar
A seguir, é apresentada uma lista não detalhada das implementações atuais de service mesh:
Sessão 2: ECS Service Connect
Sem dúvida um dos melhores serviços apresentados, claro que Karpenter e KEDA são perfeitos e ajudam muito, mas o Service Connect, vale sua atenção e listá-lo como lição de casa. Mas agora, vamos pincelar sobre o apresentado.
O que é o AWS ECS Service Connect ?
É um recurso de redes que simplifica a descoberta, a conectividade e a observabilidade de tráfego de serviços para o Amazon ECS. O Service Connect ajuda a acelerar a criação de aplicações, permitindo que você mantenha o foco no código da aplicação e não se preocupe com a infraestrutura de rede.
Agora, você pode usar o Amazon ECS Service Connect para definir nomes mais simples para os endpoints de serviços e usá-los nas aplicações clientes para conectar dependências. O Service Connect ajuda a enviar o tráfego a endpoints íntegros e oferece telemetria de tráfego avançado no console do Amazon ECS e no AWS CloudWatch. As implantações do Amazon ECS ficam mais robustas com o Service Connect, que oferece drenagem automática de conexões para ajudar os clientes a alternar para uma nova versão do endpoint de serviço sem enfrentar erros de tráfego.
Quais os benefícios do uso?
Simplicidade na descoberta dos seus ECS Services:
– Onde casa service(conjunto de tarefas) tem um nome simples ex.: backend
– Os Services são organizados em namespaces ex.: my-app.local
– Conexão entre cliente ao Services ex.: backend .my-app.local
– Os Services podem estar em outros clusters, não importa, deu nome e grupou em namespace.
Conectividade confiável entre os Serviços:
– Camada adicional de verificação de integridade do tráfego
– Endpoints que retornam erros são removidos do roteamento
– Re-tentativas em chamadas com falhas, sim, automaticamente.
– Suporta conexões TCP/HTTP1.x/HTTP 2.x/gRPC
Mais robustez nas implementações(os queridos Deployments):
– Suporte nativo de ECS Rolling deploys
– Zero-downtime em implementações com drenagem de conexão
– Mais agilidade nas implantações quando comparado ao ECS Service Discovery
Segue aqui uma imagem demonstrando como configurar o Connect.
Fantástico, não é mesmo?
Segue aqui um workshop onde temos mais informações par colocar em prática.
Sessão 3: App Mesh (Demonstração)
Nessa sessão foram apresentados os benefícios e funcionamento do App Mesh, um ponto importante é que o Mesh da AWS utiliza o Envoy por de baixo do capô e que ele se integra não somente com EKS e ECS, mas também com Docker no EC2.
Saiba mais nos links:
https://www.youtube.com/watch?v=1UDRGlmbiZA&t=9s
https://www.appmeshworkshop.com/
Sessão 4: VPC Lattice
Aqui, aprofundamos o conhecimento sobre esse serviço, que é razoavelmente novo.
O VPC Lattice foi projetado para ajudá-lo a descobrir, proteger, conectar e monitorar de maneira fácil e eficaz todos os serviços dentro dele. Cada componente dentro do VPC Lattice se comunica de forma unidirecional ou bidirecional dentro da rede de serviço com base em sua associação com a rede de serviço e suas configurações de acesso. As configurações de acesso são compostas por políticas de login e autorização necessárias para esta comunicação.
A ideia principal é facilitar e muito a comunicação e complexidade que é redes, gerenciá-las, dimensioná-las, configurá-las e mantê-las não são das tarefas mais triviais. Assim, temos facilidades como, fácil conectividade entre VPCs, Cluster e Contas AWS, rede integrada, segurança e observabilidade sem uso de sidecar, melhora na postura de segurança, controle fino e segmentado do trânsito e tudo isso sem necessidade de ser um especialista em redes, pois consolida o aspecto de rede tradicional para a camada de aplicação. Mostrar!
Clique aqui e veja uma referência.
Dia 4
Sessão 1: Otimização de custo a nível de cluster
Frase para se guardar: “Se você não consegue medir, você não consegue gerenciar” Autor desconhecido.
A ideia passada aqui é, precisar monitorar o custo do cluster, pois por padrão o EKS tem um gasto médio de $70/mês, pois o plano de controle é feito para garantir resiliência e o mínimo de nós são 3, assim, temos o custo fixo inicial. Mas como disse, se sua carga de trabalho aumenta, você deve medir para poder gerenciar. Qual estratégia devemos seguir?
Sim é clichê, por iniciar adição de Tags, como, a ws:eks:cluster-name, adicionada automaticamente pela AWS ao gerenciamento. Junto a isso temos ferramentas para suportar como o AWS Cost Explorer e o Cost and Usage Report, porém, isso pode ser ainda mais granular e bem feito com o auxílio de ferramentas de FinOps, ferramentas tais como:
- Nuvem Zero
- KubeCost
- Stormforge
Essas ferramentas ajudam no monitoramento granular dos custos, ou seja, com elas se pode saber o custo a nível de Pod, Services, Namespace e do Cluster. O Kubecost, realiza monitoramento em tempo real, realiza avaliação de custo e uso de forma granular [Service, Deployments, NS, label, StatefulSet, DemondSet, Pod e Containers] e para isso o mesmo necessita e faz uso do Prometheus
Nessa imagem podemos ver como ele funciona:
Vale lembrar que existe a opção opensource do KubeCost e essa se chama OpenCost .
Essa ferramenta deve compor sua plataforma EKS, pois assumiu muita visibilidade e controle dos custos.
Links:
https://www.cncf.io/blog/2022/05/11/adopting-finops-tool-for-pod-level-kubernetes-cost-management/
https://www.cncf.io/wp- content/uploads/2021/06/FINOPS_Kubernetes_Report.pdf
Sessão 2: Otimização na camada de computação (plano de dados)
No tópico anterior foi passado que a camada do Control Plane do EKS é gerenciada inteiramente pela AWS, mas e o Data Plane que são os responsáveis por carregar o piano, como que podemos otimizar o custo?
Foram apresentadas algumas estratégias para essa tarefa, mas primeiro vamos deixar claro que existem algumas opções para o plano de dados, sendo elas o querido Fargate, Amazon EKS Managed Nodes e Self-Managed Nodes. O Fargate já é um cara conhecido por nós e dispensa apresentações, mas e esse Gerenciado e Autogerenciado?
Resumidamente:
- Self-Managed, você é responsável por gerência-los, com essa opção é possível a escolha da AMI, podendo ser Bottlerocket, Firecracker, Windows entre outras e também escolher o tipo de instância a ser usado, porém, será de sua responsabilidade a aplicação dos Patch de correção.
- Managed Nodes a AWS é responsável por gerenciar os nodes, só necessitamos dizer algumas coisas como o tipo de instância EC2 deverá ser usado, mas não poderá dizer qual AMI será usado.
Como podemos fazer para otimizar os custos?
Aqui é muito importante se atentar no bom dimensionamento dos seus nodes, como também fazer escolhas sabias no tocar ao tipo de instância/família EC2 usar, como também considerar o uso de instâncias Spots.
A escolha do tipo de instância EC2 é usada.
A Amazon Web Services, dispõe de uma integração de tipos, tendo cada um o seu propósito, cada CA é otimizado para uma carga de trabalho, há desde EC2 para propósitos gerais Família M, como para propósitos de computação família C, como para Deep Learning as G ou P. Contudo a AWS oferece desempenho de preço de 40% melhor se até usar AWS Graviton, que é o processador desenvolvido pela Amazon, assim temos EC2 que fazem o uso desse, já se tem um extenso ecossistema, permitindo o uso de boa parte dos sistemas operacionais Linux mais populares, juto com muitos outros aplicativos e serviços da AWS e ISVs.
Instâncias pontuais
As instâncias do tipo Spot, são recursos que são provisionados a partir de capacidade ociosa, usando a mesma infra do on-demand, ou seja, capacidade sobressalente da infraestrutura de Amazon EC2, possibilita isso e muito mais, a Spot pode ser até 90% mais barato comparado com o on-demand, esse preço é baseado na oferta e demanda de longo prazo, o on-demand precisa de capacidade, a AWS pode disparar um aviso prévio de 2 minutos avisando que essa instância/capacidade foi necessária e que será interrompido esse Spot, e em alguns casos esse aviso corre o risco de não chegar.
Porém, o suporte e integração com o EKS Managed Node Groups e com o Auto Scaling, permitindo que você remaneje sua frota. Lembre-se, esse comportamento se dá pela natureza do Spot. A uma dica ao utilizar Spot, Diversificação e flexibilidade essas são as chaves, pois ao fazer o uso de diferentes tipos de instâncias, tamanho, zonas de disponibilidade e regiões, terá mais opções e menor probabilidade de ficar sem capacidade de Spot Disponível.
Dica: Use mix de Spot e On demand!
Segue aqui uma lista de ferramentas para uso do Spot.
- Spot Blueprints
Gerador de código de infra, com arquitetura referenciada para o uso do EC2 Spot. - Seleção de Instância baseada em Atributo
Em vez de selecionar tipos específicos de instância, essa ferramenta permite provisionar capacidade em atributos de inst. dependendo dos requisitos, também suportando novas instâncias assim que elas se tornarem disponíveis. - Spot Placement Score(SPS)
Encontre local ideal (Reg/AZ) para suas cargas de trabalho. Você fornece os requisitos de recursos e capacidade e o SPS, recomenda os locais e a probabilidade de obter a capacidade necessária. - Fault Injection Simulator (FIS)
Habilita a engenharia do caos e oferece suporte à imitação de interrupção do Spot, permitindo que você comprove a resiliência das cargas de trabalho executadas no Spot.
Sessão 3: Kubecost (Laboratório)
Esse laboratório é focado na ferramenta Kubecost e seu funcionamento e interface do produto. https://kubecost.awsworkshop.io/
Dia 5
Sessão 1: Boas práticas em arquitetura de microserviços
O que importa ter uma infra resiliente, seguindo as dicas de otimização de custo, desempenho e tudo de mais útil e poderoso para tal, se sua aplicação não faz jus disso?
Aqui se faz importante essa sessão, que demonstrou não uma abordagem, mas diversas e vamos pontuar algumas aqui.
Como construir Software como Serviço?
Há metodologias que auxiliam a construção dessas, veja:
- 12-Factor App Principal
Na era moderna, o software é comumente entregue como um serviço: denominados web apps , ou software-como-serviço . A aplicação doze fatores é uma metodologia para construir softwares-como-serviço. - Arquitetura Hexagonal
O princípio base aqui é ter sua regra de negócio apartada e sem uso de framework algum para construi-la, como também ter adaptador e portas para integrar e interagir com os outros serviços, tendo como ideia construir sistemas que favoreçam a reutilização de código, alta coesão, baixo acoplamento, independência de tecnologia e que são mais fáceis de serem testados.
Fora falado de diversos distúrbios, como o Circuit Break, Retry Pattern entre outros.
Sessão 2: Conceitos de segurança em Pod
Matriz de responsabilidade
A AWS é responsável por manter a segurança da nuvem e você cliente é responsável por manter a segurança na nuvem.
Padrão de segurança de pods (PSS)
Defina três políticas diferentes para amplamente o espectro de segurança. Essas políticas são cumulativas e variam de altamente permissivas a altamente restritivas.
- Privilegiado → Política sem restrições
- Baseline → Politica minimamente restritiva
- Restrito → Política fortemente restrita, seguindo as melhores práticas
Admissão de segurança de pod (PSA)
Elenque diferentes níveis de isolamento para pods. Esses padrões permitem definir como você deseja restringir o comportamento dos pods de maneira clara e consistente. O Kubernetes oferece um controle de admissão de segurança de pod integrado para adotar os padrões de segurança. As restrições de segurança do pod são aplicadas no nível do namespace quando os pods são criados.
Política como Código (PaC)
Assim como pensar em Infra-as-Code, o mesmo se dá para PaC, a ideia é ter os mesmos ganhos, como versionamento, gerenciamento de mudanças e todo o cliclo que pode ser tratado um código.
Se pensar que em k8s, tudo se da por meio de linguagem declarativa como YAML e Json, essa forma de ligar com políticas, me parece caber como uma luva tanto para o usuário/administrador como para a plataforma.
Dado nossa empolgação em escrever e sintetizar, acredito que passamos o quão válido é participar desse programa, o aprendizado é imersivo a ponto da cabeça ferver, o tempo é preciso e cada segundo é uma chuva de informações e isso tudo sendo passado de forma clara, por especialistas da empresa que mantêm e cria esses serviços.
Estamos renovados e ansiosos para ajudarmos clientes e comunidade. Esse programa é encorajador.