Article image
Paulo Silva
Paulo Silva03/04/2024 19:31
Compartilhe

Amazon EC2, O Incrível Serviço de Computação em Nuvem da Amazon.

  • #AWS

Você sabe dizer em qual revolução industrial nós estamos? Ou ainda, o que essa revolução nos trouxe? Bom, estamos na quarta revolução que nos traz alguns avanços como IA, Robótica, Big Data, Machine Learning, loT, Cloud Computing, entre outros.

Cloud Computing — Computação em Nuvem — é um termo que se refere à prestação de serviço de computação, que disponibiliza recursos através da internet (nuvem). Dentre esses recursos podemos citar armazenamento, máquinas virtuais, servidores e outros. O EC2 da amazon, é um desses serviços, o de armazenamento. Neste artigo, descobriremos o que é o EC2, suas características, como utilizar e otimizar.

Veja os assuntos que serão abordados neste artigo:

  • Introdução
  • O que é EC2?
  • O que são Instâncias?
  • Criando uma Instância
  • Conectando-se a uma instância via SSH
  • Como escolher o tipo de instância EC2 adequado para a minha aplicação?
  • Qual é a melhor forma de gerenciar a escalabilidade e a elasticidade das instâncias EC2?
  • Como otimizar os custos ao usar o EC2, especialmente no uso de instâncias reservadas vs. sob demanda? 
  • Conclusão
  • Referências

Introdução

image

Primeiramente, vamos entender melhor o que é Cloud Computing. Como dito acima, a computação em nuvem é um fornecimento de serviços através da internet. Você não precisa comprar e gerenciar servidores, softwares e outros recursos de TI, com a Cloud Computing você pode acessá-los online, sob demanda e paga apenas pelos recursos que utiliza.

Essa prática possui diversos benefícios:

  • Economia: Reduz custos com infraestrutura, software e mão de obra.
  • Escalabilidade: Aumente ou diminua os recursos de acordo com suas necessidades.
  • Flexibilidade: Adapte a infraestrutura às suas necessidades específicas.
  • Agilidade: Implemente novos serviços e aplicativos rapidamente.
  • Segurança: Proteja seus dados com recursos avançados de segurança.

Existem três tipos de computação em nuvem, sendo elas:

  • Nuvem pública: Os recursos são compartilhados entre vários usuários, oferecendo escalabilidade e baixo custo. São aquelas ofertadas por terceiros.
  • Nuvem privada: Os recursos são dedicados a uma única organização, proporcionando maior segurança e controle. São aquelas em que a empresa oferece
  • Nuvem híbrida: Combina os benefícios da nuvem pública e privada, oferecendo flexibilidade e segurança. Por exemplo, os dados e as aplicações que exigem privacidade e segurança ficam na nuvem privada e quando houver um pico de demanda, ficam na nuvem pública, alternando assim, conforme necessário.

O que é o EC2?

image

EC2 nada mais é que uma sigla para Elastic Compute Cloud, que é um serviço de computação da Amazon.

Imagine que você precise de um computador para rodar determinada aplicação, mas não quer comprar um hardware novo e configurá-lo do zero, então você contrata o serviço EC2, escolhe a quantidade de memória, armazenamento e processamento que deseja e pronto, você possui um computador virtual para rodar essa aplicação.

Ou seja, o serviço EC2 da Amazon fornece um computador virtual que atenda as suas demandas, graças a escalabilidade no serviço, se você desejar aumentar ou diminuir os recursos você pode. O Amazon EC2 também conta com uma série de outros benefícios como a flexibilidade, o custo-benefício e a segurança.

O que são instâncias?

image

Esses computadores virtuais, são o que chamamos de instâncias, você pode ter quantas instâncias desejar. Cada instância é configurada com um tipo específico de hardware como, processamento, memória e armazenamento.

