Compute - ribeiry/AWS-Professional-Study GitHub Wiki

Docker

Produtos que podem rodar o docker Nativamente (Sem a necessidade de instalação) Fargate, ECS e Elastic BeanStalk

Amazon Workspace

Desktop Virtual AWS

Appstream

Stream de uma aplicação de Desktop. Voce instala no desktop que tem a aplicação para efetuar o stream da aplicação.

CDK

The AWS CDK is a software development framework for defining cloud infrastructure in code and provisioning it through AWS CloudFormation. You can use the AWS CDK to define your cloud resources in a familiar programming language. The AWS CDK supports TypeScript, JavaScript, Python, Java, and C#/.Net.

Developers can use one of the supported programming languages to define reusable cloud components known as Constructs.

CDK

Elastic BeanStalk

  • Características do Serviço :

    • Utiliza componentes como : EC2, Auto Scaling Group, Elastic Load Balancers, RDS, etc…
    • Anexar uma instância de banco de dados RDS a um ambiente Elastic Beanstalk é ideal para ambientes de desenvolvimento e teste. No entanto, não é recomendado para ambientes de produção porque o ciclo de vida da instância de banco de dados está vinculado ao ciclo de vida do seu ambiente de aplicativo. Se você encerrar o ambiente, perderá seus dados porque a instância de banco de dados do RDS foi excluída pelo ambiente.
    • O ASG pode combinar as opções de compra do Amazon EC2 e manter uma combinação de instâncias sob demanda e spot.
    • Logs de aplicação são armazenados no S3
    • Arquivos de log do servidor podem opcionalmente serem armazenados em um S3 ou em um CloudWatch Logs
    • Permite controle administrativo ao cluster EC2, pode ser acessado via SSH.
    • Composto por três componentes:
      • Aplicação
      • Versão
      • Ambiente
    • Suporte ao Docker
    • Economia de custo :
      • Para economia de custo, o ambiente pode ser provisionado e encerrado através de uma Lambda execution role concedendo as permissões de ambiente do Elastic Beanstalk necessárias e atribua a role às funções do Lambda. Configure regras do Amazon CloudWatch Events baseadas em expressão cron para trigar as funções do Lambda
  • Deployment :

    • With AWS Elastic Beanstalk you can perform a blue/green deployment, where you deploy the new version to a separate environment, and then swap CNAMEs of the two environments to redirect traffic to the new version instant
  • Link de Ambiente :

    • À medida que seu aplicativo aumenta de tamanho e complexidade, você pode dividi-lo em componentes com diferentes ciclos de vida operacionais e de desenvolvimento. Ao executar serviços menores que interagem com os outros por uma interface bem definida, as equipes podem trabalhar de forma independente, e implantações podem ser de menor risco. O AWS Elastic Beanstalk permite vincular seus ambientes para compartilhar informações entre componentes que dependem um do outro.
    • Atualmente, o Elastic Beanstalk é compatível com links de ambiente para todas as plataformas, exceto Docker de vários contêineres.
    • Com os links de ambiente, você pode especificar as conexões entre os ambientes de componentes do aplicativo como referências nomeadas. Quando um ambiente que define um link é criado, o Elastic Beanstalk define uma variável de ambiente com o mesmo nome do link. O valor da variável é o endpoint que você pode usar para se conectar a outro componente, que pode ser um servidor Web ou ambiente de operador. Por exemplo, se o aplicativo é composto de um front-end que coleta endereços de e-mail e um operador que envia e-mail de boas-vindas para os endereços coletados pelo front-end, você pode criar um link para o operador do front-end e o front-end descobrir automaticamente o endpoint (URL da fila) para o operador.

Serveless

A computação 'sem servidor' não consiste em eliminar servidores, mas em transferir a maior parte da responsabilidade pela infraestrutura e operação da infraestrutura para um fornecedor, para que você possa se concentrar mais nos serviços de negócios.

