Uma introdução à computação em nuvem e à AWS
Este tutorial busca dar uma introdução sobre computação em nuvem e seus principais conceitos, com um enfoque na plataforma de serviços em nuvem AWS (Amazon Web Services).
O que é computação em nuvem?
[editar | editar código-fonte]A computação em nuvem transformou radicalmente o cenário tecnológico ao oferecer uma alternativa flexível e escalável para gerenciar recursos de TI. Ao invés de depender de data centers tradicionais, manter servidores físicos e infraestrutura própria, as empresas agora podem acessar servidores, armazenamento e redes sob demanda através da internet, pagando apenas pelo que utilizam. Essa abordagem oferece vantagens significativas, como economia de custos, maior agilidade e escalabilidade instantânea.
Para compreender melhor a computação em nuvem, podemos imaginar uma biblioteca: imagine que você deseja ler um livro. Ao invés de comprar uma estante inteira de livros apenas para esse fim, você se inscreve em uma biblioteca que oferece uma vasta coleção de livros disponíveis para empréstimo sempre que você precisar. A biblioteca (como a nuvem) possui um acervo imenso, mas você só pega o livro que precisa no momento. Além disso, a biblioteca está sempre disponível e pode oferecer novos livros (ou recursos) conforme você os precisar, sem que seja necessário se preocupar em armazená-los ou mantê-los. Caso você precise de mais livros (ou maior capacidade de processamento), a biblioteca pode fornecer rapidamente, e se você não estiver mais precisando de tantos, ela pode reduzir a oferta sem cobrar por algo que não está sendo utilizado.
Tipos de serviços de computação em nuvem
[editar | editar código-fonte]Existem três tipos principais de computação em nuvem, cada um oferecendo diferentes níveis de controle, flexibilidade e gerenciamento:
Infraestrutura como Serviço (IaaS)
[editar | editar código-fonte]Fornece componentes fundamentais de TI, como rede, servidores virtuais e armazenamento. Além disso, oferece flexibilidade máxima e controle sobre recursos de TI, sendo ideal para profissionais e desenvolvedores familiarizados com infraestrutura tradicional.
Plataforma como Serviço (PaaS)
[editar | editar código-fonte]Simplifica o gerenciamento da infraestrutura subjacente, como hardware e sistemas operacionais. Além disso, permite que o foco esteja no desenvolvimento e na implantação de aplicações, sem gerar preocupações com manutenção ou escalabilidade.
Software como Serviço (SaaS)
[editar | editar código-fonte]Entrega produtos completos gerenciados pelo provedor de serviços. Exemplos incluem aplicações de e-mail baseadas na web. O usuário final apenas utiliza o software sem precisar se preocupar com a manutenção da infraestrutura.
Tipos de modelos de implantação da computação em nuvem
[editar | editar código-fonte]Ao escolher uma estratégia de computação em nuvem, uma empresa precisa considerar diversos fatores, como os componentes necessários das aplicações em nuvem, ferramentas preferidas de gerenciamento de recursos e quaisquer requisitos de infraestrutura legada. Diante disso, existem três principais modelos de implantação em computação em nuvem: nuvem pública, nuvem privada e nuvem híbrida.
Nuvem Pública
[editar | editar código-fonte]As nuvens públicas são geridas por empresas externas especializadas em oferecer serviços de computação, como Amazon Web Services (AWS), Google Cloud e Microsoft Azure. Elas fornecem recursos de infraestrutura, como servidores, armazenamento e rede, pela internet, de maneira compartilhada entre diversos clientes. As empresas podem acessar esses recursos de acordo com a demanda, sem a necessidade de investir em hardware próprio.
Exemplo: Uma startup pode utilizar a nuvem pública para hospedar seu site e bancos de dados sem precisar comprar servidores caros, pagando apenas pelo uso de recursos, como o processamento e armazenamento, conforme a necessidade do seu crescimento.
Nuvem Privada
[editar | editar código-fonte]A nuvem privada é uma infraestrutura de computação criada e mantida por uma única organização, geralmente em seus próprios data centers ou em locais dedicados, sob sua gestão exclusiva. Isso oferece maior controle sobre a segurança e a privacidade dos dados, já que a organização não compartilha seus recursos com outras empresas. Essa abordagem é comum em empresas que têm requisitos rigorosos de conformidade ou segurança.
Exemplo: Um banco pode optar por uma nuvem privada para armazenar informações financeiras sensíveis, garantindo que todos os dados sejam mantidos dentro de sua infraestrutura e protegidos por medidas de segurança rigorosas, como firewalls e criptografia.
Nuvem Híbrida
[editar | editar código-fonte]A nuvem híbrida combina as vantagens das nuvens públicas e privadas, permitindo que uma organização utilize recursos de ambos os modelos. A ideia é que as empresas possam armazenar dados mais sensíveis e críticos em sua nuvem privada, enquanto aproveitam a flexibilidade e escalabilidade das nuvens públicas para tarefas menos sensíveis, como o processamento de grandes volumes de dados ou a hospedagem de aplicativos de baixa criticidade.
Exemplo: Uma empresa de saúde pode usar uma nuvem privada para armazenar registros médicos dos pacientes de maneira segura e em conformidade com a legislação de privacidade, enquanto utiliza a nuvem pública para rodar aplicações de análise de dados, como um sistema de inteligência artificial para prever doenças com base em grandes volumes de dados não confidenciais.
Vantagens dos Serviços em Nuvem
[editar | editar código-fonte]- Agilidade: A nuvem proporciona acesso rápido a uma ampla gama de tecnologias, permitindo inovação acelerada. Com recursos que podem ser implementados em minutos, as organizações podem passar da ideia à execução em um tempo significativamente menor, possibilitando experimentação contínua e transformação de negócios.
- Elasticidade: Não é necessário provisionar recursos em excesso para lidar com picos futuros de demanda. A computação em nuvem permite ajustar a capacidade de acordo com as necessidades atuais, escalando recursos para cima ou para baixo instantaneamente.
- Redução de custos: A nuvem substitui despesas fixas (como data centers físicos) por custos variáveis, em que o usuário paga apenas pelo que consome. Além disso, as economias de escala oferecem custos mais baixos do que manter infraestrutura própria.
- Implementação global em minutos: A nuvem permite expandir para novas regiões geográficas rapidamente. Provedores como a AWS têm infraestrutura global, facilitando a implementação de aplicações em múltiplas localidades físicas. Isso reduz a latência e melhora a experiência do usuário.
- Segurança: A segurança na computação em nuvem é frequentemente considerada superior à dos data centers corporativos, devido à abrangência e robustez dos mecanismos de proteção adotados pelos provedores de nuvem.
AWS: Amazon Web Services
[editar | editar código-fonte]A Amazon Web Services (AWS) é a plataforma de serviços em nuvem mais amplamente adotada atualmente e um dos principais provedores globais. Lançada em 2006 pela Amazon, a AWS oferece mais de 200 serviços diferentes que abrangem desde aspectos mais infraestruturais até inteligência artificial. Empresas de todos os tamanhos, de startups a multinacionais, utilizam a AWS para hospedar suas aplicações, armazenar dados e implementar soluções complexas.
A proposta da AWS é essencialmente eliminar o esforço repetitivo, conhecido como “carga pesada não diferenciada” — tarefas essenciais, mas que não agregam vantagem competitiva direta. Em vez de focar na instalação de bancos de dados ou gerenciamento de servidores, as empresas podem concentrar-se no que realmente importa: nas suas ideias de produto e aplicações.
A AWS permite que as empresas:
- Implantem e gerenciem recursos virtualizados com facilidade.
- Aumentem ou reduzam a capacidade instantaneamente, eliminando a necessidade de prever demandas com antecedência.
- Conectem recursos em nuvem a infraestruturas locais, facilitando a transição para a nuvem sem interromper operações críticas.
Infraestrutura Global da AWS
[editar | editar código-fonte]A infraestrutura global da AWS é projetada para garantir escalabilidade, segurança e alta disponibilidade. Com uma presença global abrangente, a AWS possui data centers em diversas regiões do mundo, organizados nas chamadas Regiões AWS e Zonas de Disponibilidade (AZs, de Availability Zones).
Regiões AWS
[editar | editar código-fonte]São localizações físicas ao redor do globo, cada uma contendo várias Zonas de Disponibilidade. Cada Região AWS é projetada para ser independente, com conectividade de baixa latência com outras Regiões, o que proporciona resiliência e segurança.
Zonas de Disponibilidade (AZs)
[editar | editar código-fonte]Cada Região contém múltiplas Zonas de Disponibilidade, que por sua vez consistem em um ou mais data centers isolados, com energia, rede e conectividade redundantes. Distribuir cargas de trabalho entre várias AZs garante que, mesmo que uma zona falhe, as aplicações continuam operando a partir das outras zonas.
Essa infraestrutura global proporcionada pela AWS viabiliza às empresas:
- Expansão global rápida: É possível implementar recursos globalmente em minutos, reduzindo a latência e melhorando a experiência do usuário.
- Conformidade regional: Garantir que dados e aplicações residam em regiões específicas para atender requisitos de conformidade locais.
- Desempenho e redundância: Alta disponibilidade e recuperação de desastres são garantidas pelo design multi-AZ.
Ferramentas de Desenvolvimento na AWS
[editar | editar código-fonte]Desenvolvedores e usuários em geral possuem à sua disposição diversas ferramentas para gerenciar recursos AWS, otimizando sua produtividade e facilitando a automação. Nesta seção, serão apresentadas algumas dessas ferramentas tão úteis que facilitam o manuseio dos serviços AWS.
Formas de interação com a AWS
[editar | editar código-fonte]- AWS Management Console: Interface gráfica intuitiva que facilita o gerenciamento dos serviços AWS. Ideal para iniciantes e pequenas operações, oferece acesso fácil e direto a todos os serviços, permitindo configurar recursos sem conhecimento avançado de scripting.
- AWS Command Line Interface (CLI): Ferramenta de linha de comando que permite gerenciar recursos da AWS através de scripts. Com o CLI, desenvolvedores podem automatizar processos e criar scripts repetíveis, o que reduz erros manuais.
- AWS SDKs (Software Development Kits): Conjuntos de ferramentas para programadores interagirem com a API da AWS em linguagens como Python, Java, JavaScript, e C#. Os SDKs simplificam a integração de aplicações com serviços AWS, como Amazon S3, DynamoDB e EC2.
- AWS CloudShell: Ambiente de shell baseado no browser e pré-configurado com ferramentas de desenvolvimento, que facilita a execução de comandos sem a necessidade de instalar ferramentas localmente.
Infraestrutura como Código (IaC)
[editar | editar código-fonte]Em um ambiente de desenvolvimento de software, são necessários diversos componentes de infraestrutura, como sistemas operacionais, bancos de dados e soluções de armazenamento. Para que as aplicações funcionem corretamente, os desenvolvedores precisam configurar, atualizar e manter esses recursos constantemente, tanto para o desenvolvimento quanto para os testes e a implantação.
Tradicionalmente, o gerenciamento manual da infraestrutura pode ser demorado, propenso a erros e difícil de escalar, especialmente em sistemas grandes e complexos. A Infraestrutura como Código resolve esse problema ao permitir que o estado desejado da infraestrutura seja descrito mediante código de forma declarativa, sem precisar detalhar todas as etapas necessárias para alcançá-lo. Com IaC, a infraestrutura pode ser provisionada e gerida automaticamente, o que libera os desenvolvedores de tarefas repetitivas de configuração e manutenção.
A AWS provém os seguintes serviços que ajudam com as necessidades de IaC de seus clientes:
- AWS CloudFormation: Serviço que permite modelar e provisionar recursos da AWS utilizando templates. Simplifica a replicação de ambientes e facilita a gestão de infraestrutura em larga escala.
- AWS Cloud Development Kit (CDK): Framework de desenvolvimento que utiliza linguagens de programação familiares (Python, TypeScript, Java, etc.) para definir infraestrutura. O CDK abstrai a complexidade dos templates do CloudFormation, permitindo criar recursos com mais facilidade e segurança.
- AWS CodeCommit: Serviço que proporciona a hospedagem de repositórios Git privados.
Principais serviços da AWS
[editar | editar código-fonte]Nesta última seção do artigo, serão introduzidos de forma bem didática e sucinta 5 dos principais serviços da AWS: EC2, S3, AWS Lambda, API Gateway e DynamoDB.
EC2
[editar | editar código-fonte]O Amazon EC2 (Elastic Compute Cloud) é um serviço de infraestrutura na nuvem que permite a criação e gestão de instâncias de servidores virtuais, conhecidas como "instâncias EC2". Essas instâncias oferecem recursos de computação flexíveis, podendo ser ajustadas de acordo com a necessidade do usuário, desde tarefas mais simples até aplicações de grande porte. De maneira similar à escolha de um escritório físico adequado ao tamanho de uma equipe, o EC2 proporciona a flexibilidade necessária para atender a diferentes requisitos de desempenho. Ao optar pelo EC2, as empresas eliminam a necessidade de gerenciar hardware físico, com a infraestrutura sendo inteiramente virtualizada, pronta para ser escalada conforme necessário.
S3
[editar | editar código-fonte]O Amazon Simple Storage Service (S3) pode ser comparado a um depósito digital para os arquivos de um usuário. Podemos imaginá-lo como uma vasta instalação de armazenamento em que objetos podem ser armazenados e recuperados conforme necessário. O S3 é versátil, permitindo que o usuário hospede sites estáticos, armazene backups e sirva como repositório para conjuntos de dados grandes. É como ter um espaço de armazenamento infinitamente expansível acessível de qualquer lugar, tornando-se um bloco fundamental para inúmeras aplicações e serviços.
AWS Lambda
[editar | editar código-fonte]O AWS Lambda é um serviço de computação em nuvem que permite a execução de código em resposta a eventos sem a necessidade de provisionar ou gerenciar servidores. Ao fornecer o código, o usuário deixa que o Lambda cuide de aspectos como escalabilidade, provisionamento e execução. Esse modelo elimina a preocupação com a infraestrutura, permitindo que o desenvolvedor se concentre exclusivamente na lógica de negócios. É como ter um conjurador de feitiços sem servidor que dispara o seu código em resposta a eventos, permitindo que você se concentre apenas em criar o feitiço perfeito. Dessa forma, o AWS Lambda é ideal para responder a eventos em tempo real, como alterações em bancos de dados ou interações com APIs, tornando a execução de código mais eficiente e flexível, sem a sobrecarga de gerenciamento de servidores.
API Gateway
[editar | editar código-fonte]O AWS API Gateway atua como um facilitador, fornecendo uma conexão perfeita entre aplicativos e os serviços de backend de que eles dependem. Ele age como um guardião, garantindo que a comunicação entre esses componentes seja segura e eficiente. Assim como uma ponte que conecta duas margens, o API Gateway permite que os aplicativos acessem os dados e funcionalidades dos serviços de backend, tudo isso enquanto gerencia a complexidade de diferentes protocolos e interfaces. É como um intermediário confiável, lidando com tradução, segurança e dimensionamento para que os desenvolvedores possam se concentrar em criar seus aplicativos.
DynamoDB
[editar | editar código-fonte]O Amazon DynamoDB é um banco de dados NoSQL de chave-valor totalmente gerenciado e sem servidor, projetado para executar aplicações de alto desempenho em qualquer escala. O DynamoDB oferece segurança integrada, backups contínuos, replicação automatizada em várias regiões, cache na memória e ferramentas de importação e exportação de dados.
Recomendação pessoal
[editar | editar código-fonte]Como uma recomendação pessoal para aprofundar seus conhecimentos em AWS, sugiro bastante os seguintes jogos (criados por desenvolvedores da Amazon):
AWS Cloud Quest: Um jogo de RPG 3D que ajuda o usuário a se familiar com conceitos de Nuvem AWS. Nele, você monta sua persona e parte em uma jornada para ajudar os habitantes da sua cidade com soluções inovadoras para problemas inesperados utilizando serviços AWS.
AWS Card Clash: Um jogo digital de cartas 3D baseado em turnos, em que o jogador precisa utilizar conceitos de AWS estrategicamente para vencer seu oponente.
Ambos os jogos são projetados para ensinar de forma lúdica e interativa, ajudando a consolidar o conhecimento de forma mais dinâmica. Além disso, são experiências extremamente divertidas e envolventes.
Referências
[editar | editar código-fonte]- Google. O que é computação em nuvem?. Disponível em https://cloud.google.com/learn/what-is-cloud-computing?hl=pt-BR
- AWS. What is Cloud Computing?. Disponível em https://aws.amazon.com/what-is-cloud-computing/
- AWS. AWS Global Infrastructure. Disponível em https://aws.amazon.com/about-aws/global-infrastructure/?pg=WICC-N&tile=learn_more
- AWS. What is IaC. Disponível em https://aws.amazon.com/pt/what-is/iac/
- AWS. Developer Tools. Disponível em https://aws.amazon.com/pt/products/developer-tools/?whats-new-content-developer-tools.sort-by=item.additionalFields.postDateTime&whats-new-content-developer-tools.sort-order=desc
- AWS. AWS Lambda. Disponível em https://aws.amazon.com/pt/lambda/
- AWS. Amazon EC2. Disponível em https://aws.amazon.com/pt/ec2/
- AWS. Amazon S3. Disponível em https://aws.amazon.com/pt/s3/
- AWS. Amazon API Gateway. Disponível em https://aws.amazon.com/api-gateway/
- AWS. Amazon DynamoDB. Disponível em https://aws.amazon.com/dynamodb/