Workshops 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
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.
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 Um banco de dados para 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 Amazon DynamoDB Redis Memcached Riak Amazon Redshift Amazon Athena HBase Cassandra Amazon DynamoDB ElasticSearch MongoDB CouchDB Neo4J TitanDB Relacional/RDBMS Chave-Valor Colunar Documentos Grafo
Arquitetura da camada de dados na AWS Escolha o melhor tipo banco de dados para cada workload Client Tier App/Web Tier Cache NoSQL Data Tier Data Warehouse RDBMS Blob Store Search
Escolha o banco em função do workload Chave/valor Queries simples Leituras quentes Queries complexas Transações Analytics Logs Sistema de Busca Data Tier Cache NoSQL Data Warehouse RDBMS Blob Store Search
DIY EC2 Bancos de Dados na AWS Faça você mesmo: rode seu banco de dados em EC2 Maior poder de configuração EC2 Praticamente qualquer tipo e engine de banco de dados
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.
NoSQL Chave-Valor Amazon DynamoDB 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 Era tão simples escalar. os horários de pico Tínhamos dois botões: um para leitura e outro para escrita. Chris Lambert CTO, Lyft Utilizado para rastreamento GPS em todas as corridas.
Cache em memória Amazon ElastiCache Memcached ou Redis 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
Banco de Dados Colunar Amazon Redshift 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 Local, columnar storage Execute queries in parallel Load, backup, restore via Amazon S3 Load from Amazon DynamoDB or SSH 10 GigE (HPC) 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
Engine de busca e Analytics Serviço gerenciado do Elasticsearch e Kibana Totalmente gerenciado; zero administração Altamente disponível e confiável Amazon Elasticsearch Service Integrado com outros serviços da AWS
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 Neo4J 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 Utilize o DynamoDB como storage backend para o Titan para buscas em grafos Plugin disponível no GitHub Titan em EC2 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 Neo4J
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!!