Lambda

  • Serviços que acessam : ELB, Kinesys, SQS, API Gateway
  • Cobrado por quantidade de memoria e tempo de consumo.
  • Tempo máximo de execução de uma função Lambda é de 15 min.
  • Maximo de memoria ram que se pode alocar é 10 GB
  • As variaveis de ambiente não podem ter mais que 4kbs
  • Quando ele é engatilhado por outros serviços AWS você não controla tipo da função (Sincrono ou Assíncrono)
  • SAM (Serveless Application Model) Framework de Desenvolvimento Lambda, Dynamo, API Gateway Localmente
  • Lambda rastreia automaticamente e reporta através do cloudwatch as seguintes métricas :
    • number of requests,
    • latency per request,
    • number of requests resulting in an error.
  • Lambda pode acessar recursos em uma subnete privada de uma VPC. Para habilitar o suporte a VPC, você precisa especificar uma ou mais subnets em um único VPC e um grupo de segurança como parte da configuração da função.

Lambda Edge

  • Lambda que fica deployado nas Edge location
  • Trabalha junto com o CloudFront
  • Pode ser usada em diversos cenarios como:
    • Customização de request
    • Autenticação e Autorização de usuarios;
    • SEO
    • Transformação de Imagens em Tempo Real

AWS Lambda Alias

  • Alias são pontos de versões do Lambda
  • Alias são mutaveis
  • Voce pode definir Alias para o ambiente do qual aquele Lambda pertence
  • Através do Alias você pode definir uma estratrégia de deployment blue/green ou até canary release

AWS Lambda HardLimit

  • 128M até 3G de RAM
  • CPU não pode ser setado manualmente, apartir de 1.5 GB de RAM voce ja tem 2vCPU
  • Tempo de resposta maximo de 15 minutos
  • Concorrencia máxima de 1000
  • /tmp no maximo de 512 MB

Lambda Redes

Por padrão, uma função do Lambda é executada em uma VPC segura com acesso aos serviços da AWS e à Internet. O Lambda possui esta VPC, que não está conectada à VPC padrão da sua conta. Quando você conecta uma função a uma VPC em sua conta, a função não pode acessar a Internet, a menos que sua VPC forneça acesso.

O acesso à Internet de uma sub-rede privada requer NAT (conversão de endereços de rede). Para dar à sua função acesso à Internet, roteie o tráfego de saída para um gateway NAT em uma sub-rede pública. O gateway NAT tem um endereço IP público e pode se conectar à Internet por meio do gateway de Internet da VPC.Por exemplo:

Sua função pode interagir com AWS DynamoDb API para PutItem ou queries para dados. Voce deve somente habilitar suas funções para VPC quando voce precisa para interagir com um recurso privado locado em uma private subnet. Um RDS instancia é um bom exemplo.

Proxy Lambda :

Todas a solicitação para o URL do APIGateway é encaminhada direto para o Lambda e a resposta é enviada de Lambda. ou seja, nenhuma modificação no solicitação (parâmetros de consulta, corpo, variáveis) e resposta (código de status, mensagem) são feitas pela APIGateway.

ECS

Fargate :

O cluster é rodando em cima de uma infraestrurua servelesss, necessidade menor de gerenciamento, menos controle sobre a infraestrurua.

EC2 :

O cluster roda em cima de instancia EC2 que você tem a necessidade de gerenciar, e tem portanto mais controle. Para custo mais efetivo pode ser utilizado fleet de instancias spot.

Task Definition :

Para rodar a sua aplicação no ECS, deve ser criado task definition. Task definition é um json que descreve um ou mais containers (até 10), que formam a aplicação. Ele especifica varios parametros da sua aplicação como qual container deve ser usado, qual porta deve ser aberta para aplicação, qual data volume deve ser usado e assim por diante. A task definition pode rodar uma task individual ou tasks dentro de um serviço. Nesse contexto, um serviço é uma configuração que habilita você rodar e gerenciar um numero especifico de tasks simultaneamente em um cluster.

Roles :

Você pode associar uma função do IAM a uma definição de tarefa (task) do ECS ou à operação da API RunTask. Você define a função do IAM a usar em suas definições de tarefa, ou pode usar um cancelamento taskRoleArn ao executar uma tarefa manualmente com a operação da API RunTask

Spot Instance em cluster de ECS

Com provisionamento no modelo Spot, voce pode prover uma estratrégia de alocação entre "Diversified" ou "Lowest Price" qual voce irá definir como a instancia Spot irá ser provisionada. EC2 Spot apresenta uma boa escolha para containers por que são workloads naturais, do qual permitem interrupções. O recomendado para como melhor pratica é voce selecionar estratrégia "Diversified", para maximizar a escolha de provisionamento, enquanto reduz os custos. Se você quer otimizar os custos e escolher uma instancias que é de baixo custo, selecione a opção "Lowest Price".

