A computação em nuvem já é considerada como um recurso de tecnologia dominante, sendo capaz de oferecer implantações com baixo custo, maior rapidez, mais escalabilidade e mais segura para todos os tipos de empresas.
Por este motivo, as empresas têm percebido que podem economizar e muito se levarem suas aplicações e sistemas para uma Arquitetura de TI baseada em Cloud Computing.
Os serviços da AWS (Amazon Web Services) são populares por oferecer soluções completas para gestão em TI, facilitando o investimento, manutenção e a utilização de tecnologia.
Podemos dividir esta soluções em três pilares, que são: Recursos de Infraestrutura, Recursos de Gestão e Recursos de Produtividade.
Iremos detalhar alguns deles mais abaixo.
Cloud Computing
Dentre diversos termos e temas existentes na área de tecnologia, um dos mais populares é a computação em nuvem.
Praticamente, tudo o que consumimos na internet como jogos, redes sociais, aplicativos, armazenamento de arquivos, vídeos e músicas, são entregues e disponibilizados por meio de serviços na nuvem.
A computação em nuvem é a entrega sob demanda de poder computacional, armazenamento de banco de dados, aplicativos e outros recursos de TI pela Internet com uma definição de preço conforme o uso.
Empresas como AWS, Azure e Google disponibilizam este poder computacional como serviços na internet.
Amazon Web Services (arquitetura AWS)
A Amazon Web Services (AWS) é uma das plataformas de nuvem mais adotadas e mais abrangentes do mundo, oferecendo centenas de serviços.
Possui milhões de clientes, incluindo startups, grandes corporações e diversos órgãos governamentais.
Levando em consideração os diversos benefícios que temos ao utilizar serviços na nuvem, e juntando isso à necessidade de planejamento e desenvolvimento de software e projetos, o uso de uma plataforma de Cloud Computing como AWS nos ajuda muito na implantação de nossos projetos e arquitetura.
Desde a disponibilização da nossa aplicação front-end, como o back-end, uso de banco de dados até o monitoramento de ambientes complexos.
Dentre alguns modelos de arquiteturas e tipos de serviços que a AWS pode nos entregar como benefício, temos:
IaaS (Infrastructure as a Service)
Elimina a necessidade de investimento, monitoramento e manutenção em servidores locais.
PaaS (Platform as a Service)
Permite desenvolvermos software em diversas tecnologias, mesmo sem precisarmos de um ambiente local.
SaaS (Software as a Service)
Modelo de arquitetura mais adotado ao utilizarmos arquitetura em nuvem. Neste modelo, as empresas podem se utilizar dos modelos acima e entregar seu software como SaaS, facilitando suas integrações, comunicações e recursos.
Rede e Segurança na arquitetura AWS
Quando temos uma aplicação disponível na internet, independente da empresa Cloud ou Servidores que utilizamos, temos diversas preocupações para lidar em relação a Redes e Segurança. Algumas delas são:
- Como os desenvolvedores acessarão as aplicações e quais recursos e serviços, cada integrante do time pode ou não acessar;
- Quais endereços, portas e acessos estarão expostos para cada uma de nossas aplicações
- Como iremos realizar a escalabilidade, tanto para disponibilização de novas instâncias de nossas aplicações, como para redução dessa escala.
Quando fazemos uso da AWS, diversas das preocupações citadas acima deixam de serem críticas.
Isso se deve ao fato de a AWS facilitar a implantação destes recursos de Segurança, fazendo com que seja fácil de utilizarmos e implantarmos tanto em nossas aplicações, como em nossa arquitetura.
Disponibilidade, Deploy e CI/CD
Entregar software, fazer deploy e manter as aplicações sempre disponíveis deixou de ser uma preocupação tão necessária, levando em consideração as ferramentas disponíveis no mercado atualmente.
Existem diversas ferramentas e serviços que nos ajudam a realizar Integração Contínua e Entrega Contínua de nosso software sem muitas dores de cabeça.
E o melhor, mantendo as aplicações sempre disponíveis (zero downtime), mesmo no momento do deploy.
Além dos próprios serviços da AWS, por exemplo: Code Deploy, Code Pipeline, Code Commit e Codebuild, podemos citar ferramentas de terceiros que fazem muito bem este papel, como Gitlab CI/CD, Github Actions, Codeship, Jenkins, entre outras.
Principais Serviços da arquitetura AWS
Abaixo, vamos listar os principais serviços para implementação de uma Arquitetura AWS.
Vale lembrar que esta é uma lista resumida de alguns dos principais serviços AWS que podemos utilizar para implantarmos nossas aplicações, outros serviços iremos listar em um outro artigo.
AWS SDK
Definição
O AWS SDK permite acessar diretamente os serviços da AWS a partir do código fonte de suas aplicações.
Hoje, diversas linguagens de programação diferentes possuem sua respectiva SDK disponível, entre elas temos JavaScript, Python, PHP, .NET, Ruby, Java, Go, Node.js, e C++.
Casos de Uso
Com o AWS SDK é possível autenticar usuários através do Facebook, Google ou Login com a Amazon usando a federação de identidade da web, armazenar dados do aplicativo no Amazon DynamoDB e salvar os arquivos do usuário para o Amazon S3, por exemplo.
AWS CLI
Definição
A AWS Command Line Interface (CLI – interface da linha de comando) é uma ferramenta para gerenciamento de serviços da AWS via terminal.
Com ela instalada e configurada (Access Key e Secret Key), é possível controlar vários serviços da AWS via linha de comando no terminal e até automatizá-los usando scripts bash/shell.
Casos de Uso
Podemos usar o AWS CLI, para nos conectarmos ao AWS S3 (armazenamento de arquivos) e facilitar o gerenciamento dos objetos.
Podemos fazer uploads e downloads de vários arquivos com um único comando em nível de pasta, ou ainda podemos ligar/desligar a instância de uma aplicação no AWS EC2 ou escalarmos containers no AWS ECS.
AWS IAM
Definição
O AWS IAM (Identity and Access Management) é um serviço que nos ajuda a controlar o acesso aos recursos da AWS de forma segura.
Podemos utilizar o IAM para controlar quem é autenticado (fez login) e autorizado (tem permissões) a usar os recursos no ambiente cloud.
Casos de Uso
Podemos utilizar o IAM para gerenciar os usuários e permissões de acesso dos integrantes do time, das aplicações e como elas se comunicam entre os serviços, etc.
Cobrança
O AWS Identity and Access Management (IAM) é um recurso da sua conta da AWS oferecido sem custos adicionais.
Só haverá cobrança quando outros serviços da AWS forem acessados usando os usuários do IAM.
AWS VPC
Definição
A VPC (Amazon Virtual Private Cloud) nos permite executar os recursos da AWS em uma rede virtual, que se assemelha a uma rede tradicional, porém, com os benefícios de usar a infraestrutura dimensionável da AWS.
A VPC é isolada de maneira lógica das outras redes virtuais na AWS.
Casos de Uso
Podemos especificar um intervalo de endereços IP para a VPC, adicionar sub-rede, associar security groups e configurar tabelas de rota.
AWS S3
Definição
O Amazon S3 (Simple Storage Service) é um serviço de armazenamento de objetos que oferece alta escalabilidade, disponibilidade de dados, segurança e performance.
Casos de Uso
Podemos utilizá-lo-lo para armazenar qualquer volume de dados em uma grande variedade de casos de uso, como sites, aplicativos para dispositivos móveis, backup e restauração, arquivamento, aplicativos empresariais, dispositivos IoT e análises de big data.
AWS EC2
Definição
O Amazon ECS (Elastic Container Service) é um serviço altamente escalável e de alta performance para a orquestração de contêineres Docker.
O Amazon ECS elimina a necessidade de instalar e operar o seu próprio software de orquestração de contêineres, gerenciar e escalar um cluster de máquinas virtuais ou programar contêineres nessas máquinas virtuais e é um dos principais serviços AWS quando falamos de arquitetura.
Casos de Uso
O Amazon ECS ajuda a executar aplicativos de microsserviços com integração nativa a serviços da AWS e permite pipelines de integração contínua e implantação contínua (CI/CD).
Aplicativos empresariais legados podem ser “conteinerizados” e migrados facilmente para o Amazon ECS, sem necessidade de realizar muitas alterações de código.
AWS Cloudwatch
Definição
O Amazon CloudWatch é um serviço de monitoramento, agendamento de tarefas e métricas.
O CloudWatch coleta dados de monitoramento e operações na forma de logs, métricas e eventos, e oferece uma visualização unificada dos recursos, dos aplicativos e dos serviços da AWS executados na AWS.
Casos de Uso
O CloudWatch fornece dados e insights práticos para monitorar aplicativos, responder às alterações de performance dos sistemas, otimizar a utilização de recursos e obter uma visualização unificada da integridade operacional.
Também podemos usar o CloudWatch para detectar comportamento incomum em ambientes, definir alarmes, visualizar logs e métricas lado a lado, executar ações automatizadas, resolver problemas e descobrir insights para manter seus aplicativos mais saudáveis e com menos custo.
AWS Lambda
Definição
O AWS Lambda permite a execução de códigos sem provisionar ou gerenciar servidores.
Você paga apenas pelo tempo de computação que utilizar. Não haverá cobranças quando o seu código não estiver em execução.
Casos de Uso
Com o AWS Lambda, podemos executar o código para praticamente qualquer tipo de aplicativo ou serviço de back-end, sem precisar de administração de servidores.
Basta carregar o código e o AWS Lambda se encarrega de todos os itens necessários para executar e alterar a escalabilidade do código com alta disponibilidade.
Podemos configurar o código para que ele seja acionado automaticamente por meio de outros serviços da AWS ou chamá-lo diretamente usando qualquer aplicativo móvel ou da web.
AWS API Gateway
Definição
O Amazon API Gateway é um serviço gerenciado que permite que desenvolvedores criem, publiquem, mantenham, monitorem e protejam APIs em qualquer escala com facilidade.
Casos de Uso
É possível criar APIs REST para agir como “porta de entrada” para que nossos aplicativos acessem dados, lógica de negócios ou funcionalidades em serviços de back-end, como cargas de trabalho em execução no Amazon EC2, código em execução no AWS Lambda, qualquer aplicativo web ou aplicativos de comunicação em tempo real.
AWS RDS
Definição
O RDS (Amazon Relational Database Service) facilita a configuração, operação e a escalabilidade de bancos de dados relacionais na nuvem.
O serviço oferece capacidade econômica e redimensionável, além de automatizar tarefas demoradas de administração, como provisionamento de hardware, configuração de bancos de dados, aplicação de patches e backups.
Casos de Uso
O Amazon RDS está disponível em vários tipos de instância de banco de dados, com otimização para memória, performance ou E/S.
Dentre os bancos de dados disponíveis temos Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle Database e SQL Server.
Você pode usar o AWS Database Migration Service para migrar ou replicar facilmente bancos de dados existentes para o Amazon RDS.
AWS Route53
Definição
O Amazon Route 53 é o serviço de DNS (Domain Name System) na nuvem altamente disponível e escalável.
Ele foi projetado para oferecer aos desenvolvedores e empresas uma maneira altamente confiável e econômica de direcionar os acessos aos aplicativos de Internet, convertendo domínios como www.geekhunter.com.br para endereços IP como 104.31.85.139.
Caso de Uso
O Amazon Route 53 conecta com eficiência as solicitações de usuários com a infraestrutura executada na AWS, sejam instâncias do Amazon EC2, Load Balancer do Elastic Load Balancing ou buckets do Amazon S3.
Também podemos usar o Amazon Route 53 para configurar verificações de integridade do DNS e rotear o tráfego a endpoints ou para monitorar a integridade de uma aplicação e de seus endpoints.
Em Conclusão
Acima, listamos os Principais Serviços AWS para que possamos implementar nossa Arquitetura AWS.
Mesmo que tenhamos diversas aplicações de Front-end, de Back-end, APIs, Bancos de Dados, entre outros recursos.
Com os Serviços AWS citados acima, nós conseguimos desenvolver, disponibilizar e escalar facilmente nossas aplicações.
Se você sentiu falta de ler sobre algum serviço AWS aqui neste post, deixe um comentário que iremos preparar um artigo complementar para citarmos e detalharmos outros serviços AWS.
Valeu!