Entendendo a computação em nuvem: a instância EC2 da AWS

A instância do EC2 — como as instâncias do EC2 são criadas — instâncias do EC2 e regiões da AWS
Se você nunca ouviu falar da AWS, recomendo começar com este artigo que aborda os conceitos básicos de clientes, servidores, bancos de dados e computação em nuvem. Este artigo analisa alguns dos conceitos importantes, mas não fornece informações básicas sobre o funcionamento interno da Internet ou dos servidores.
Para um resumo rápido, a computação em nuvem é a venda de recursos de computação — pense em bancos de dados, servidores e software — pela Internet. Indivíduos, como você, podem alugar espaço e tempo na infraestrutura de hardware que os provedores de serviços em nuvem construíram em todo o mundo. Isso simplifica o processo de implantação de software.
Esqueça a configuração de infraestrutura dispendiosa e o desperdício de recursos. Pequenas empresas e indivíduos agora têm acesso a recursos que antes estavam disponíveis apenas para empresas da Fortune 500. Eles podem implantar aplicativos em todo o mundo com apenas alguns cliques e pagarão apenas pelos recursos que usarem, quando os usarem.
A Instância EC2
As instâncias do EC2 são servidores virtuais executados na infraestrutura de computação em nuvem da Amazon. Um servidor físico da AWS hospeda vários servidores virtuais EC2 convidados. Vamos detalhar isso observando os servidores do passado, as máquinas virtuais e como as máquinas virtuais se relacionam com as instâncias do EC2.
Servidores no passado
No passado, os servidores eram apenas enormes computadores físicos. Quanto mais poder de computação e armazenamento uma empresa precisasse, mais infraestrutura de hardware ela teria que construir. Havia um grande problema com esse paradigma: o desperdício de recursos. Um exemplo perfeito é um site que apresenta alto tráfego apenas durante determinadas épocas do ano. Digamos que uma empresa de casamentos na Sibéria construiu uma infraestrutura de servidor e iniciou um site. Eles decidem lançar em junho.
O negócio está crescendo. Casamentos estão acontecendo a torto e a direito e o site deles está passando por um intenso tráfego de usuários. Felizmente, eles planejaram com antecedência e construíram servidores para lidar com a carga. Então, chega o inverno. O tráfego de usuários cai. Quem planeja um casamento na Sibéria em pleno inverno? Aquela infraestrutura de servidor robusta que era necessária no verão é um fardo no inverno. A empresa está incorrendo em custos de manutenção de hardware que não está sendo totalmente utilizado.
As máquinas virtuais reduzem o desperdício de recursos
Os servidores silenciosos desta empresa de casamentos representam o problema do desperdício de recursos. No passado, as empresas não tinham uma maneira conveniente de alocar recursos de forma eficiente para horários de alto e baixo tráfego de usuários. A solução foi a máquina virtual (VM).