Cluster Auto Scaling (CAS)

Instancia warm-up define o numero de segundos que tem para que uma instancia nova seja iniciada. Uma vez especificada o tempo de warm-up expira, a instancia contado agregrado a metrica de Auto Scaling Group, e CAS processa junto com a proxima iteração de calculos estimados, o numero de instancias requerida. Isso preve que o ASG pode adicionar mais instancias do que necessário. Antes de iniciar. Antes de iniciar a instancia o tempo de warm-up é setado como default no valor de 3000 segundos. Agora, voce pode especificar uma instancia custom do tempo de warm-up quando voce cria uma nova capacidade para prover ou atualizar a existencia de um AWS SDK ou CLI, fazendo a escala mais responsiva.

Com CAS a politica de escala do seu ASG é gerenciada por ECS atraves da capacidade de prover. Voce pode configurar a capacidade de prover e habilitar e gerenciar o ASG, reservando o excesso de capacidade do ASG e tambem o gerenciamento de finalização de instancias do ASG.

EC2 Instance:

Spot Instance

Instancia temporária, útil para trabalhos que podem ser interrompidos.

  • Tipos de Request :
    • Única : Uma solicitação de Instância spot única permanece ativa até o Amazon EC2 executar a Instância spot, a solicitação expirar ou você cancelar a solicitação.

    • Persistente : Uma solicitação de Instância spot persistente permanecerá ativa até expirar ou até que você a cancele, mesmo se a solicitação tiver sido atendida.

Spot blocks

permitem que você solicite instâncias Spot do Amazon EC2 de 1 a 6 horas por vez para evitar ser interrompido enquanto seu trabalho é concluído.

Spot Fleets

Conjunto de Spot Instances + (optional) On-Demand Instances

Documento de identidade da Instancia

  • Cada instancia que é iniciada recebe um documento de identidade com informações sobre a instancia que é exposto através do serviço de Metadados da instancia. Os atributos são :
    • devpayProductCodes
    • marketplaceProductCodes
    • availabilityZone
    • privateIp
    • version
    • instanceId
    • billingProducts
    • instanceType
    • accountId
    • imageId
    • pendingTime
    • architecture
    • kernelId
    • ramdiskId
    • region

Custos

Estados que são cobrados (Instancia reservada) :

  • stopping
  • terminated/stoped Estado que não são cobrados (Outros)
  • pending
  • stoped
  • terminated

Opções de Compra de Instancia (do mais caro para o mais barato)

  • Host Dedicada
  • On-Demand
  • Savings Plans (compromisso de uso específico (medido em USD/hora) por um período de um ou três anos) e exitem três tipos :
    • Compute Savings Plans (Amazon EC2, AWS Lambda e AWS Fargate),
    • EC2 Instance Savings Plans (EC2)
    • Amazon SageMaker Savings Plans (Sage Maker)
  • Reservadas (Exige contrato mínimo de um ou três anos)
  • Reservada de Capacidade sob Demanda (Não existe tempo de reservada)
  • Spot (a cobrança é feita do valor no momento que ela se inicia, sendo o valor cobrado pelo tempo que ela ficou em execução)
    • pode receber avisos de dois minutos antes que a instâncias sejam encerradas, dando a seus aplicativos tempo para se prepararem para um desligamento normal (por exemplo, marcando dados importantes para armazenamento persistente).

Tipos de EC2

  • EC2-Classic : Instancias EC2 que foram utilizadas até 2013, não havia associação com a VPC

  • EC2-VPC : Plataforma de Instancias EC2 após 2013, há associação com a VPC que pode ser Default ou Custom

Tenancy

Existem os segintes tipos de tenancy de instancias :

  • Default :

    É uma instancia executada em um hardware é compartilhado por padrão.

  • Dedicated :

    Sua instância é executada no hardware de um único usuário.

  • Host :

    Sua instância é executada em um Host dedicado, que é um servidor isolado com configurações que você pode controlar.

Obs.: Não é possível trocar de Tenancy de instancia de Default para Dedicated, de Default para Host ou vice versa. A troca só é permitida de Dedicated para Host ou Host para Dedicated, e não exige tempo de contrato.

Instancias Dedicadas x Hosts Dedicadas

