Caras, estamos há dois dias da estréia do Star Wars no cinema. Nível de ansiedade nas alturas 🙂
Mas, voces não vieram aqui para falar de Star Wars. Então, vamos ao que interessa, e, deixemos que lado negro da força para iluminar sua mente.
Sopa de letrinhas: AWS é Amazon Web Services. Aliás, acho que “web”nem caberia mais, visto que os serviços da Amazon alcançou patamares muito mais elevados. RDS é a sigla para Relational Database Services, e, EC2 Elastic Compute Cloud.
Se voce jogar tudo isso é um liquidificador Kaminoano, teremos então um serviço de cloud, ideal para hospedagem de servidores de banco de dados.
A pergunta que sempre me fazem é: Devo hospedar meu banco de dados MySQL em RDS ou EC2?
Minha resposta padrão sempre prevalece: “Depende, pequeno Padawan”.
Vamos entender, em linhas gerais, quem é quem:
RDS: Uma instância RDS é uma abstração de um servidor de banco de dados. Além de não a figura do hardware, não tem sistema operacional, e, nem a instalação do banco de dados. Pode ser entendido, de maneira crua, como um banco de dados virtualizado. É um banco de dados fornecido como serviço (DBaaS). Atualmente, os seguintes bancos podem ser contratados como RDS: MySQL, MariaDB, Aurora, Oracle, SQL Server, e, PostgreSQL.
EC2: O EC2 é mais do mesmo, é a boa e velha VM (máquina virtual) que vc virtualiza o hardware, instala e configura o sistema operacional de sua preferência, o sistema de arquivos, e, então o banco de dados. Tudo podendo ser configurado sob medida e gosto. Qualquer banco de dados pode ser instalado num ambiente EC2.
Há muitos bons artigos sobre RDS e EC2, e já adianto que há defensores, fervorosos, dos dois lados. A melhor pessoa para te dizer qual o melhor caminho a seguir: RDS ou EC2, é voce mesmo. Portanto, vai um guia básico de perguntas que voce mesmo deve se fazer para tomar a melhor decisão.
Facilidade na implementação e gestão do ambiente
RDS irá te poupar boas horas implementação de um novo ambiente, lembre-se, vc não precisa criar a VM, instalar o SO, configurar o sistema de arquivos, instalar o banco de dados. Um clique, e, Shazam! Pronto para uso. Contudo, voce está levando um pacotão da alegria com algumas personalizações, e, é isso.
EC2 é mais bruto. Voce terá que criar a VM, instalar e configurar o SO de sua preferência, configurar o sistema de arquivos mais adequado à sua aplicação, instalar e configurar o banco de dados.
RDS é clique e seja feliz. Deixe a AWS se preocupar com atualizações e patches.
EC2 é Lado Negro da Força. É controle. Como bom Sith eu prefiro.
Performance
De verdade, não tenho uma fórmula mágica para voces. Tenho clientes que RDS performa melhor do que o EC2. Fato. Dos testes que fiz, 78% dos casos EC2 bem configurado roda melhor e mais rápido do que RDS. Mas, em 22% dos casos, de fato, o RDS rodou melhor.
Locks Inexplicáveis
O que me incomoda em ambientes RDS são locks que acontecem, pontualmente, sem nenhuma lógica. “Ah, é problema da sua configuração ou aplicação”. Oi? A AWS não diz que assume essa parte? Em todas as nossas instâncias, de clientes diferentes, de nichos diferentes, configurações e instâncias de tamanhos diferentes, esse comportamento é observado, em maior ou menor grau.
Custo
Alguns gênios tem postado que RDS é mais barato. O que tenho observado é que o RDS é de 20% a 38% mais caro que o EC2. No entanto, temos que considerar aqui as horas que deixaremos de usar com instalação, atualização, aplicação de patches, etc. Outro fator de custo que não atinge o MySQL, mas, deve ser considerado nos casos de Oracle e SQL Server é o modelo BYOL (Bring Your Own License), no qual voce leva sua licença para o RDS, podendo influenciar positiva ou negativamente no custo.
Gerenciamento
Voce não terá usuário SUPER do MySQL. Então, esqueça alguns comandos. Mas, a AWS providenciou uma série de procedures que tentam mitigar essa ausência do usuário SUPER. Isso é particularmente ruim, pois tira uma parte da capacidade de atuação em situações emergenciais do DBA.
Criptografia dos Dados
O RDS não permite criptografia dos dados. Então, dependendo da criticidade e sensibilidade dos seus dados, vá direto para o EC2.
Plugins do MySQL
Se para voce plugins de autenticação, auditoria, replicação semi-síncrona, entre outros, é uma necessidade, RDS não é para voce. A rigor, o RDS não permite nenhum tipo de plugin. Ah, nada de GTID (Global Transaction ID). Para usar esses plugins, só no EC2.
E agora?
Use o melhor dos dois mundos. Faça as perguntas a si mesmo, e, veja qual aplicação deve ir para o RDS, e, qual deve ir para o EC2. Use a técnica de balanceamento de carteira feita pelos investidores e economistas, afim de mitigar riscos.
O que couber no RDS, use o RDS para diminuir suas horas com gestão de mudança e atualização de Sistema Operacional e Banco de Dados.
O que for importante, sensível, crítico coloque no EC2, aonde, voce tem maior controle do ambiente. E, tudo bem, investir um pouco mais de tempo.
Ótimo artigo.
Estou com um projeto pequeno e pessoal, queria migrar tudo para Amazon, meu maior intuito é aprender a gerenciar aplicativos na nuvem e não manter uma aplicação que vai me gerar lucro, claro após aprender quero criar aplicações para terceiros e ter lucro, mas quero usar o meu próprio aplicativo como cobaia.
Tem um exemplo de quanto custa mensalmente?
Achei a cobrança muito complexa.
Meu aplicativo atualmente roda em uma hospedagem que pago anualmente. E o custo mensal sai por uns R$ 10,00 tenho mysql e php. Já estou usando 1 ano gratuito de Amazon S3 para guardar arquivos.