As VMs são subcomputadores baseados em software executados dentro de uma máquina física. Uma máquina física pode hospedar várias VMs. A máquina física é chamada de máquina host e as VMs são chamadas de máquinas convidadas. Cada VM recebe seus próprios recursos de computação (memória, CPU, armazenamento) e é distinta e isolada de outras VMs em execução na mesma máquina. Isso se deve ao seu kernel separado, o software que alimenta todas as funções básicas de um computador. A máquina host utiliza um hipervisor, uma camada de software que cria e executa VMs compartilhando os recursos do host.
VMs virtualizam servidores. Eles permitem que uma máquina seja dividida em vários ambientes de computação isolados. Isso permite que as empresas vendam espaço e tempo em seu hardware e reduzam o desperdício de recursos. Por exemplo, digamos que eu seja o presidente de uma loja de equipamentos de esqui cross-country na Sibéria. Quero administrar um site, mas não quero lidar com a construção de uma arquitetura de servidor físico. Sei que o tráfego de usuários será alto no inverno e baixo no verão e quero evitar o desperdício de recursos.
Eu decido abordar a empresa de casamento. Eu ofereço a eles um acordo: vou pagá-los para implantar meu site em seu hardware físico. Podemos executar nossos aplicativos em máquinas virtuais, totalmente isoladas computacionalmente umas das outras. É uma vitória para todos. Eles mantêm o hardware, eu pago por seu espaço e tempo quando preciso e ambos reduzimos o desperdício de recursos.
As instâncias do EC2 são servidores virtuais
Isso é o que o AWS EC2 oferece, mas em uma escala muito maior. As instâncias do EC2 são máquinas virtuais executadas no hardware da Amazon. Mais especificamente, são servidores virtuais. Assim como uma máquina virtual, as instâncias do EC2 são máquinas convidadas executadas por hipervisores em máquinas host. Essas máquinas host são grandes servidores físicos em datacenters da AWS.
Qualquer empresa ou indivíduo pode criar uma conta da AWS em seu computador e iniciar uma instância do EC2 no hardware da Amazon. Esta é uma forma de Infraestrutura como Serviço (IaaS), uma das tecnologias inovadoras fornecidas pela computação em nuvem.
Como as instâncias do EC2 são criadas
Portanto, sabemos o que são instâncias do EC2, mas há vários outros componentes técnicos envolvidos em sua criação.
Amazon Machine Images (AMI)
Quando uma empresa cresce, ela geralmente precisa escalar servidores para lidar com o tráfego de usuários. Isso pode ser feito verticalmente adicionando recursos a um servidor existente. Também pode ser feito horizontalmente, adicionando servidores adicionais. Uma maneira pela qual a AWS simplifica o dimensionamento na nuvem é por meio da Amazon Machine Image (AMI).

AMIs são modelos personalizáveis para instâncias do EC2. Eles especificam uma configuração: um sistema operacional (Linux, Ubuntu, Windows, etc), um servidor de aplicativos e quaisquer instalações de software necessárias. Em termos não técnicos, a AMI é um projeto e a instância do EC2 é a máquina construída a partir do projeto. Se você programou em uma linguagem orientada a objetos, pense em uma AMI como uma classe e nas instâncias do EC2 como um objeto gerado a partir dela.
Em vez de criar e configurar cada instância do EC2, você pode instanciar várias instâncias do EC2 configuradas de forma idêntica a partir do mesmo modelo de AMI. Isso é o equivalente a dimensionar horizontalmente sua arquitetura com apenas alguns cliques.
Tipos de instância
Ao criar uma instância EC2 a partir de um modelo AMI, você também precisa escolher um tipo de instância. Lembre-se de que uma instância do EC2 é uma máquina virtual. As máquinas virtuais recebem recursos alocados de um computador host por meio do hypervisor.
O tipo de instância descreve quantos recursos sua máquina virtual EC2 será alocada. Um nível maior alocará uma instância do EC2 com mais recursos da máquina host. Também terá mais custos.
Os tipos são agrupados em famílias com base nas necessidades de seus aplicativos de destino. Por exemplo, se um aplicativo precisa de muito poder de processamento para modelagem de big data, ele deve ser implantado com um tipo de instância da família otimizada para computação. Exemplos mais básicos de famílias incluem uso geral, memória otimizada e armazenamento otimizado.