Caracteristicas Instâncias dedicadas Hosts dedicados
Permite o uso de servidores físicos dedicados Sim Sim
Faturamento por instância (sujeito a uma taxa de 2¬USD por região) Sim
Faturamento por host Sim
Visibilidade de soquetes, núcleos, IDs de host Sim
Afinidade entre um host e uma instância Sim
Inserção de instância específica Sim
Inserção de instância automática Sim Sim
Adicione capacidade usando uma solicitação de alocação Sim

Tipos de Instancias

  • Storage Optimized Instances :

    Sequential read and write access to very large data sets on local storage. They are optimized to deliver tens of thousands of low-latency, random I/O operations per second (IOPS) to applications.

  • Memory Optimized Instances :

    Are designed to deliver fast performance for workloads that process large data sets in memory

  • Compute Optimized Instances :

    Are ideal for compute-bound applications that benefit from high-performance processors, such as batch processing workloads and media transcoding.

  • General Purpose Instances :

    They provide a balance of compute, memory, and networking resources, and can be used for a variety of workloads.

    • instancias Burstable
      • Instancias EC2 burstable consiste em instancias do tipo T4g,T3a e T3, e são prévias da gereção da instancia do tipo T2.

      • Instancia do tipo T4g são a ultima geração de instancia burstable. Eles prove o melhor preço e performance e prove a voce baixo custo de todas as instancias do tipo EC2. A instancia do tipo T4g são desenvolvido por Arm-base Graviton processador.

Obs.:

  • Limite de 20 instancias por região, para cada nova conta. Pode ser requisitado à AWS um formulário para aumento de capacidade.
  • Endereço de IP público não é gerenciável, e é ephemeral

Placement Group

  • Cluster :

    Um cluster (ou rack ) de servidores no placement group - Mesma AZ, alta performace, menos disponibilidade (jobs que precisam ser completados rapidamente, como de Big Data)

  • Partition :

    Usado em agrupamentos e para sistemas divido entre AZs - Melhor workload distribuído e replicado, mais disponibilidade do que o Cluster (Aplicações que precisam melhorar a disponibilidade)

  • Spread :

    Dividido entre AZs - Instancia separadas, mais disponibilidade, e alta distribuição (HDFS, Kafka)

Placement Group drawio

Obs.: Não existe limite para número de instancias alocadas, no entanto se ao adicionar uma instancia ocorrer "insufficient capacity error." você deve reiniciar as instancias do placemente group, restartando as instancias podem migra para um hardware que tenha a capacidade para todas as instancias requisitadas.

Métricas:

Metricas default de EC2 enviadas ao CloudWatch :

  • CPU
  • Disk
  • Network
  • Metadata

Configuração padrão : Enviadas a cada 5 minutos. Configurações Detalhadas : Enviadas a cada 1 minuto.

Tipos de Virtualização

Obs.: Com o tempo, todos os tipos de instancias usarão Hypervisor Nitro, hoje dependendo do tipo de plataforma ainda é utilizada Hypervisor Xen.

Hosting Instance

Alteração de hospedagem de instancia pode ser feita via CLI, SDK ou API. Para alterar hospedagem de intancia já existente é necessário pará-la.

Migração de Rede

Não é possível mover uma instancia existente para outra subnet, Availability Zone, ou VPC.

Status da Instancia

Instancias em Stand by : Standby state pode ser usado para realizar atualizações / alterações / solução de problemas, etc., sem que verificações de saúde sejam realizadas ou instâncias de substituição sejam iniciadas.

Amazon Machine Image (AMI)

  • Recursos que devem ser copiados manualmente quando copiado um AMI :
    • S3 Bucket permission
    • Launch Permission
    • User Defined-Tag
  • Ao definir uma nova imagem uma launch configuration é necessária.
  • Pode ser copiada entre Regiões
  • Pode ser compartilhada entre Contas.

AWS Batch

