Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Integração de Amazon EC2 com Amazon RDS

Aplicações web geralmente precisam armazenar informações de forma persistente. Manter o banco de dados diretamente no mesmo servidor da aplicação pode aumentar a complexidade de gerenciamento, manutenção, segurança e disponibilidade.

Neste laboratório, foi simulado um cenário em que uma aplicação web hospedada em uma instância Amazon EC2 precisava se conectar a um banco de dados Amazon RDS for MySQL.

O desafio foi configurar essa comunicação de forma controlada, mantendo o banco de dados em sub-redes privadas e permitindo que somente o servidor web tivesse acesso ao banco pela porta utilizada pelo MySQL.

laboratório resumido

Objetivo

O objetivo foi aprender, na prática, como utilizar o Amazon RDS como banco de dados gerenciado para uma aplicação hospedada no EC2.

arquitetura inicial

Durante o projeto, os principais objetivos foram:

  • Criar um Security Group específico para o banco de dados;
  • Permitir comunicação entre EC2 e RDS através da porta 3306;
  • Criar um grupo de sub-redes para o RDS;
  • Configurar sub-redes privadas em diferentes Zonas de Disponibilidade;
  • Criar uma instância MySQL no Amazon RDS;
  • Configurar uma aplicação web para utilizar o banco de dados;
  • Testar operações de inserção, edição e remoção de dados;
  • Compreender o funcionamento de uma arquitetura separando aplicação e banco de dados.

Solução

Foi construída uma arquitetura composta por:

Diagrama da Solução

1. Security Group do banco de dados

Foi criado o:

DB Security Group

Esse Grupo de Segurança foi configurado para permitir conexões de entrada utilizando:

  • Protocolo: TCP
  • Porta: 3306
  • Origem: Web Security Group

Em vez de permitir acesso ao banco a partir de qualquer endereço IP, a regra utiliza outro Grupo de Segurança como origem.

Dessa forma, somente recursos associados ao Web Security Group podem estabelecer conexões com o banco através da porta 3306.

2. Grupo de sub-redes do RDS

Foi criado o:

DB Subnet Group

O grupo foi associado à Lab VPC e configurado utilizando duas sub-redes privadas:

  • 10.0.1.0/24
  • 10.0.3.0/24

As sub-redes pertencem a diferentes Zonas de Disponibilidade, permitindo que o RDS utilize uma arquitetura distribuída entre AZs.

3. Criação do Amazon RDS

Foi criada uma instância:

  • Serviço: Amazon RDS
  • Engine: MySQL
  • Identificador: lab-db
  • Banco inicial: lab
  • Usuário principal: main
  • Classe: db.t3.medium
  • Armazenamento: General Purpose SSD
  • VPC: Lab VPC
  • Deployment: Multi-AZ
  • Grupo de Segurança: DB Security Group

Após a implantação(Deployment), foi obtido o Endpoint do RDS, utilizado posteriormente pela aplicação web para estabelecer a conexão com o banco.

4. Integração da aplicação web com o RDS

Com o RDS disponível, o endereço do endpoint foi configurado na aplicação hospedada no servidor web.

Foram informados:

  • Endpoint: endpoint do RDS
  • Database: lab
  • Username: main
  • Password: lab-password

Após o envio das informações, a aplicação conseguiu estabelecer comunicação com o banco de dados.

RDS link

O sistema então passou a utilizar o RDS para armazenar os dados do Address Book.

5. Teste da aplicação

Para validar a integração, foram realizados testes diretamente na aplicação web.

Foram executadas operações de:

  • Adicionar contatos;
  • Editar contatos;
  • Remover contatos;
  • Consultar os dados armazenados.

Os dados permaneceram disponíveis na aplicação, demonstrando que a comunicação entre o servidor EC2 e o banco de dados RDS estava funcionando corretamente.

resultado do teste