Existem diversos tipos de instâncias disponíveis, cada uma otimizada para atender seu propósito. Por exemplo:

  • Instâncias de uso geral: São ideais para propósitos onde não é necessário alto desempenho, são recomendadas para servidores web, repositórios de código e outras aplicações que não exigem alto desempenho.
  • Instâncias com uso intensivo de memória: São ideais para propósitos que necessitam de armazenamento rápido que demanda uma quantidade de memória RAM alta, são recomendadas para bancos de dados, caches e outras aplicações que precisam de muita memória.
  • Instâncias com uso intensivo de CPU: São ótimas para aplicações que exigem alto desempenho de processamento, processadores com vários núcleos e auxilio de GPUs, são recomendadas em ocasiões como renderização e codificação de vídeo, análise de dados, machine learning.

Criando uma instância

image

Para criar uma instância EC2 no console de gerenciamento da AWS:

  1. Acesse o console da AWS: https://aws.amazon.com/
  2. Faça login em sua conta da AWS.
  3. Na barra de pesquisa, digite "EC2" e selecione "Amazon EC2".
  4. Na página inicial do EC2, clique em "Iniciar instância".
  5. Escolha uma AMI (Amazon Machine Image):
  6. Uma AMI é um modelo pré-configurado que define o sistema operacional, software e configurações da sua instância.
  7. Você pode escolher entre AMIs pré-configuradas pela AWS ou por outros fornecedores.
  8. Para iniciantes, recomendo usar uma AMI pré-configurada com o sistema operacional que você deseja.
  9. Escolha o tipo de instância:
  10. O tipo de instância define a quantidade de CPU, memória e armazenamento que sua instância terá.
  11. Para iniciantes, recomendo usar um tipo de instância com recursos básicos.
  12. Configure as opções de instância:
  13. Você pode configurar opções como rede, armazenamento, segurança e tags.
  14. Para iniciantes, recomendo manter as configurações padrão.
  15. Revise e inicie a instância:
  16. Revise suas configurações e clique em "Iniciar instância".
  17. Sua instância será iniciada e estará pronta para uso em alguns minutos.
  18. Após a instância ser iniciada:
  19. Você pode se conectar à sua instância usando SSH ou RDP.
  20. Você pode instalar o software que desejar na sua instância.
  21. Você pode iniciar, parar e encerrar sua instância a qualquer momento.

Conetando-se à instância via ssh

image

O Secure Shell (SSH) é um protocolo de rede, que faz uso de criptografia tornando seguro o acesso e a operação a ser realizada. É muito comum a sua utilização em acessos remotos, devido a sua segurança e rapidez.

Para conectar-se à sua instância você precisa ter uma chave SSH privada. Um servidor SSH pode fazer uso de diversas formas de autenticação, o mais comum é a utilização de senha, apesar de ser prático não é totalmente segura. Uma das alternativas é o uso das chaves.

O método de autenticação das chaves, consiste em um par de chaves onde uma é uma chave privada que fica em posse do usuário e deve ser mantida em sigilo e a outra uma chave pública que é enviada ao servidor desejado e armazenada em um arquivo que será utilizado para realizar o acesso. Quando o usuário tenta autenticar-se, o servidor testa se o usuário realmente possui a chave privada, se for comprovado então o acesso é permitido, ou o comando é executado.

Além da chave SSH, é importante estar atento ao endereço IP público da sua instância, visto que ele pode mudar se você reiniciar a instância. Certifique-se de usar um nome de usuário e senha seguros para sua instância.

Para se conectar à sua instância EC2 via SSH:

  1. Obtenha o endereço IP público da sua instância:
  2. No console do EC2, na lista de instâncias, localize a instância que você deseja conectar.
  3. Na coluna "Endereço IP público", copie o endereço IP.
  4. Abra um terminal em seu computador local.
  5. Execute o seguinte comando SSH:ssh -i <caminho_para_chave_ssh> <usuario>@<endereço_ip_publico>
  6. Substitua <caminho_para_chave_ssh> pelo caminho para o arquivo da sua chave SSH privada.
  7. Substitua <usuario> pelo nome do usuário que você deseja usar para se conectar à instância.
  8. Substitua <endereço_ip_publico> pelo endereço IP público da sua instância.
  9. Exemplo: ssh -i ~/.ssh/my-key.pem ubuntu@123.45.67.89
  10. Se for a primeira vez que você está se conectando à instância:
  11. Você será solicitado a confirmar a identidade do host.
  12. Digite "sim" para continuar.
  13. Você estará conectado à sua instância EC2!

Como escolher o tipo de instância EC2 adequado para minha aplicação? 

image

Para escolher a instância ideal, é necessário identificar os objetivos da sua aplicação. Como dito anteriormente, há três tipos principais de instâncias, as e uso geral, as de uso intensivo de memória e as de uso intensivo de processamento (CPU).

Algumas perguntas que te auxiliam a identificar sua aplicação:

  • Qual é o sistema operacional que minha aplicação precisa?
  • Quanta CPU, memória e armazenamento minha aplicação precisa?
  • Qual é o tipo de workload (carga de trabalho / demanda) da minha aplicação?
  • A minha aplicação precisa de recursos específicos como GPUs (Graphic Process Unit - Unidade de Processamento Gráfico)?
  • Qual o meu orçamento?
  • Qual a minha experiência com instâncias?

Essas perguntas são muito importantes para ajudar a definir a instância mais adequada para sua aplicação.

Se sua aplicação se enquadra em: servidores web; repositórios de código; ambientes de desenvolvimento; pequenas aplicações e servidores de teste, a instância mais adequada pode ser as de uso geral, alguns exemplos de instâncias desse tipo são: T3, T2, M5, M4.

Se sua aplicação se enquadra em: bancos de dados; caches; sistemas de análise de dados; aplicações em memória e servidores de Big Data, a mais adequada pode ser as de uso intensivo de memória, alguns exemplos desse tipo são: R5, R4, X1, X1E.

Se sua aplicação se enquadra em: renderização de vídeo; codificação de vídeo; análise de dados; machine learning e simulações científicas, a mais adequada pode ser as de uso intensivo de processamento, alguns exemplos desse tipo são: C5, C4, P4, P3.

Como as instâncias são escaláveis, você pode começar com uma pequena e barata, para entender como ela funciona, e se der certo, poderá aumentá-la. Lembre-se de utilizar os recursos que a AWS oferece, por exemplo, o monitoramento da sua instância, você poderá perceber oportunidades para otimizar seus custos.

É importante ressaltar que não existe uma instância única para todas as aplicações, também é preciso revisar sempre se a instância ainda faz sentido para você e para sua aplicação.

Qual é a melhor forma de gerenciar a escalabilidade e a elasticidade das instâncias EC2?

image

Existem diversas formas de gerenciar a escalabilidade e elasticidade das instâncias EC2:

  1. Auto Scaling:
  2. O Auto Scaling permite que você dimensione automaticamente suas instâncias EC2 para cima ou para baixo de acordo com a demanda.
  3. Você pode configurar o Auto Scaling para adicionar ou remover instâncias com base em métricas como CPU, memória, tráfego de rede ou filas de trabalho.
  4. Elastic Load Balancing:
  5. O Elastic Load Balancing distribui o tráfego entre várias instâncias EC2, garantindo que nenhuma instância fique sobrecarregada.
  6. Você pode usar o Elastic Load Balancing para distribuir o tráfego de acordo com diferentes critérios, como round robin, weighted round robin, least outstanding requests, and latency.
  7. Spot Instances:
  8. As Spot Instances são instâncias EC2 disponíveis a preços com desconto, geralmente quando há capacidade ociosa na AWS.
  9. Você pode usar Spot Instances para workloads que podem ser interrompidas, como batch processing, big data analytics e machine learning.
  10. Reservas:
  11. As Reservas permitem que você reserve capacidade de instância EC2 por um período de tempo específico, geralmente 1 ou 3 anos.
  12. As Reservas podem oferecer descontos significativos em comparação com o pagamento por hora.
  13. Múltiplas regiões e zonas de disponibilidade:
  14. Você pode implantar suas instâncias EC2 em várias regiões e zonas de disponibilidade para aumentar a confiabilidade e a disponibilidade.
  15. Se uma região ou zona de disponibilidade ficar indisponível, suas instâncias em outras regiões e zonas de disponibilidade continuarão funcionando.