AWS Batch é um serviço totalmente gerenciado que habilita voce executar em grande escala workloads de computação sem provisionar fontes ou gerenciamento de agendamento.AWS BATCH diponibiliza desenvolvedores ou cientistas e engenheiros facilmente e eficientemente rodar centenas de milhares batch computacionais na AWS.AWS Batch provisiona dinamicamente e otimiza quantidade e tipos de computadores(por exemplo CPU ou Memoria otimizadas por instancias) baseado no volume e especifico requerimento do job submetido.Esse plano de agendemento e execução de seu batch como EC2 e Spot Instances.Sem a necessidade de instalar ou gerenciar o a computação em batch ou servidor cluster necessario para executar os seus jobs,voce pode analizar resultados e ganho de novos insights. AWS Batch é um serviço totalmente gerenciado que habilita voce executar em grande escala workloads de computação sem provisionar fontes ou gerenciamento de agendamento.AWS BATCH diponibiliza desenvolvedores ou cientistas e engenheiros facilmente e eficientemente rodar centenas de milhares batch computacionais na AWS.AWS Batch provisiona dinamicamente e otimiza quantidade e tipos de computadores(por exemplo CPU ou Memoria otimizadas por instancias) baseado no volume e especifico requerimento do job submetido.Esse plano de agendemento e execução de seu batch como EC2 e Spot Instances.Sem a necessidade de instalar ou gerenciar o a computação em batch ou servidor cluster necessario para executar os seus jobs,voce pode analizar resultados e ganho de novos insights. Com AWS Batch seu pacote de aplicações em um container especifico ou suas dempendencias são enviados para o seu job usando o AWS Gerenciamento de Console, o CLI ou um SDK. Voce pode especificar a execução de parametros e dempendencia de jobs integrado com uma ampla gama de engines de workflow e linguagens(Como por exemplo Pegasus WMS, Luigi e AWS Step Functions).AWS Batch prove por padrão jobs e filas e ambientes computacionais definidos quando voce inicia o job.

  • A Orquestração dos Jobs Batch pode ser usado o Step Functions
  • Não precisa de gerenciamento de cluster, totalmente serverless
  • Pode ser usado com instancias spot
  • Batch Multi Node
    • Grande Escala, bom para HPC
    • Não trabalha com instancias spot

Metadata e User Data

  • User data is data that is supplied by the user at instance launch in the form of a script.
  • Instance metadata is data about your instance that you can use to configure or manage the running instance.
  • User data is limited to 16KB.
  • User data and metadata are not encrypted.
  • Instance metadata is available at http://169.254.169.254/latest/meta-data/ (the trailing “/” is required).
  • Instance user data is available at: http://169.254.169.254/latest/user-data.
  • The IP address 169.254.169.254 is a link-local address and is valid only from the instance.
  • On Linux you can use the curl command to view metadata and userdata, e.g.
  • “curl http://169.254.169.254/latest/meta-data/”.

Gerenciamento

Opswork

Opsworks é um serviço de gerenciamento de configurações de instancias gerenciadas do Chef e do Puppet, platafomas de automação que permite usar código para automatizar a configuração de servidores.

  • São três tipos :

    • OpsWorks for Chef Automate :

      • Serviço de gerenciamento de configuração que hospeda o Chef Automate (Se vc já for usuário do Chef, escolha o AWS OpsWorks for Chef Automate)
    • OpsWorks for Puppet Enterprise :

      • Serviço de gerenciamento de configuração que hospeda o Chef Puppet (Se vc já for usuário do Chef, escolha o AWS OpsWorks for Chef Puppet)
    • OpsWorks Stacks :

      • Serviço de gerenciamento de aplicativos e servidores, com o OpsWorks Stacks você pode modelar o aplicativo como um stack contendo várias layers, como balanceamento de carga e servidor de aplicativo em cada camada, provisionar instancias EC2, habilitar escalabilidade e configurar instancias com receitas do Chef usando o Chef Solo
  • Características do serviço :

    • A Canary deployment is not supported by AWS OpsWorks. Only Blue/Green

DML

Amazon Data Lifecycle Manager (Amazon DLM) para automatizar a criação, retenção e exclusão de instantâneos tirados para fazer backup de seus volumes do Amazon EBS. Automatizar o gerenciamento de instantâneos ajuda você a:

  • Proteja dados valiosos, impondo uma programação de backup regular.
  • Reter backups conforme exigido pelos auditores ou conformidade interna.
  • Reduza os custos de armazenamento excluindo backups desatualizados.

EC2 Config

EC2 Config é uma ferramenta de inicialização que executa tarefas durante a inicialização de servidores baseados em Windows. O EC2Launch substituiu o EC2Config nas AMIs do Windows para o Windows Server 2016 e posterior.