
Apresentação do curso
Este vídeo, em forma de agenda, contém a linha do tempo do que será visto em cada fase do projeto.
Acessando o repositório público do projeto vue3-events-app e conhecendo as pastas do frontend e do backend.
Deixei anexo o seguinte arquivo setup-aws-ec2-linux.txt que por sua vez contém os comandos necessários que serão utilizados nas aulas seguintes
Neste vídeo o frontend não consegue conectar-se ao backend porque a URL usada para o backend está incorreta. Conseguimos inspecionar o tráfego enviado através das ferramentas de desenvolvimento ou simplesmente pressionando as teclas: CTRL + SHIFT + I
Nesta aula criaremos nossa Hosting Zone usando o serviço Route 53 e então usaremos nossa conta no serviço amen.pt para editar os dados dos servidores para que desta forma a administração seja feita na AWS
Para este módulo faremos uso de um template HTML (um arquivo index.html) contendo o script básico para visualização da nossa página na bucket s3. Também será preciso fazermos uso do script JSON contendo as permissões necessárias para visualização do conteúdo publicado.
Exemplo do arquivo JSON
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::aws-hosting-strategies.com/*"
}
]
}
Ao invés de fazermos uso do domain gerado pela AWS, usaremos o nosso Domain que foi criado no site amen.pt e redirecionar as requisições para a nossa bucket. Desta forma teremos uma URL mais amigáveis
Nesta aula iremos duplicar o conteúdo da nossa Bucket S3 a fim de compararmos o tempo de acesso ao nossi site usando o acesso direto a Bucket x Cloudfront.
Após criação do CloudFront e publicação da distribuição é importante nos certificarmos de que as permissões foram devidamente atualizadas na Bucket. Também é preciso esperar um tempinho para que após a criação da Bucket a publicação esteja disponível.
É possível através do browser identificar a origem usada para publicar o conteúdo. Se o conteúdo que estamos acessando é oriundo da própria Bucket S3 ou se foi distribuido por meio do CloudFront.
O amplify também nos permite acessar um repositório usando o GitHub, realizar o build da aplicação e deploy do conteúdo que foi disponibilizado em uma pasta de saída, como a pasta "dist" por exemplo. Nesta aula iremos configurar os passos para conceder acesso ao nosso repositório bem como definir a linha de comando que será responsável por construir a nossa app.
A criação de modelos e imagens pode ser uma excelente estratégia para ganharmos tempo. Neste vídeo veremos como criar uma réplica da nossa instância contendo um Snapshot do nosso disco que servirá de base para criação de outras instâncias EC2.
Ao clonar a primeira instância nos deparamos com um problema relacionado a mudança de IP. Nesta aula abordaremos algumas soluções para o problema com as vantagens e desvantagens.
Nesta aula teremos a oportunidade de configurar um load balancer para o nosso projeto de backend e com isso não precisar mais relaizar requisições através de endereços IP. Nesta estratégia iremos também aprender como trabalhar com Target Groups e definir políticas para validar o estado da nossa aplicação. E por último definir um subdomain "ec2-backend" para facilitar a identificação da rota usada pelo backend end.
Nesta aula veremos como reutilizar o Load Balancer para que ele possa redirecionar o fluxo para mais de um Target Group. Iremos criar um grupo chamado target-group-frontend mapeamento a porta 8085 e outro grupo chamado target-group-backend mapeamento a porta 8086. Pelo cabeçalho da requisição faremos o redirecionamento ao grupo correto.
Como a nossa imagem docker criada para o frontend fazia referência a um endereço IP que facilmente poderia ser substituido, nesta aula iremos gerar uma nova imagem docker para o frontend usando como API uma URL contendo um domain.
Nesta aula de introdução iremos criar uma nova conta de usuário para ser usada no processo de autenticação usando AWS CLI. Em anexto temos os scripts para instalação da AWS command line.
Nesta aula criaremos um repositório para o nosso curso usando AWS Container Registry, faremos o setup da ferramenta de linha de comando AWSCLI e por último o build e envio da imagem do projeto de backend.
Este setup é essencial pois é um pré-requisito para o nosso backend container que será publicado junto ao ECS
Em anexo temos o script para instalação da ferramenta redis-tools
Chegou a hora de executar o nosso backend sob a estrutura do nosso Cluster ECS AwsUdemyDev. E para isso iremos criar uma task definition contendo as informações do container bem como as variáveis de ambiente que são necessárias para conexão entre o backend e o elastic cache.
Atenção!
REDIS_HOST_TYPE=REDIS_AMAZON_OSS
REDIS_HOST=clustercfg.awsredis.uzxmqs.use1.cache.amazonaws.com:6379
A variável REDIS_HOST deverá ser atualizada para as configurações do cluster em uso.
Overview do que veremos neste módulo. Começamos por falar sobre a importância dos conceitos envolvendo uma VPC como Block CIDR, Sub net, Route Table, Internet Gateway e Nat Gateway.
Nesta aula abordarei conceitos importante sobre a configuração do CIDR em uma VPC. Sabe o que significa o bloco 192.168.0.1/16? E se for 10.0.1.8/20? Veremos o significado destas regras de formação nesta aula.
Nesta aula entenderemos o funcionamento da tabela de roteamento usada dentro de uma VPC. Como definir regras para que uma rede possa ter acesso a máquinas dentro da própria rede e como criar regras para que esta máquina possa também ter acesso a internet.
Para finalizar os conceitos introdutórios sobre VPC, nesta aula abordaremos os detalhes associados ao Internet Gateway e a sua principal diferença entre ele e o Nat Gateway.
Nesta aula apresentaremos o script terraform que será usado para criação da nossa VPC. Esta rede será usada para criar uma subnet pública e outra privada sendo que a pública terá uma tabela de roteamento definida e vinculada a Internet Gateway.
Veremos de forma prática como criar a nossa VPC seguindo as configurações do nosso script terraform.
Seguindo a orientação do nosso script terraform, iremos agora adicionar duas subnets, uma para rede pública e outra para rede privada. E com isso definir a auto atribuição de endereços IP públicos.
Nesta aula iremos criar duas tabelas de roteamento, uma para rede pública associada a nossa Internet Gateway e outra privada sem esta associação.
Nesta aula adicionaremos uma instância EC2 para a nossa rede pública bem como um novo grupo de segurança para as regras de acesso a esta máquina usando a nossa chave pem.
Nesta aula adicionaremos uma instância EC2 para a nossa rede privada reutilizando o grupo de segurança e a chave pem.
Nesta aula iremos alterar as regras de segurança para que seja possível executar o comando PING entre as máquinas bem como verificar o acesso local a máquina remota através do PING. Veremos que as conectividades e atribuições de IP foram realizadas com sucesso.
Esta aula é super interessante! Iremos usar a máquina pública bem como alterações no grupo de segurança para permitir o acesso SSH entre as máquinas de um mesmo grupo. Depois usamos o comando SCP para enviar arquivos locais ao servidor remoto.
Enviando o arquivo udemy-aws-hosting-strategy.pem a pasta /tmp da máquina pública
Atenção!
Acesse a pasta local onde encontra-se o arquivo "udemy-aws-hosting-strategy.pem"! No meu computador esta pasta fica em "C:\Users\rmatos\.ssh"
Exemplo do comando scp
scp -i udemy-aws-hosting-strategy.pem ./udemy-aws-hosting-strategy.pem ubuntu@instancia-ec2:/tmp
Uma vez tendo o arquivo no servidor remoto, use o comando abaixo para ir a pasta ssh
cd ~/.ssh
Então use o comando abaixo para copiar a que foi enviada a pasta /tmp para a sua pasta .ssh
cp /tmp/udemy-aws-hosting-strategy.pem .
Agora use o comando chmod para conceder as permissões necessárias a este arquivo
chmod 400 udemy-aws-hosting-strategy.pem
Por último use o comando ssh para conectar a máquina privada (exemplo)
ssh -i "udemy-aws-hosting-strategy.pem" ubuntu@10.0.2.162
Não esquece de substituir os endereços IPs pois as máquinas possuem endereços dinâmicos.
Script utilizado durante a apresentação do módulo
ab -n 3000000 -c 1000 -p data.json -T 'application/json' -H 'accept: text/plain' -Z TLSv1.2 -k https://asg.aws-hosting-strategies.com/token
Agora que temos nosso ambiente configurado nas duas instâncias EC2, para este video deixei apenas a execução dos testes usando Apache Benchmarking contra o nosso load balancer via protocolo HTTP e não HTTPS. E para acompanhar o disparo do alarme quando a CPU atingir o percentual máximo permitido, iremos acompanhar a evolução do gráfico através de métricas configuradas via CloudWatch.
Neste curso prático, você aprenderá a utilizar as principais funcionalidades de hosting oferecidas pela Amazon Web Services (AWS) para construir, implantar e gerenciar um projeto completo, desde o frontend até o backend. O projeto abordado consiste em uma aplicação para a gestão de eventos, com frontend desenvolvido em Vue3 e backend em .NET Core, utilizando REDIS como armazenamento de dados.
Conteúdo Programático:
Amazon Route 53:
Configuração de DNS e gerenciamento de domínios.
Integração com outros serviços AWS para direcionar o tráfego de forma eficiente e segura
Amazon S3 (Simple Storage Service):
Aprenda a configurar buckets no Amazon S3 para armazenar arquivos estáticos, como imagens e documentos.
Implementação de boas práticas de segurança, versionamento e políticas de acesso.
Descubra como usar este serviço como Hosting para seu projeto de Frontend.
Amazon CloudFront:
Configuração e integração do CloudFront para distribuir conteúdo globalmente, garantindo baixa latência e alta disponibilidade.
Uso de CloudFront para otimizar a entrega de conteúdo da bucket S3 associada ao frontend da aplicação.
Amazon Amplify:
Descubra como o Amazon Amplify facilita a implantação e hospedagem do frontend em Vue3.
Integração do Amplify com o backend e com outros serviços AWS para criar um ambiente de desenvolvimento contínuo.
Amazon EC2 (Amazon Elastic Container Service):
Aprenderemos a provisionar e clonar instâncias EC2, usar o docker para construir imagens e realizar deploys em nossas instâncias
Configurar um Load Balance e definir regras para que um mesmo Load Balancer possa redirecionar o fluxo para diferentes aplicações
Usar o serviço Route 53 para gerenciar subdomains através do Load Balancer
Redirecionar fluxo HTTP para HTTPS
Amazon ECS (Elastic Container Service):
Implementação do backend em .NET Core utilizando containers Docker gerenciados pelo Amazon ECS.
Criação de cluster e tarefas ECS para gerenciar a escalabilidade e a alta disponibilidade da aplicação.
Usaremos o Container Registry como alternativa ao docker hub para hospedar as nossas imagens.
Amazon VPC (Virtual Private Cloud):
Entenda os conceitos necessários para configurar blocos CIDR, tabelas de roteamento, internet gateway e nat gateway.
Crie uma rede VPC com subnetes para acesso público e privado
Aprenda a criar instâncias EC2 e atribuí-las as respectivas redes
Descubra como acessar a sua instância privada e verificar as conectividades
Use Security Group para definir as políticas de acesso aos recursos da sua rede.
Amazon ASG (Auto Scaling Group):
Enderemos os conceitos envolvidos na criação de ASG e seus componentes.
Em cada etapa deste módulo iremos criar Imagens e Templates que serão usados pelo nosso ASG para gerir o o número de instâncias usadas pelo nosso Backend
Usando Docker faremos o deploy do nosso backend e com isso criar um Novo Target Group e Load Balancer bem como usar o Route 53 para acessar o backend por meio de uma URL mais amigável
Usando Apache Tools iremos realizar milhares de requisições contra o Load Balancer e ver o auto scaling em funcionamento reduzindo e aumentando o número de instâncias
Amazon EKS (Elastic Kubernetes Service):
Explore como utilizar o Amazon EKS para orquestrar containers Kubernetes.
Aprenda a configurar, escalar e monitorar aplicações em ambientes Kubernetes.
Usando Terraform faremos o provisionamento do nosso cluster e em alguns passos teremos o deploy em andamento e automatizado.
Veja como resolver problemas associados a permissões de usuários usando RBAC.
Estimativa de Custos com AWS Pricing Calculator:
Entenda como estimar os custos associados ao uso dos serviços AWS no projeto.
Configuração de cenários personalizados para prever gastos e otimizar recursos, garantindo a viabilidade financeira do projeto.
Revisão sobre Docker
Aprenderemos os conceitos básicos para executar containers e criar imagens docker
Também veremos como criar uma conta no Docker Hub e disponibilizar um repositório para provisionar nossas imagens
Faremos o Deploy das nossas imagens locais para o Docker Hub e então a partir da Cloud criaremos os nossos containers
Veremos como publicar uma página HTML dentro de um container NGINX e reutilizá-la