Ferramentas

  • Amazon EC2 — hospedagem do servidor web;
  • Amazon RDS — banco de dados gerenciado;
  • MySQL — mecanismo de banco de dados;
  • Amazon VPC — rede utilizada para os recursos;
  • Security Groups — controle do tráfego entre EC2 e RDS;
  • Subnets — organização dos recursos dentro da VPC;
  • Multi-AZ — distribuição do banco entre Zonas de Disponibilidade;
  • Amazon Web Services Management Console — gerenciamento dos recursos AWS;
  • Aplicação Web / Address Book — aplicação utilizada para validar a integração.

Resultado

O projeto foi concluído com sucesso.

A aplicação hospedada no Amazon EC2 conseguiu se conectar ao Amazon RDS for MySQL utilizando o endpoint disponibilizado pelo serviço.

Também foi possível validar a persistência dos dados através das operações realizadas no Address Book.

Arquitetura final

Arquitetura Final

O resultado demonstrou na prática a separação entre camada de aplicação e camada de banco de dados, além do controle de comunicação utilizando Security Groups.

Aprendizados — O mais importante

O principal aprendizado deste laboratório foi entender que o Amazon RDS não é apenas um banco de dados hospedado na nuvem, mas um serviço gerenciado que permite separar a responsabilidade do banco da infraestrutura da aplicação.

Um conceito especialmente importante foi o controle de acesso utilizando Grupos de Segurança.

Em vez de liberar a porta 3306 para qualquer endereço IP, o banco foi configurado para aceitar conexões provenientes do Web Security Group.

Isso permite estabelecer uma relação lógica:

Relação lógica

Essa configuração ajuda a reduzir a exposição do banco de dados e demonstra a importância de controlar quem pode se comunicar com determinado recurso.

Multi-AZ

Outro aprendizado importante foi compreender o conceito de Multi-AZ.

O banco foi configurado para utilizar duas Zonas de Disponibilidade, permitindo que o RDS mantenha uma infraestrutura de alta disponibilidade para o banco.

Isso mostra uma diferença importante entre simplesmente executar um banco de dados e projetar uma solução pensando em disponibilidade e continuidade do serviço.

Situações importantes observadas

Durante o laboratório, foi necessário aguardar a conclusão do provisionamento do RDS antes de utilizar o banco. Diferentemente de alguns recursos que ficam disponíveis rapidamente, uma instância RDS pode levar alguns minutos para ficar pronta.

Também foi necessário utilizar o Endpoint fornecido pelo RDS para configurar a aplicação. Esse endereço funciona como o ponto de conexão utilizado pela aplicação para acessar o banco.

Uma decisão de laboratório que não deve ser reproduzida em produção

O laboratório orientou a desabilitar os backups automatizados para acelerar a implantação.

Essa configuração foi utilizada exclusivamente para o contexto do exercício.

Em um ambiente de produção, desabilitar backups de um banco de dados normalmente aumentaria o risco de perda de dados. Uma implementação real deveria considerar políticas de backup, retenção e recuperação de acordo com os requisitos da aplicação.

Principais conceitos aprendidos

  • Amazon RDS
  • MySQL
  • Amazon EC2
  • Amazon VPC
  • Sub-redes públicas e privadas
  • Grupos de Segurança
  • Comunicação entre Grupos de Segurança
  • Porta TCP 3306
  • Database Subnet Group
  • Multi-AZ
  • Alta disponibilidade
  • Endpoint de banco de dados
  • Persistência de dados
  • Separação entre aplicação e banco de dados
  • Segurança de rede
  • Banco de dados gerenciado na AWS

Conclusão

Resultado

Este projeto demonstrou na prática como integrar uma aplicação hospedada no Amazon EC2 com um banco de dados MySQL no Amazon RDS.

Além de configurar o banco, o laboratório permitiu trabalhar conceitos importantes de redes, segurança, disponibilidade e arquitetura de aplicações na AWS.

O principal aprendizado foi perceber a importância de separar responsabilidades: o EC2 pode ficar responsável pela aplicação enquanto o RDS assume o gerenciamento do banco de dados.

Essa arquitetura reduz a necessidade de administrar manualmente a infraestrutura do banco e permite construir soluções mais organizadas, seguras e preparadas para disponibilidade.

About

Simulei um cenário em que uma aplicação web hospedada em uma instância Amazon EC2 precisava se conectar a um banco de dados Amazon RDS for MySQL.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors