I ♥ Dynamo DB

Felipe Rohde
3 min readJan 12, 2015

--

Recentemente disponibilizei via NPM um pacote que desenvolvi para abstração de métodos do banco de dados NoSQL DynamoDB. Mas este post não se trata do pacote em si, mas do próprio banco, vou tentar te convencer porque você deveria começar a dar uma atenção para ele.

Não vou me ater a detalhes de um banco não relacional, se nunca ouviu falar sugiro que dê uma pesquisada, o meu foco aqui mostrar como ele é foda vantajoso para sua startup no que se trata a confiabilidade e escalabilidade.

A Gênese do DynamoDB

A AWS gastou muito tempo e neurônios de seus arquitetos projetando, desenvolvendo e provisionando um modelo de banco aparentemente simples, isto é, como qualquer outro NoSQL, mas não. Na AWS, cada time opera como uma startup diferente, e esta forma de trabalho os levou a ter a consciência dos custos e desafios de uma startup em desenvolver e monitorar bancos de dados modulares que necessitam de alto poder de escalabilidade, e por vezes enfrentar o efeito Sladhsot (crescimento repentino no tráfego de alguma aplicação), e com economia. Dentre outros detalhes, o foco foi flexibilidade, controle de desempenho, granularidade e minimizar o tempo gasto com benchmarks e problemas relacionados a banco de dados.

Normalmente, um banco de dados que pode ir de 10GB para 100GB, e suportar um aumento repentino no tráfego sem ocasionar gargalos e lentidão é um árduo trabalho, e muita dor de cabeça para os engenheiros, o que muitas vezes uma startup não tem. Isto envolve benchmarks de hardware, drives, rede, e principalmente o sistema de replicação, pode ser complexo, não? Para sumarizar, o desafio era tornar tudo isto mais simples.

Baseado nisto, nasceu o DynamoDB, que permite que seja provisionado a leituras e escritas por segundo, e somente isto já o suficiente para tudo que foi descrito anteriormente aconteça de forma transparente. O dynamoDB é um serviço 100% gerenciado, sem necessidade de download de software ou drivers, é provisionar e utilizar. Cada tabela é replicada em 3 data centers, e uma escrita só é validada quando for persistida em no mínimo 2 data centers. Tudo isto ocorre sem que o desenvolvedor sequer pense em como configura-lo. Isto é, a startup pode focar em crescimento sem necessidade de esquentar a cabeça pensando no provisionamento do banco de dados.

O mais legal disto, é que é possível começar utilizando uma tabela com 10 operações de leitura e escrita por segundo, e com um comando na API, provisionar para 1000 operações por segundo, e funcionará, como trocar o canal da TV. Vale mencionar que o Dynamo é um banco chave-valor, e isto significa que ele indexa muito rápido, tão rápido como a busca de um objeto no Javascript. Cada primary key com valor diferente é persistida em diferentes clusters, e todo trabalho pode ser paralelizado. Mas isto é assunto para outro post, já deve ter passado os 5 minutos de leitura.

E o preço — não monetário- disto?

Estudar e aplicar os conceitos NoSQL em sua aplicação. Díficil? Não, é apenas outro paradigma. Vale a pena? Muito. Além de que, você pode fazer o download do Dynamo DB Local, para desenvolver na sua própria máquina.

Empresas têm utilizado o Dynamo para suportar campanhas no Super Bowl, aplicações no Facebook, coletar e analisar dados de redes de sensores, rastreamento de informações de games e mais. Clientes como Eletronic Arts, News International, SmugMug, Shazam, IMdb e muitos outros. Aliás, a Eletronic Arts baixou o custo em mais de 90% migrando de MySQL para Dynamo no game “The Simpsons™: Tapped Out”.

Vale a pena mais 30 segundos de leitura.

O Shazam teve um caso particularmente curioso, e de uso extremo, comprovando como o Dynamo pode ser aplicado rápidamente em aplicações que necessitam de alta escalabilidade. O aplicativo mobile foi integrado com as propagandas do Super Bowl, permitindo uma experiência interativa muito maior. Eles precisavam estar aptos a manipular um crescimento enorme no tráfego durante o evento, e utilizaram o Dynamo para isto. Foi necessário apenas 3 dias para ir da fase de design para a fase de produção para um dos maiores eventos de publicidade do ano.

Convencido?

--

--

Felipe Rohde

A good Javascript and Golang developer. Tech lead at EasyAuth and owner of Simple Image Cloud.