A AWS oferece aos usuários um nível de avaliação gratuita. Esta é a camada t2.micro. Nas zonas (abordadas na próxima seção) onde o nível t2.micro não está disponível, o nível gratuito é chamado de t3.micro. Em um artigo posterior, fornecerei um guia passo a passo para implantar aplicativos na AWS. Esses aplicativos devem ser implantados apenas na camada t2.micro ou t3.micro e devem ser removidos após o tutorial para evitar cobranças.
A partir de uma AMI, você pode iniciar vários tipos de instância diferentes para o seu servidor. Todos eles conterão a mesma configuração especificada originalmente em sua AMI, mas serão diferentes na quantidade de recursos alocados com base nas camadas especificadas para o tipo de instância.
Armazenamento, segurança e muito mais
É importante observar que existem vários outros recursos integrados na criação de instâncias do EC2. Por exemplo, você pode criar volumes Elastic Block Storage (EBS) como armazenamento para um banco de dados. Você também pode especificar configurações para configurações de segurança, monitoramento, redes e muito mais. Eu estarei cobrindo esses tópicos em grande profundidade em artigos posteriores.
Instâncias do EC2 e regiões da AWS
Ao criar instâncias do EC2, uma questão não trivial é onde criá-las. Um dos maiores inibidores da velocidade da rede é a distância. Ou seja, distância do cliente que solicita informações ao servidor que emite uma resposta. Ter uma rede de recursos disponíveis em todos os continentes limita a distância de um aplicativo ao seu usuário final. Isso se correlaciona com tempos de carregamento mais rápidos para os usuários finais. Felizmente, a AWS possui data centers em todo o mundo.

Regiões e zonas de disponibilidade
A AWS separa grandes áreas geográficas em regiões isoladas onde os serviços estão disponíveis. Essas Regiões são subdivididas em Zonas de Disponibilidade isoladas. Essas zonas permitem que as empresas coloquem servidores e outros recursos o mais próximo possível de seus usuários finais para minimizar os tempos de carregamento.
Regiões e zonas de disponibilidade são isoladas umas das outras
As regiões são isoladas de outras regiões e zonas de disponibilidade isoladas de outras zonas de disponibilidade. Essa é uma maneira técnica de dizer que uma instância do EC2 implantada em uma zona de disponibilidade não é implantada em outra. As instâncias do EC2 replicadas de uma AMI em várias zonas de disponibilidade são máquinas virtuais distintas e separadas. As falhas em uma instância não afetarão as instâncias em outra zona.
Isso pode ser usado para eliminar pontos únicos de falha para seu aplicativo. Melhor ainda, se uma instância em uma zona falhar, você pode redirecionar o tráfego dessa zona para uma instância do EC2 operando em outra zona. Isso limita o tempo de inatividade em caso de interrupções.

Ao criar uma AMI, as empresas podem especificar a região na qual gostariam de criá-la. Posteriormente, eles podem copiar essa AMI para outras regiões, se desejar. Ao instanciar uma instância do EC2 de uma AMI, essa AMI deve existir na mesma região em que você está tentando implantar sua instância. A instância do EC2 é específica para uma zona de disponibilidade especificada na criação ou escolhida automaticamente pela Amazon.
Vamos Amarrá-lo Juntos
As instâncias do EC2 são máquinas virtuais. As empresas podem usar instâncias do EC2 para alugar espaço e tempo na infraestrutura global de hardware da Amazon. Eles são criados a partir de Amazon Machine Images. As AMIs são como modelos a partir dos quais várias instâncias podem ser criadas com as mesmas definições de configuração. Cada uma dessas instâncias possui um tipo especificado que determina a quantidade de recursos particionados para essa instância. As instâncias podem ser configuradas ainda mais com configurações de armazenamento, segurança e rede.
As AMIs estão vinculadas a uma região da AWS. As instâncias do EC2 são criadas a partir de AMIs existentes na mesma região da AWS em que serão implantadas. As instâncias EC2 estão vinculadas a zonas de disponibilidade dentro de regiões maiores da AWS. Essas regiões e zonas são isoladas e fornecem às empresas uma maneira de eliminar pontos únicos de falha.
Siga-me se quiser ler mais artigos que tornam as tecnologias da Web de nível de produção fáceis de usar e entender!
Leitura adicional
- https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html
- https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html
- https://www.edureka.co/blog/ec2-instances-in-aws/
- https://www.techtarget.com/searchaws/definition/Amazon-EC2-instances#:~:text=An%20Amazon%20EC2%20instance%20is,Web%20Services%20(AWS)%20infrastructure.