Conhecendo as opções de Bancos de Dados na Nuvem da AWS Daniel Bento, Solutions Architect © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Workshops • • • • 30/03 - Escalando sua aplicação para os primeiros 10 milhões de usuários 27/04 - Conhecendo as opções de Bancos de Dados na Nuvem da AWS 25/05 - Introdução a arquitetura serverless 14/06 - Automações de Segurança Agenda - Hoje • • • • • Apresentação - BDs na nuvem da AWS Break Lab Dúvidas Fechamento O que esperar desta apresentação • Conceitos: Transações ACID, Teorema CAP e persistência poliglota • Apresentar os serivços de Banco de Dados na AWS e classificá-los dentro dos tipos existentes • Quiz: Compreender qual cenário de utilização de cada serviço Transações ACID Transações ACID • Atomicity (Ou tudo é feito, ou nada é feito) • Consistency (levar o banco de dados de um estado consistente a um outro estado consistente) • Isolation (transações concorrentes resultam em um estado que seria obtido se fossem executadas sequencialmente – controle de concorrência – deadlocks) • Durability (efeitos de uma transação em caso de sucesso (commit) devem persistir no banco de dados) Teorema CAP Teorema CAP Você pode criar um banco que dados que seja: • Consistent (Escritas são atômicas e todas as solicitações subseqüentes recuperam o novo valor) • Available (O bd sempre retornará um valor enquanto um único servidor estiver rodando) • Partition tolerant (O sistema ainda funcionará mesmo se a comunicação do servidor for perdida temporariamente - ou seja, uma partição de rede) Teorema CAP Mas você só pode escolher 2: CA ou CP ou AP • CA (Redis, PostgreSQL, Neo4J) • CP (MongoDB, HBase) • AP (DNS, Amazon DynamoDB, CouchDB) – leituras eventualmente consistente e fortemente consistente Persistência Poliglota Arquitetura tradicional de banco de dados Client Tier Umbancode dadospara todos workloads App/Web Tier RDBMS Arquitetura tradicional de banco de dados Acesso Chave-valor Queries complexas Transaçõe Analytics Client Tier App/Web Tier RDBMS Todos forçados dentro do banco relacional 7 Bancos de dados em 7 semanas • A questão central: Que banco de dados ou combinação de bancos melhor resolve seu problema? • Analisa diversos bancos de dados, classificando-os em 5 tipos • Casos de uso para cada banco de dados Tipos de Banco de Dados Amazon RDS Aurora DIY EC2 Relacional/RDBMS Amazon DynamoDB Redis Memcached Riak Chave-Valor Amazon Redshift Amazon Athena HBase Cassandra Colunar Amazon DynamoDB ElasticSearch MongoDB Node4J TitanDB CouchDB Documentos Grafo Arquitetura da camada de dados na AWS Escolha omelhor tipo bancodedadospara cada workload Client Tier App/Web Tier Data Tier Cache Data Warehouse Blob Store NoSQL RDBMS Search Escolha o banco em função do workload Leituras quentes Queriescomplexas Transações Chave/valor Queriessimples Logs Analytics Data Tier Cache Data Warehouse Blob Store NoSQL RDBMS Search Sistemade Busca DIY EC2 Bancos de Dados na AWS • Faça você mesmo: rode seu banco de dados em EC2 • Maior poder de configuração • Praticamente qualquer tipo e engine de banco de dados EC2 Clientes que rodam banco de dados na AWS BDs Relacionais Amazon RDS Aurora DIY EC2 Como escalar bancos de dados relacionais? • Em algum momento, você chegará ao limite de sua máquina virtual. O que fazer? • Verticalmente • • Adicionar mais capacidade de CPU, Memória, RAM, Redes, etc. Horizontalmente • • • • • Réplicas de Leitura Sharding Federação Cluster Mudança de paradigma/tipo BDs Relacionais • Padrão mais comum e clássico de banco de dados • São sistemas baseados na teoria dos conjuntos implementados como tabelas bidimensionais com linhas e colunas • Fortemente tipado: tipos numéricos, strings, datas, blobs, etc. BDs Relacionais • Boa aderência • • • • Layout dos dados é conhecido antecipadamente, mas você ainda não sabe bem como usar os dados Transações ACID Queries complexas Não tão bons • • Quando seus dados são altamente variáveis ou profundamente hierárquicos. Ex: bd para descrever todas as criaturas da natureza Escalabilidade horizontal Amazon Relational Database Service (RDS) • Suporte multi-engine: Aurora, MySQL, MariaDB, PostgreSQL, Oracle, SQL Server • Provisionamento automático, patching, escalabilidade, backup/restore, failover • Alta disponibilidade com RDS Multi-AZ Amazon Aurora High Availability Multi-AZ Deployments Solução para tolerância à falhas Failover automático Replicação síncrona Ativado com poucos cliques Reinventando o Banco de Dados Relacional Amazon RDS for Aurora • Compatível com MySQL: 5x mais performanc no mesmo hardware: 100.000 escritas/s e 500.000 leituras/s • Em preview Aurora PostgreSQL • Escalável até 64 TB. Até 15 réplicas de leitura • Storage SSD customizado, altamente durável e tolerante à falhas. Replicado 6x em 3 Zonas de disponibilidade. Amazon DynamoDB NoSQL Chave-Valor Redis Memcached Riak NoSQL Chave-Valor • Um dos tipos mais simples de banco de dados • Mapeia chaves simples para possivelmente valores mais complexos como uma hashtable • Flexibilidade de implementação NoSQL Chave-Valor • Boa aderência • • • • Escalabilidade horizontal, extremamente rápido Problemas onde os dados não são altamente relacionados Offload de banco de dados Sessões de usuários • Não tão bons • Executar queries complexas em seus dados, diferentes de operações básicas CRUD (Criar, Ler, Atualizar, Excluir). Amazon DynamoDB Rápido, Flexível, NoSQL escalável História do NoSQL na Amazon Amazon DynamoDB • Totalmente gerenciado: você diz quantas leituras/s e escritas/s e nós fazemos o resto • Se sua aplicação é rápida com 10 usuários, então será rápida com 1M, 10M ou 100M. • Disponibilidade e durabilidade indistinguíveis de 100% Amazon DynamoDB Customers Case de Uso Lyft - Sistema de rastreamento de corridas “ • Lyft realiza até 8x mais corridas durante os horários de pico • Utilizado para rastreamento GPS em todas as corridas. Era tão simples escalar. Tínhamos dois botões: um para leitura e outro para escrita. Chris Lambert CTO, Lyft ” Cache em memória Memcached ou Redis Amazon ElastiCache Totalmente gerenciado; zero administração Key ElastiCache Features • • Totalmente gerenciado Multi-AZ • • • • • Totalmente gerenciado Persistência Réplicas de leitura Multi-AZ com auto-failover Redis cluster Amazon ElastiCache Customers Gaming AdTech Media Mobile Other Amazon Redshift Banco de Dados Colunar Amazon Athena HBase Cassandra Banco de dados Colunar • Armazena os dados por colunas, ao invés de mantê-los juntos por linhas • Redshift: baseado PostgreSQL, com armazenamento colunar • HBase: colunas são ”baratas” para serem adicionadas, o controle de versão é trivial, e não há custo de armazenamento real para valores despopulados Banco de dados Colunar • Boa aderência • • • Escalabilidade horizontal Problemas de ”Big Data” em clusters com centenas de nós Compressão e versionamento dos dados • Não tão bons • • É melhor projetar seu schema com base em como você planeja consultar os dados. Você deve ter alguma idéia antes de como seus dados serão usados – Impacta a performance. Amazon Redshift • Escala de Petabytes, relacional, MPP, data warehousing • Totalmente gerenciado com plataformas em SSD e HDD • 10x performance and 1/10 the price of other solutions • Comece pequeno e cresça conforme a demanda Arquitetura do Amazon Redshift Leader Node • • • SQL endpoint, JDBC/ODBC Stores metadata Coordinates query execution JDBC/ODBC Compute Nodes • • • • 10 GigE (HPC) Local, columnar storage Execute queries in parallel Load, backup, restore via Amazon S3 Load from Amazon DynamoDB or SSH Two hardware platforms • • • Optimized for data processing DS2: HDD; scale from 2TB to 2PB DC1: SSD; scale from 160GB to 326TB Ingestion Backup Restore Amazon EMR / HBase • Hadoop, HBase, Hive, Presto, Spark, Tez, Impala etc. • Totalmente gerenciado, escalabilidade automática com suporte a on-demand e instâncias Spot • Separação entre computação e storage. Múltiplos cluster consomem o mesmo dado no S3. Amazon Athena • Serviço serverless para executar queries SQL em dados no S3. Sem infraestrutura para gerenciar. • Não é necessário carregar os dados. Execute direto do S3. • Suporte para múltiplos formatos como CSV, TSV, JSON, Avro, ORC, Parquet Banco de dados orientados a Documentos Amazon DynamoDB ElasticSearch MongoDB CouchDB Banco de dados orientados a Documentos • Provê suporte para armazenamento, consulta e atualização de itens em um formato de documento, como JSON, XML e HTML • Documentos com qualquer número de campos. Suporte a objetos aninhados. • Relativamente fácil de se fazer shard e replicação em diversos servidores Banco de dados orientados a Documentos • Boa aderência • • • Problemas envolvendo domínios altamente variáveis Quando você não sabe de antemão como exatamente seus dados serão Bom mapeamento para modelos de programação orientada a objetos • Não tão bons • • Se você precisa de joins elaborados em esquemas de bancos relacionais altamente normalizados Normalização de dados, reduzindo ou eliminando cópias Enginedebusca eAnalytics Serviço gerenciado doElasticsearch eKibana Totalmente gerenciado;zeroadministração Altamente disponível econfiável Amazon Elasticsearch Service Integrado comoutrosserviços daAWS Amazon Elasticsearch Use Cases Logs analíticos & Monitoramento Operacoinal • Monitoramento de performance de suas aplicações • Detecção de problemas em tempo real • Mergulhe nos seus logs de maneira granular • Visualização através do Kibana Busca Tradicional • Capacidades de busca em diversos documentos • Funcionalidades como: text matching, faceting, filtering, fuzzy search, auto complete, and highlighting Banco de dados em Grafos Node4J Titan Banco de dados em Grafos • Focado mais na inter-relação dos dados do que nos valores reais • Queries consistem em percorrer nós e as arestas que os ligam Banco de dados em Grafos • Boa aderência • • • Aplicações que modelam redes Buscas em grafos Ex: Nós representam usuários que possuem vários tipos de relacionamentos com outros • Não tão bons • • Particionamento de redes. Não escalam bem. Será uma peça de um sistema maior, com o grafo armazenado em outro lugar. Titan + DynamoDB Amazon DynamoDB Titan em EC2 • Utilize o DynamoDB como storage backend para o Titan para buscas em grafos • Plugin disponível no GitHub • https://aws.amazon.com/blogs/bigdata/building-a-graph-database-on-awsusing-amazon-dynamodb-and-titan/ Quiz Quiz • Preocupado com a segurança, o CISO da empresa decidiu: a partir de hoje ninguém mais vai logar em produção! Todos os logs dos 1000 servidores deverão ser centralizados. Encontrem um mecanismo para busca dos logs e aprofundamento para trobleshooting. Bônus: Dashboard com status em tempo real do ambiente. Orientado a documentos ElasticSearch com Kibana Quiz • Você foi contratado para construir uma aplicação de troca de pontos de um programa de fidelidade de uma das maiores operadoras de cartão de crédito do Brasil. Você poderá consultar seu saldo, trocar por produtos ou doar seus pontos para outros usuários. Consultas complexas envolvendo a junção de diversas entidas. Banco de dados Relacional Amazon RDS Quiz • Para troca dos pontos, você deve implementar uma funcionalidade similar a um carrinho de compras. Caso um usuário vá embora do site, o carrinho deverá guardar os produtos adicionados na última visita. Banco de dados chave-valor Amazon DynamoDB Quiz • Numa segunda fase, a empresa de cartões quer prover capacidades analíticas para seus usuários. O diretor financeiro requisitou que um sistema de relatórios fosse criado. O sistema deve mostrar as movimentações realizadas no dia anterior (1) de maneira consolidada e (2) com possibilidade de drilldown para detalhamento. Banco de dados Relacional com Réplica de Leitura Banco de dados Colunar – Amazon Redshift Quiz • Devido ao sucesso do programa de fidelidade, o site de troca de ponto dobrou a cada semana a quantidade de usuários. A escalabilidade tornou-se limitada pois todas as sessões dos usuários são gravadas no mesmo servidor que a aplicação roda, consumindo muita memória. Que tipo de estrutura pode nos auxiliar a resolver esse problema? Banco de dados Chave-Valor ElastiCache com Redis Quiz • Percebendo o aumento de usuários, a área de marketing decidiu criar uma rede de contatos dentro da plataforma de troca de pontos. Requisitou que fossem criadas as seguintes funcionalidades: • • • Listar seus contatos adicionados dentro da plataforma Sugestão de contatos Mostrar o grau de distância entre você e um outro usuário: quantas pessoas estão entre você e o usuário em questão Banco de Dados em Grafo Node4J Próximos passos? Leia! aws.amazon.com/documentation aws.amazon.com/architecture aws.amazon.com/start-ups Comece a usar AWS agora! aws.amazon.com/free/ • • • • 30/03 - Escalando sua aplicação para os primeiros 10 milhões de usuários 27/04 - Conhecendo as opções de Bancos de Dados na Nuvem da AWS 25/05 - Introdução a arquitetura serverless 14/06 - Automações de Segurança Obrigado!!