Como otimizar os custos ao usar o EC2, especialmente no uso de instâncias reservadas vs. sob demanda? 

image

Antes de tudo, o primeiro passo para evitar gastos desnecessários, é a escolha da instância mais adequada. Após certificar-se de ter escolhido da melhor maneira possível, então atente-se às seguintes dicas:

Imagine que você está em sua casa à noite, em algum cômodo, e deseja ir para outro, você liga a luz do próximo cômodo e apaga a do anterior, em EC2 não é diferente, evite deixar instâncias ligadas sem que seja realmente necessário.

Estudos apontam que o uso de instâncias reservadas, pode acarretar em uma redução de custos de até 70%, se você acha esse valor alto, saiba que utilizar as instâncias SPOT pode trazer uma economia maior ainda, de até 90%.

Manter a instância atualizada também é um bom caminho para reduzir custos, veja no exemplo a seguir:

  • Instância de geração antigac4.large
  • 2 CPUs
  • Memória de 3,75 GiB
  • US $ 0,100 / hora
  • Instância de nova geraçãoc5.large
  • 2 CPUs
  • Memória de 4 GiB
  • US $ 0,085 / hora

Note que houve um aumento de cerca de 6% de poder de processamento a um custo reduzido de 15%!

Escolher a região correta pode trazer um enorme desconto, veja o seguinte exemplo:

  • 4 x instâncias t3.medium
  • EBS de 30 GB alocado para cada instância
  • Transferência total de dados de 1 TB

Essa configuração custará 102% a mais em São Paulo em comparação com a Virgínia do Norte.

  • Custo de US $ 221,65 / mês em North Virginia
  • $ 449,05 / mês em São Paulo

Centralizar sua operação em uma única região traz benefícios adicionais, será muito mais fácil gerenciar sua alocação de instâncias reservadas e você não terá a transferência de dados regional.

Imagine que você alugou uma casa que possui uma garagem muito grande, e o espaço que você ocupa nela é muito pouco, você está pagando um aluguel mais caro pelo espaço dessa garagem, mas você não o ocupa. Isso é o que ocorre em uma instância superdimensionada.

Configurar rotinas de escalonamento automático (Auto-Scaling) é muito importante para evitar o superdimensionamento que acima mencionado, pois não queremos que a instância tenha uma super capacidade (gerando um custo alto), sem que seja necessário.

Conclusão

Vimos que o EC2 é um serviço de computação em nuvem, que fornece criação de instâncias para diversos fins, esse serviço traz diversos benefícios, sendo o principal a flexibilidade para a sua aplicação, não exigindo um máquina local como servidor.

Se você busca um serviço de criação de instâncias para seus dados e aplicações, o EC2 é o ideal, mas lembre-se de escolher atentamente a instância que melhor se enquadra em seus objetivos atuais e não se esqueça de utilizar as dicas para reduzir os custos.

Referências

Cloud Computing: Conceitos, Serviços e Benefícios. Site Target. Disponível em: <https://www.targetso.com/2022/09/13/cloud-computing-conceitos-e-beneficios/>. Acesso em 03 abr. 2024.

Amazon EC2 instance types. Site AWS. Disponível em: <https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-types.html>. Acesso em: 03 abr. 2024.

Amazon EC2. Disponível em: <https://aws.amazon.com/pt/ec2/instance-types/>. Acesso em: 03 abr. 2024.

Como configurar a autenticação baseada em chaves SSH em um servidor Linux. Site DigitalOcean. Disponível em: <https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server-pt>. Acesso em 03 abr. 2024.

Comandos básicos de ssh. Disponível em: <https://www3.uji.es/~galdu/ssh_vs_rsh/x165.html>. Acesso em 03 abr. 2024.

Amazon EC2 Auto Scaling. Disponível em: <https://docs.aws.amazon.com/pt_br/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html>. Acesso em 03 abr. 2024.

How to reduce your AWS costs? Save up to $500k with these guidelines! Site Medium. Disponível em: <https://george-51059.medium.com/reduce-aws-costs-74ef79f4f348>. Acesso em 03 abr 2024.

Compartilhe
Comentários (0)