Você está na página 1de 189

Serviços de Armazenamento,

Banco de Dados e Analytics


Marcelo Maffra
2023
SUMÁRIO
Capítulo 1. AWS Data Platform .................................................................................. 6

1.1. O que é uma plataforma de dados? ............................................................................ 6

1.2. As principais vantagens das plataformas de dados ......................................... 10

1.3. Plataformas de dados vs Big Data ............................................................................ 13

1.4. Elementos e características das plataformas de dados modernas .......... 17

1.5. Como escolher a melhor plataforma de dados?................................................. 22

Capítulo 2. Serviços de armazenamento ............................................................ 27

2.1. Amazon Simple Storage Services (S3) ................................................................... 27

2.2. Amazon S3 Glacier ........................................................................................................... 34

2.3. Amazon Elastic Block Store......................................................................................... 38

2.4. Amazon Elastic File System ........................................................................................ 45

2.5. Amazon Elastic FSx ......................................................................................................... 51

2.6. Amazon Snow Family...................................................................................................... 56

Capítulo 3. IaaS para bancos de dados ............................................................... 61

3.1. Conceitos básicos e cenários...................................................................................... 61

3.2. IaaS para bancos de dados.......................................................................................... 63

Capítulo 4. Amazon RDS ............................................................................................ 67

4.1. O que é o Amazon RDS? ................................................................................................ 67

4.2. Instâncias de bancos de dados ................................................................................. 70

4.3. Classes das instâncias de bancos de dados ........................................................ 72

4.4. Práticas recomendadas no Amazon RDS .............................................................. 75

4.5. Backup, snapshot e replicação do Amazon RDS................................................ 78

Capítulo 5. Amazon Aurora ....................................................................................... 83

5.1. O que é o Amazon Aurora?........................................................................................... 83

5.2. Classes da instância de banco de dados Aurora................................................ 85

2
5.3. Armazenamento e confiabilidade ............................................................................. 87

5.4. Segurança, alta disponibilidade, tolerância às falhas e replicação .......... 91

Capítulo 6. Amazon DynamoDB .............................................................................. 98

6.1. O que é o Amazon DynamoDB.................................................................................... 98

6.2 Principais recursos e componentes........................................................................102

6.3. Alta disponibilidade, durabilidade e melhores práticas ............................... 105

Capítulo 7. Amazon DocumentDB ...................................................................... 109

7.1. O que é o Amazon DocumentDB? ...........................................................................109

7.2. Principais recursos e componentes.......................................................................112

7.3. Alta disponibilidade, durabilidade e melhores práticas ............................... 114

Capítulo 8. Amazon ElastiCache.......................................................................... 119

8.1. O que é o Amazon ElastiCache? ..............................................................................119

8.2. Memcached e Redis.......................................................................................................123

Capítulo 9. Amazon Keyspaces ............................................................................ 129

9.1. O que é o Amazon Keyspaces?.................................................................................129

Capítulo 10. Amazon Neptune ............................................................................. 136

10.1. O que é o Amazon Neptune?..................................................................................136

10.2. Principais recursos e componentes ....................................................................139

Capítulo 11. Amazon Quantum Ledger Database (QLDB) ....................... 144

11.1. O que é o Amazon Quantum Ledger Database (QLDB)? ........................... 144

11.2. O que é o Amazon Quantum Ledger Database (QLDB)? ........................... 147

Capítulo 12. Amazon Timestream....................................................................... 151

12.1. O que é o Amazon Timestream? ...........................................................................151

12.2. Principais benefícios, melhores práticas e segurança ............................... 155

Capítulo 13. Amazon OpenSearch Service ..................................................... 160

3
13.1. O que é o Amazon OpenSearch Service?.......................................................... 160

13.2. Principais recursos, componentes e práticas recomendadas ................162

Capítulo 14. Introdução à Data Analytics na AWS ..................................... 168

14.1. Serviços da AWS para Data Warehouse Moderno / Big Data (Parte 1)
......................................................................................................................................................... 168

14.2. Serviços da AWS para Data Warehouse Moderno / Big Data (Parte 2)
......................................................................................................................................................... 171

14.3. Serviços da AWS para Data Warehouse Moderno / Big Data (Parte 3)
......................................................................................................................................................... 176

AWS Lake Formation, Amazon Kinesis, Amazon Managed Streaming for


Apache Kafka (Amazon MSK) e Amazon QuickSight..............................................176

Capítulo 15. Introdução à IA e Machine Learning na AWS .................... 181

15.1. Introdução à IA e Machine Learning na AWS ................................................181

Referências ...................................................................................................................... 185

4
1
Capítulo 1. AWS Data Platform
1.1. O que é uma plataforma de dados?
Dados
Apesar da palavra dados ser muito utilizada para se referir a
informações, estes dois conceitos possuem diferentes significados em TI.
Então, o que são dados?

Dados são registros, fatos brutos coletados que não possuem


qualquer significado, contexto ou nexo com a realidade.

Um dado pode ser uma letra, um número, uma palavra, bem como
conjuntos de números e vocábulos desorganizados, o qual não transmite
nenhuma informação ou conhecimento. Por exemplo, veja a tabela abaixo:

Figura 1 – Exemplo de dados.

Fonte: Marcelo Maffra.

Informação
Quando os dados são estruturados, organizados, processados,
contextualizados ou interpretados, há a geração de informação.

Assim, quando um ou um conjunto de dados são tratados, de modo


a transmitir uma mensagem dentro de um contexto real, temos as
informações que são providas de propósito, significado e relevância,
podendo ser utilizadas pelo ser humano durante a tomada de decisão, por
meio da sua compreensão e análise. Ainda está com dúvidas? Vamos a mais
um exemplo.

6
Suponha-se que os dados expostos anteriormente sejam
organizados de modo a possuírem um significado concreto, como podemos
ver a seguir:

Figura 2 – Exemplo de dados.

Fonte: Marcelo Maffra.

Analisando a organização dos dados acima, agora é possível saber o


significado deles? Sim, pode-se observar que os registros estão relacionados
ao salário da função de médico em quatro cidades. Desse modo, os dados
que são organizados e tratados, possuindo um significado em um contexto,
são chamados de informações.

Conhecimento
O conhecimento é gerado através da habilidade em analisar as
informações encontradas. Em outras palavras, o conhecimento acontece
quando as informações são integradas e processadas, sendo que, através da
análise do todo, podem ser encontradas determinadas conclusões.

Por exemplo, qual a conclusão que pode ser tirada através da análise
das informações presentes na tabela anterior?

Através da consolidação de todas as informações apresentadas, é


possível estabelecer que a cidade Belo Horizonte possui o maior salário de
médico entre as cidades analisadas, além de São Paulo possuir o menor.
Assim, por meio de análises, o conhecimento produziu reflexões e
conclusões que as informações, por si só, não são capazes de gerar.

7
Pirâmide do conhecimento
A pirâmide do conhecimento é uma hierarquia de conceitos muito
utilizada na análise de dados.

Figura 3 – Pirâmide do conhecimento.

Fonte: https://professorluizroberto.com.

Conceitos básicos
Uma plataforma de dados é um conjunto integrado de tecnologias
que atendem coletivamente às necessidades de dados de ponta a ponta de
uma organização. Permite a aquisição, armazenamento, preparação, entrega
e governança de seus dados, bem como uma camada de segurança para
usuários e aplicativos. É uma solução completa para ingerir, processar,
analisar e apresentar os dados gerados pelos sistemas, processos e
infraestruturas da organização digital moderna.

Uma plataforma de dado é mais do que uma plataforma de BI


(Business Intelligence). Ela é a chave para desbloquear o valor de seus
dados.

8
A Inteligência de Negócios combina análise de negócios, mineração
de dados, visualização de dados, ferramentas e infraestrutura de dados e
práticas recomendadas para ajudar as organizações a tomar mais decisões
orientadas por dados. Na prática, você sabe que tem inteligência de
negócios moderna quando tem uma visão abrangente dos dados de sua
organização e usa esses dados para impulsionar mudanças, eliminar
ineficiências e adaptar-se rapidamente às mudanças de mercado ou de
fornecimento.

Figura 4 – Recurso de uma plataforma de BI que ajuda a identificar rapidamente


possíveis explicações de discrepâncias e tendências nos dados.

Fonte: www.tableau.com.

Uma verdadeira plataforma de dados gerencia mais tipos e


estruturas de dados em toda a empresa, incluindo não apenas os dados
usados para garantir segurança, privacidade e conformidade, mas também
dados de operações técnicas e de TI — todos os dados que sua empresa
ingere ou gera.

O objetivo de uma plataforma de dados é fornecer insights (ideias)


de negócios em tempo real, por meio de análises de maneira econômica,
escalável e segura.

9
Podemos concluir que as plataformas de dados são essenciais para
entender, governar e acessar os dados da sua organização. No final, tudo se
resume ao que você deseja fazer com seus dados e como deseja fazê-lo. Seja
para criar uma plataforma de dados do cliente ou uma plataforma de big
data, as plataformas de dados podem desbloquear o potencial e a receita
(valor) que seus dados estão ocultando.

1.2. As principais vantagens das plataformas de dados


Além de permitir a análise de dados, as plataformas de dados
também podem migrar dados, limpar dados (tratar os dados) e armazenar
dados. Elas afetam todo o ciclo de vida dos dados, desde a ingestão até a
produção e a entrega dos relatórios corporativos, com espaço para
compartilhamento de dados, colaboração e modelos de Inteligência
Artificial (Artificial Intelligence – AI) e Aprendizado de Máquina (Machine
Learning – ML) ao longo do caminho.

A Inteligência Artificial é uma área na Ciência da Computação


responsável por simular a inteligência e o comportamento humano usando
apenas máquinas. “Fazer a máquina comportar-se de tal forma que seja
chamada inteligente caso fosse este o comportamento de um ser humano”
(John McCarthy).

O Aprendizado de Máquina é uma tecnologia onde os computadores


têm a capacidade de aprender de acordo com as respostas esperadas por
meio de associações de diferentes dados, os quais podem ser imagens,
números e tudo que essa tecnologia possa identificar.

As vantagens de uma plataforma de dados giram em torno da


combinação de recursos de ponta a ponta, que substituem as soluções
pontuais usadas anteriormente para fornecer serviços de dados.

Muitas organizações se contentam com armazenamentos de dados


operacionais (Operational Data Storage – ODS), Data Warehouses (DW) ou

10
Data Marts (DMs), que podem não funcionar juntos de forma eficaz e limitar
a capacidade de dimensionamento. Uma plataforma de dados integra as
capacidades dessas soluções e traz todos os dados em um só lugar, onde
podem ser protegidos, compartilhados e usados de forma mais eficaz.

Uma plataforma de dados oferece outros benefícios significativos


para grandes organizações, incluindo:

• Centralizar e padronizar funções de dados em uma plataforma


baseada em nuvem.

• Gerenciamento central da tecnologia, em vez de se espalhar pelos


departamentos.

• Relatórios melhores e simplificados.

• Melhor análise de dados, mais rápida e mais abrangente.

Em essência, uma plataforma de dados eficaz permitirá que você


trabalhe com todo e qualquer conjunto de dados, independentemente de
qual seja, onde esteja (banco de dados estruturado ou vasto data lake) ou
quanto dele existe, com uma velocidade e um grau de confiança que fornece
insights em tempo real.

Uma plataforma de dados moderna é uma combinação de


tecnologias interoperáveis, escaláveis e substituíveis, trabalhando juntas
para atender às necessidades gerais de dados de uma empresa.

Principais diferenças entre um Data Warehouse e um Data Mart


As principais diferenças entre um Data Warehouse e um Data Mart
estão resumidas na tabela a seguir:

11
Data Warehowse Data Mart

Um data warehouse armazena Um data mart carrega dados


dados de várias áreas de assunto. relacionados a um departamento,
como RH, marketing, finanças etc.

Ele atua como um repositório É uma subseção lógica de um data


central de dados para uma empresa. warehouse no qual os dados são
depositados em servidores baratos
para aplicativos departamentais
específicos.

Um data warehouse é projetado Um banco de dados mart usa um


usando estrela, floco de neve, esquema em estrela para projetar
galáxia ou esquema de constelação tabelas.
de fatos. No entanto, o esquema em
estrela é o mais amplamente usado.

É complicado projetar e usar um Projetar e usar um data mart é


data warehouse porque geralmente comparativamente mais fácil devido
inclui uma grande quantidade de ao seu tamanho pequeno (menos de
dados, mais de 100 GB. 100 GB).

Um data warehouse é projetado Um data mart foi desenvolvido para


para suportar o processo de tomada grupos de usuários ou
de decisão em uma empresa. Assim, departamentos corporativos
oferece um entendimento em toda a específicos. Assim, oferece
empresa de um sistema interpretação departamental e
centralizado e sua autonomia. armazenamento descentralizado de
dados.

Um data warehouse armazena Um data mart mantém dados


informações detalhadas na forma altamente desnormalizados em uma
desnormalizada ou normalizada. forma resumida.

12
Um data warehouse tem grandes Um data mart tem dimensões
dimensões e integra dados de um menores e os dados são integrados a
grande número de fontes, o que partir de um número menor de
pode causar risco de falha. origens, portanto, há menos risco de
falha.

Um data warehouse é orientado ao Um data mart é destinado a áreas


assunto e variante no tempo, no específicas relacionadas a um
qual os dados existem por um negócio e retém dados por um
período mais longo. período mais curto.

1.3. Plataformas de dados vs Big Data


As pessoas costumam se referir às plataformas de dados com nomes
diferentes. Às vezes esses nomes significam a mesma coisa. Às vezes, elas
se referem a diferentes tipos de dados que hospedam e ao tipo de carga de
trabalho que processam. Para tornar as coisas ainda mais complicadas, há
uma sobreposição entre alguns de seus casos de uso.

O conceito de “Big Data” foi popularizado na década de 1990,


quando o volume de dados gerados pela humanidade iniciou uma trajetória
de crescimento exponencial. Mas neste ponto, todos os dados são big data.
Consumidores individuais têm acesso a hardware e sistemas em nuvem com
petabytes de armazenamento. Organizações profissionais – empresas e
setor público – estão gerando quantidades impressionantes de dados.

Existem três características principais que definem “Big Data” (que


podemos chamar de “dados” daqui para frente):

• Volume — A quantidade de dados gerados e armazenados.

• Variedade — O tipo e a natureza dos dados.

• Velocidade — A velocidade na qual os dados são gerados e


processados.

13
Por causa do crescimento extraordinário nesses três vetores,
qualquer plataforma de dados que possa acompanhar as demandas
organizacionais atuais, pode ser considerada uma plataforma de big data.

Plataformas de Dados Corporativos (EDP)


São plataformas de dados que fornecem acesso centralizado aos
ativos de dados de uma empresa. Normalmente existem no ambiente local
ou híbrido (local e na nuvem) e são compostos por fontes de dados
tradicionais.

Pode incluir bancos de dados de processamento de transações em


tempo real (OLTP – Online Transactions Processing), Data Warehouses
(gerenciamento de dados projetado para ativar e fornecer suporte às
atividades de BI) e um Data Lake (repositório que armazena grandes e
variados conjuntos de dados brutos em seu formato nativo). Também
incluem ferramentas e processos para aquisição dos dados, preparação dos
dados e geração de relatórios analíticos.

Plataformas de Dados Modernas (MDP)


É uma evolução natural da plataforma de dados corporativos (EDP).
Possui um conjunto mais amplo de recursos flexíveis, além dos de um EDP.
Geralmente, nasce da necessidade de armazenar e processar variedades e
diferentes volumes de dados. Pode permitir o processamento de dados de
streaming, além da carga de trabalho em lote mais tradicional da EDP.

Pode permitir o processamento nativo de dados estruturados,


semiestruturados ou não estruturados em grande escala. Geralmente usam
tecnologias de nuvem (nem sempre são baseados em nuvem) para modelos
de custos acessíveis, escalabilidade elástica e serviços gerenciados.

14
Plataformas de Dados em Nuvem (CDP)
É um termo genérico para plataformas de dados inteiramente
construídas com tecnologias de computação em nuvem e armazenamentos
de dados. Pode consistir em armazenamento de objetos, bancos de dados
NoSQL (bancos de dados não relacionais) e bancos de dados relacionais
gerenciados, Data Warehouses, clusters Spark, Notebooks Analytics, filas de
mensagens e Middleware que os unem. Podem abranger Plataformas de
Dados de Nuvem (CDP) e Plataformas de Dados Corporativos (EDP), por
exemplo, plataformas de Planejamento de Recursos Empresariais
(Enterprise Resource Planning – ERP), de gerenciamento de cadeia de
suprimento (Supply Chain Management), de Gestão de Relacionamento com
o Cliente (Customer Relationship Management – CRM) e de finanças.

Data Warehouse é um tipo de sistema de gerenciamento de dados


projetado para ativar e fornecer suporte às atividades de Business
Intelligence, especialmente a análise avançada. Os Data Warehouses
destinam-se exclusivamente a realizar consultas e análises avançadas e
geralmente contêm grandes quantidades de dados históricos. Os dados em
um Data Warehouse geralmente são derivados de uma ampla variedade de
fontes, como arquivos de log de aplicativos e aplicativos de transações.

Clusters Spark são estruturas de processamento paralelo que dão


suporte ao processamento de dados na memória, para melhorar o
desempenho de aplicativos de análise de Big Data.

Notebooks Analytics são uma forma de computação interativa, na


qual os usuários escrevem e executam o código, visualizam os resultados e
compartilham insights. Normalmente, os Cientistas de Dados usam
notebooks para experimentos e tarefas de exploração.

Middleware, em resumo, age como uma “camada”, capaz de fazer a


mediação entre várias tecnologias de software, de modo que as informações,
de diferentes fontes, sejam movidas ao mesmo tempo que suas diferenças

15
de protocolos, plataformas, arquiteturas, ambientes e sistemas operacionais
não interfiram no processo.

Plataformas de dados do cliente (CDP)


Se concentra exclusivamente em dados relacionados ao cliente.
Reúne dados de clientes de várias fontes, como plataformas de Gestão de
Relacionamento com o Cliente (Customer Relationship Management –
CRM), sistemas transacionais, mídias sociais, e-mails, sites, anúncios
digitais ou lojas de comércio eletrônico. Os dados agregados criam um perfil
de usuário completo que pode ser usado para marketing e outros fins
comerciais.

Plataforma de análise de dados, plataforma de big data ou plataforma de


análise de big data
São plataforma de dados especializadas para fins de análise de
dados. Representam a coleção de serviços e recursos que permite que os
usuários executem consultas complexas em grandes quantidades de dados
em qualquer formato e, em seguida, analisem, combinem e explorem esses
resultados de consulta para criar visualizações significativas.

Geralmente combinam várias ferramentas e utilitários de big data


em um só lugar e cuidam da escalabilidade, disponibilidade, segurança e
desempenho nos bastidores. Na maioria das vezes, fazem parte de um
pacote de nuvem ou de uma solução SaaS (Software as a Service) e são
oferecidas como DaaS (Data as a Service).

Embora as sobreposições entre alguns de seus casos de uso possam


gerar certa confusão, e guardadas as devidas proporções, uma “plataforma
de big data” não é diferente de uma “plataforma de dados”, pois ambas se
destinam a lidar com dados em escala.

16
1.4. Elementos e características das plataformas de dados modernas
Construir uma plataforma de dados moderna requer a adoção de
uma Arquitetura de Dados Moderna (Modern Data Architecture – MDA), que
especifica como os dados serão coletados, limpos, armazenados,
transformados, processados e disponibilizados aos consumidores.

A arquitetura de dados moderna é projetada proativamente com


escalabilidade e flexibilidade em mente, antecipando necessidades
complexas de dados.

A imagem abaixo demonstra as principais características e


componentes de uma arquitetura de dados moderna.

Figura 5 – Características e componentes de uma arquitetura de dados


moderna.

Fonte: https://www.weka.io.

A arquitetura de dados moderna também tem as seguintes


características:

• Poder para o usuário.

17
• Poder da nuvem híbrida.

• Camada de dados virtual compartilhada.

• Integração de dados escalável.

• Lógica de processamento extensível.

• Governança de ponta a ponta.

• Análise de autoatendimento.

• Automação para flexibilidade.

• Camada de segurança única.

Poder para o usuário: os usuários podem trazer seus próprios dados


para a plataforma e desenvolver seu próprio pipeline para ingerir, limpar,
analisar e relatar esses dados.

Poder da nuvem híbrida: adota o melhor do mundo on-premise


(ambiente local) e da nuvem. O ambiente local garante alterações mínimas
nos aplicativos legados, e a nuvem garante capacidade escalável e elástica,
poder de processamento, alta disponibilidade, aplicativos pré-criados e
segurança.

Camada de dados virtual compartilhada: pode lidar com diversos


formatos de dados e cargas de trabalho. Pode oferecer suporte a diferentes
formatos de armazenamento de dados para os bancos de dados
operacionais/transacionais, que suportam interações em tempo real.
Usuários e aplicativos irão acessá-la usando um conjunto comum de
protocolos e padrões, como APIs REST.

API é a sigla para Application Programming Interface (Interface de


Programação de Aplicativos), que é um software intermediário que permite
que dois aplicativos se comuniquem.

18
REST: princípios/regras/restrições que quando seguidas permitem a
criação de um projeto com interfaces bem definidas, para que as aplicações
se comuniquem (REpresentational State Transfer – Transferência de Estado
Representacional).

Integração de dados escalável: a ingestão, validação, limpeza e


preparação são fundamentais para uma plataforma de dados. Uma
arquitetura de dados flexível usa pipelines escaláveis que podem lidar com
diferentes cenários: ingestão em lote de fontes legadas usando APIs,
publish/subscribe (publicar/assinar) para mensagens de eventos
assíncronas e processamento de fluxo para dados de alta velocidade em
tempo real.

Lógica de processamento extensível: permite desenvolver e


reutilizar aplicativos orientados a serviços. Esses aplicativos cuidam de
funções específicas de domínio e geralmente são baseados em tecnologias
de código aberto. Nos casos mais avançados, a plataforma também pode
permitir o desenvolvimento de aplicativos de geração futura, baseados em
lógica de Inteligência Artificial e Aprendizado de Máquinas em diferentes
espaços de trabalho. Permite que os usuários construam seus aplicativos
perfeitamente a partir de um conjunto padrão de componentes
interoperáveis.

Governança de ponta a ponta: os dados são classificados


automaticamente e marcados em uma plataforma de dados. Esses
metadados alimentam um catálogo de dados abrangentes que os usuários
podem pesquisar para descoberta de dados de autoatendimento. O modelo
de governança também permite que os usuários verifiquem a qualidade e a
sensibilidade dos dados. Por fim, o relatório de linhagem de dados pode
mostrar a jornada de um elemento de dados pelo sistema a qualquer
momento.

19
Metadados, ou Metainformação, são dados sobre outros dados. O
prefixo “Meta” vem do grego e significa “além de”. Assim, Metadados são
informações que acrescem aos dados e que têm como objetivo informar-nos
sobre eles para tornar mais fácil a sua organização.

Análise de autoatendimento: a camada de análise permite


desenvolver, distribuir e compartilhar painéis de autoatendimento
(dashboard), relatórios e notebooks com base em tecnologias flexíveis. As
organizações podem usar seus aplicativos de análise existentes usando
diferentes bibliotecas de integração.

Dashboard é um painel visual que contém informações, métricas e


indicadores da empresa. A ideia é que nele estejam representados os
números relevantes para a estratégia de negócio e para o alcance dos
objetivos organizacionais.

Figura 6 – Exemplo de dashboard operacional.

Fonte: https://www.opservices.com.br.

Automação para flexibilidade: depende muito da automação para


duas finalidades: infraestrutura e integração de dados. A primeira categoria
garante que todos os elementos físicos da plataforma, como servidores,
backups, armazenamento e balanceadores de carga, possam ser facilmente

20
recriados do zero, se necessário (IaC – Infrastructure as a Code, ou
Infraestrutura como código). O segundo tipo de automação garante que
pipelines de dados, espaços de trabalho, notebooks e funções sejam criados
a partir de um modelo padrão, sempre que integrar uma nova fonte de dados.

Infrastructure as Code (IaC) consiste na utilização de uma


linguagem de codificação descritiva de alto nível (em geral arquivos de
configuração padronizados, com o json e yaml), que tem como objetivo
automatizar o provisionamento da infraestrutura de TI na nuvem.

Camada de segurança única: a camada de segurança abstrai os


mecanismos individuais de acesso dos aplicativos. Ele pode usar um
Provedor de Identidade (Identity Provider – Id) em toda a empresa, para
autenticação e autorizações de acesso baseadas em função. Uma
arquitetura de dados sólida também garante que os dados sejam protegidos
por estarem em conformidade com os padrões regulatórios.

Um Provedor de Identidade (IdP ou IDP) armazena e gerencia as


identidades digitais dos usuários. Pense em um IdP como sendo uma lista
de convidados, mas para aplicativos digitais hospedados em nuvem, em vez
de um evento. Um IdP pode verificar identidades de usuários por meio de
combinações de palavras-chave e de outros fatores, ou pode simplesmente
fornecer uma lista de identidades de usuários que outro provedor de
serviços (como uma SSO) verifica.

Conhecer os elementos e as principais características das


plataformas de dados modernas certamente irá lhe ajudar no processo de
escolha e implementação da solução mais adequada e aderente às
necessidades do negócio.

21
1.5. Como escolher a melhor plataforma de dados?
Você precisa ser capaz de trabalhar com quaisquer dados em sua
organização, independentemente da fonte, formato ou escala de tempo,
você deseja poder fazer qualquer pergunta e obter insights úteis e
aplicáveis.

Escolher a plataforma de dados certa se resume a seis considerações


principais:

• Local vs Nuvem.

• Escalabilidade.

• Flexibilidade.

• Usabilidade/amplitude.

• Segurança/conformidade.

• Inteligência/automação.

Local, na nuvem ou híbrido: vários fatores determinam se você


gerencia seus dados no ambiente local (on-premises), seja por meio de um
provedor de nuvem ou uma combinação de ambos. Esses fatores incluem
requisitos de segurança e conformidade, custos de diferentes modelos de
licenciamento de software, quais habilidades/funções você deseja manter
em sua equipe interna de TI e quais você adquiriria por meio de seus
fornecedores.

Escalabilidade: uma plataforma de dados deve ser capaz de


funcionar na escala atual e ser adaptável ao crescimento inevitável de seus
armazenamentos de dados. A necessidade de escalabilidade é uma das
principais forças por trás do aumento da adoção de plataformas de dados
baseadas em nuvem.

22
Flexibilidade: a flexibilidade é essencial. Atualmente, a plataforma
que está avaliando, pode atender a vários grupos e casos de uso? É
relativamente simples adicionar novas funções e casos de uso à plataforma?
Existe um ecossistema robusto de aplicativos e complementos que podem
suportar novas funções?

Usabilidade e amplitude: a plataforma que você está considerando


é simples de implantar e configurar para usuários de diferentes níveis de
habilidade? Qual é a curva de aprendizado? A aplicação dos dados a todas
as decisões exige que qualquer pessoa em sua organização — de assistentes
de TI até os funcionários menos técnicos — possa trabalhar com esses
dados.

Segurança e conformidade: as organizações precisam garantir que


seus dados estejam protegidos para evitar os tipos de violações de dados
que dominam as manchetes e colocam empresas, clientes e até nações em
risco. Isso significa garantir que sua plataforma de dados tenha recursos de
segurança robustos integrados ou ferramentas que se integrem às suas
soluções de segurança existentes. O mesmo vale para a conformidade. Uma
plataforma de gerenciamento de dados que adere às estruturas e diretrizes
estabelecidas pelos órgãos reguladores de um país ou região, é essencial se
sua organização faz negócios nesse local.

Inteligência e automação: vastas quantidades de dados — para as


quais uma plataforma de dados é um requisito — excedem as capacidades
até mesmo dos analistas mais dedicados. Inovações em tecnologia,
principalmente em Aprendizado de Máquina (ML) e Inteligência Artificial
(IA), criaram novas oportunidades para organizações de todos os tamanhos
se beneficiarem de insights orientados por dados.

Para construir uma plataforma de dados moderna, é fundamental a


correta escolha da arquitetura de dados (versatilidade, inteligência,

23
segurança) e da estratégia de dados (obter, armazenar, proteger, gerenciar,
analisar e compartilhar dados).

Como sugestão e orientação, apresentamos uma cartilha com cinco


principais pontos a serem observados e avaliados quando da escolha de uma
plataforma de dados:

Envolva as melhores SMEs (Subject Matter Experts): busque os


melhores especialistas no assunto para o projeto e traga-os para a equipe.
Essa equipe será uma mistura de especialistas não técnicos e técnicos, e
muitas vezes pode incluir recursos externos.

Foco em pessoas e processos: foco no usuário final e nos processos


de negócios atuais. Pense no talento e nas estruturas necessárias para
gerenciá-los e usá-las.

Reunir requisitos de negócios: os dados devem atender às


necessidades de negócios para gerar valor real. Os requisitos devem incluir
o usuário final, casos de uso, novas fontes de dados existentes e possíveis
requisitos de segurança, aplicativos atuais e assim por diante.

Construa incrementalmente: adote uma abordagem ágil para


ganhos incrementais. O projeto inteiro pode ser dividido em vários
subprojetos, com cada projeto pequeno lidando com um aspecto da
plataforma ou funcionalidade. Por exemplo, pode haver um projeto para
padronizar as ferramentas de captura de dados e outro para construir um
recurso comum de compartilhamento de dados.

Use o que já está disponível: uma plataforma de dados organiza e


aumenta os processos existentes e os dados para o máximo benefício.
Comece com os dados que você já possui e implemente o fluxo de trabalho
que tem a maior oportunidade de impacto.

24
Dada a quantidade de soluções disponíveis no mercado, a escolha
por uma delas pode ser um desafio. Entretanto, vale lembrar que uma
plataforma de dados pode fazer uso de uma ou mais soluções. Se a
plataforma de dados que você está buscando atende aos requisitos
apresentados, muito provavelmente você está no caminho certo para fazer
a escolha e a aquisição da melhor solução aderente às necessidades do
negócio.

25
2
Capítulo 2. Serviços de armazenamento
2.1. Amazon Simple Storage Services (S3)
O que é o Amazon Simple Storage Services S3?
O Amazon Simple Storage Service (Amazon S3) é um serviço de
armazenamento de objetos que oferece escalabilidade, disponibilidade de
dados, segurança e performance. Clientes de todos os tamanhos e setores
podem usar o Amazon S3 para armazenar e proteger qualquer volume de
dados para uma variedade de casos de uso, como data lakes, sites,
aplicações móveis, backup e restauração, arquivamento, aplicações
corporativas, dispositivos IoT e análises de big data.

A Internet das Coisas (IoT) descreve a rede de objetos físicos


incorporados a sensores, software e outras tecnologias com o objetivo de
conectar e trocar dados com outros dispositivos e sistemas pela internet.
Esses dispositivos variam de objetos domésticos comuns a ferramentas
industriais sofisticadas.

O Amazon S3 armazena dados como objetos em buckets. Um objeto


é um arquivo e quaisquer metadados que descrevam o arquivo. Um bucket é
um contêiner de objetos.

O Amazon S3 fornece recursos de gerenciamento para que você


possa otimizar, organizar e configurar o acesso aos seus dados para atender
aos seus requisitos específicos de negócios, organizacionais e de
compatibilidade.

Alguns casos de uso do Amazon S3:

• Data lake e análise de dados.

• Backup e restore de dados críticos.

27
• Arquivamento de vários tipos de dados com o menor custo.

• Sites estáticos.

• Replicação de dados para qualquer região.

A replicação de dados é a ação de duplicar pastas, arquivos, volumes


inteiros, bancos de dados ou instâncias de bancos de dados entre diferentes
locais físicos, através da transmissão de dados via rede local, remota ou via
internet. O principal objetivo de replicar dados é manter cópias de segurança
sincronizadas para recuperação de dados em caso de desastres.

Figura 7 – Arquitetura de referência demostrando o uso do Amazon S3


integrado a outros serviços na AWS.

Fonte: https://docs.aws.amazon.com.

Classes de armazenamento do Amazon S3


Importante observar os tipos de dados e as recomendações para o
armazenamento no Amazon S3.

• S3 Intelligent-Tiering.

• S3 Standard.

• S3 Standard-Infrequent Access (S3 Standard-IA).

• S3 One Zone-Infrequent Access (S3 One Zone-IA).

28
• S3 Glacier Instant Retrieval.

• S3 Glacier Flexible Retrieval.

• S3 Glacier Deep Archive.

• S3 Outposts.

Todas as classes de armazenamento, exceto a S3 One Zone-IA, são


desenvolvidas para serem resistentes à perda física de uma zona de
disponibilidade resultante de desastres.

S3 Intelligent-Tiering
Recomendada para o armazenamento de dados com padrões de
acesso desconhecidos, diferentes ou imprevisíveis. Projetada para otimizar
os custos de armazenamento ao mover automaticamente os dados para o
nível de acesso mais econômico, sem impacto na performance ou
sobrecarga operacional. Oferece economia de custo automático ao mover
dados em um nível granular de objeto entre níveis de acesso quando há
alteração nos padrões de acesso. Taxas de monitoramento e automação por
objeto são aplicáveis.

Por padrão, os objetos que foram carregados ou transferidos para o


S3 Intelligent-Tiering são automaticamente armazenados no nível “acesso
frequente”. Objetos não acessados por mais de 30 dias são movidos para o
nível “acesso infrequente”. Ao ativar o recurso de arquivamento, o recurso
move automaticamente os objetos que não foram acessados durante 90
dias consecutivos, para o nível de “acesso de arquivamento”, e depois de 180
dias consecutivos sem acesso, para o nível de “acesso de arquivamento
profundo”.

Foi projetada para oferecer 99,9% de disponibilidade (>= 3 zonas de


disponibilidade) e 99,9999999% de durabilidade. Se o tamanho de um
objeto for menor que 128 KB, ele não será monitorado nem qualificado para

29
a movimentação automática. Objetos menores que 128 KB são sempre
armazenados no nível “acesso frequente”.

S3 Standard
É a classe de armazenamento padrão. Recomendada para o
armazenamento de dados acessados com frequência (mais de uma vez por
mês) com acesso de milissegundos (performance de acesso). Se você não
especificar a classe de armazenamento ao fazer upload de um objeto, o
Amazon S3 atribuirá a classe S3 Standard.

Projetada para oferecer 99,9% de disponibilidade (>= 3 zonas de


disponibilidade) e 99,9999999% de durabilidade (resiliência e
disponibilidade). Também permite usar as políticas de ciclo de vida do S3
para migrar automaticamente objetos entre classes de armazenamento.
Suporte a SSL (Secure Sockets Layer) para dados em trânsito e criptografia
para dados ociosos. Permite o gerenciamento de ciclo de vida do S3 para
migração automática de objetos para outras classes de armazenamento do
S3.

O termo “SSL” que significa “Secure Sockets Layer” (Camada de


Soquete Seguro), é um protocolo de segurança que cria um link, uma
conexão criptografada, por exemplo, entre um servidor Web (destino) e um
navegador Web (origem). O SSL, por meio do uso de certificados, mantém a
segurança das conexões de Internet e impede que criminosos leiam ou
modifiquem as informações transferidas entre dois sistemas. Um certificado
SSL é um certificado digital que autentica a identidade de um site e
possibilita uma conexão criptografada.

S3 Standard-Infrequent Access (S3 Standard-IA)


Classe de armazenamento que foi desenvolvida para dados de longa
duração e acessados com pouca frequência (uma vez por mês). Os objetos
estão disponíveis para acesso de milissegundos (o mesmo que a classe de
armazenamento S3 Standard). É cobrada uma taxa de recuperação para

30
esses objetos (por GB), portanto, eles são mais adequados para dados
acessados com pouca frequência. Ideal para o armazenamento de backups,
dados mais antigos (dados históricos, dados expurgados).

Oferece suporte ao SSL para dados em trânsito e criptografia para


dados em repouso. Projetada para oferecer 99,9% de disponibilidade (>= 3
zonas de disponibilidade) e 99,9999999% de durabilidade (resiliência e
disponibilidade). Adequada para objetos maiores que 128 KB que você
planeja armazenar por pelo menos 30 dias. Se um objeto for menor que 128
KB, você será cobrado por armazenar 128 KB (tamanho mínimo de objeto
faturável).

A criptografia de dados ajuda a impedir que usuários não


autorizados leiam dados em sistemas de armazenamento físico. Isso inclui
dados salvos em mídias persistentes, conhecidos como dados em repouso,
e dados que podem ser interceptados enquanto viajam pela rede,
conhecidos como dados em trânsito.

Se excluir um objeto antes do fim do período mínimo de duração do


armazenamento de 30 dias, você será cobrado por 30 dias (duração mínimo
de armazenamento por 30 dias). Use para a cópia principal ou única de
dados, que não pode ser recriada. Permite o gerenciamento de ciclo de vida
do S3 para migração automática de objetos a outras classes de
armazenamento do S3.

S3 One Zone-Infrequent Access (S3 One Zone-IA)


Muito semelhante à classe de armazenamento S3 Standard-
Infrequent Access (S3 Standard-IA). Projetada para dados recriáveis
acessados com pouca frequência (uma vez por mês) com acesso de
milissegundos. Projetada para oferecer 99,5% de disponibilidade (1 zona de
disponibilidade) e 99,9999999% de durabilidade (resiliência e menor
disponibilidade). Taxas de recuperação por GB são aplicáveis. Não resistente

31
à perda da zona de disponibilidade. Use se você puder recriar os dados em
caso de falha da zona de disponibilidade.

Principais diferenças entre as classes de armazenamento S3 IA e S3 One


Zone
S3 Standard-IA: armazena dados de objeto de maneira redundante
em várias zonas de disponibilidade separadas geograficamente (de maneira
semelhante à classe de armazenamento S3 Standard). Os objetos S3
Standard-IA são resistentes à perda de uma zona de disponibilidade. Essa
classe de armazenamento oferece maior disponibilidade e resiliência que a
classe S3 One Zone-IA.

S3 One Zone-IA: armazena dados de objeto em apenas uma zona de


disponibilidade, isso a torna menos cara que a classe S3 Standard-IA. No
entanto, os dados não são resilientes à perda física da zona de
disponibilidade resultante de desastres. A classe de armazenamento S3 One
Zone-IA é tão durável quanto a classe Standard-IA, mas é menos disponível
e resistente.

A tabela a seguir compara as classes de armazenamento, incluindo


sua disponibilidade, durabilidade, duração mínima de armazenamento e
outras considerações.

Figura 8 – Tabela de comparação das classes de armazenamento S3.

32
Fonte: https://docs.aws.amazon.com.

Segurança no Amazon S3
Faça uso do recurso de criptografia de dados (server-side
encryption). Implemente políticas de armazenamento. Imponha o uso de
criptografia de dados em trânsito (SSL). Considere utilizar soluções AWS
para proteger os dados (AWS Macie). Implemente um monitoramento
usando ferramentas de monitoramento da AWS (AWS CloudWatch). Habilite
o registro em log de acesso ao servidor do Amazon S3.

O Amazon Macie é um serviço de segurança e privacidade de dados


totalmente gerenciado, que usa Machine Learning e correspondência de
padrões para descobrir e proteger seus dados confidenciais na AWS.

O Amazon CloudWatch é um serviço de monitoramento que fornece


dados e insights úteis para monitorar suas aplicações, responder às
mudanças de performance de todo o sistema e otimizar a utilização de
recursos. Permite a coleta dados operacionais e de monitoramento na forma
de logs, métricas e eventos. Fornece uma visão unificada da integridade
operacional e visibilidade completa de seus recursos, aplicações e serviços
da AWS em execução na AWS e on-premises (local).

Faça uso dos recursos de versionamento e replicação dos dados.


Monitore as ações executadas por um usuário, uma função ou um serviço da
AWS no Amazon S3 (AWS Cloud Trail). Monitore os avisos de segurança da
Amazon Web Services. Monitore as alterações feitas nas configurações e
relacionamentos entre os recursos (AWS Config). Teste a segurança do seu
ambiente regularmente.

O AWS CloudTrail permite fazer auditoria, monitoramento de


segurança e solucionar problemas operacionais rastreando a atividade do
usuário e o uso da API. O CloudTrail registra, monitora continuamente e

33
retém a atividade da conta relacionada às ações em sua infraestrutura AWS,
dando a você controle sobre armazenamento, análise e ações de correção.

O AWS Config é um serviço que permite acessar, auditar e avaliar as


configurações dos recursos da AWS. Ele monitora e grava continuamente
registros das configurações de recursos da AWS e lhe permite automatizar
a avaliação das configurações registradas com base nas configurações
desejadas. Você pode analisar alterações feitas nas configurações e
relacionamentos entre os recursos da AWS, aprofundar-se de forma
detalhada no histórico de configuração de recursos e determinar a
conformidade geral em relação às configurações especificadas em suas
diretrizes internas. Dessa forma, você pode simplificar a auditoria de
conformidade, a análise de segurança, o gerenciamento de mudanças e a
solução de problemas operacionais.

São muitas as possibilidades, configurações e as formas para a


utilização do Amazon S3. Sempre que possível, faça uma POC (teste). É de
suma importância conhecer em detalhes as características dos dados para
escolher a classe de armazenamento do Amazon S3 que será mais aderente
às necessidades do negócio. Adicionalmente, para essa escolha, tenha em
mente e leve em consideração as questões de segurança, performance,
resiliência, alta disponibilidade, tolerância a falhas e, especialmente, os
custos envolvidos.

2.2. Amazon S3 Glacier


O que é o Amazon S3 Glacier?
Classe de armazenamento projetada e recomendada para arquivar
dados com os menores custos. Oferece a mesma durabilidade e resiliência
que a classe de armazenamento S3 Standard e S3 Standard-IA.

Classes de armazenzmento do Amazon S3 Glacier

• S3 Glacier Instant Retrieval.

34
• S3 Glacier Flexible Retrieval.

• S3 Glacier Deep Archive.

S3 Glacier Instant Retrieval


Recomendado para arquivar dados que raramente são acessados e
exigem recuperação de milissegundos (imagens médicas, recursos de mídia
de notícias ou arquivos de conteúdo gerado pelo usuário). Oferece economia
nos custos de armazenamento em comparação com uso da classe de
armazenamento S3 Standard-IA quando o acesso é trimestral. Oferece a
mesma latência e performance de taxa de transferência que a classe de
armazenamento S3 Standard-IA. Custos de acesso a dados do S3 Glacier
Instant Retrieval são mais altos que os do S3 Standard-IA.

Possibilita a recuperação de dados em milissegundos com o mesmo


desempenho do S3 Standard. Tem durabilidade projetada para
99,999999999% de resiliência de objetos em várias zonas de
disponibilidade. Foi projetada para 99,9% de disponibilidade de dados em
um determinado ano. A duração mínima do armazenamento de 90 dias. O
tamanho mínimo do objeto a ser armazenado é de 128 KB. Taxas de
recuperação dos objetos, por GB, são aplicáveis.

S3 Glacier Flexible Retrieval


Recomendado para dados que são acessados 1 a 2 vezes por ano e
recuperados de forma assíncrona. Recomendado para dados que não
requerem acesso imediato, mas que precisam da flexibilidade para recuperar
grandes conjuntos de dados. Oferece o maior número de opções de
velocidade de recuperação que equilibram o custo com tempos de acesso
que variam de minutos a horas (configurável).

É uma solução ideal para backup e recuperação de desastres. Os


dados armazenados nesta classe de armazenamento têm um período
mínimo de duração do armazenamento de 90 dias. Se você excluir, substituir

35
ou fizer a transição de um objeto para outra classe de armazenamento antes
do período mínimo de 90 dias, será cobrado pelos 90 dias. Durabilidade
projetada para 99,999999999% de resiliência de objetos em várias zonas de
disponibilidade.

Classe de armazenamento projetada para 99,99% de disponibilidade


de dados. Suporte a SSL para dados em trânsito e criptografia para dados
ociosos. 40 KB de tamanho mínimo do objeto. Taxas de recuperação por GB
são aplicáveis.

S3 Glacier Deep Archive


Use esta classe de armazenamento para arquivar dados que
raramente precisam ser acessados (1 a 2 vezes por ano). Os dados têm um
período mínimo de duração do armazenamento de 180 dias e um tempo de
recuperação padrão de 12 horas. Se você excluir, substituir ou fizer a
transição de um objeto para outra classe de armazenamento antes do
período mínimo de 180 dias, será cobrado pelos 180 dias.

É a opção de armazenamento com o menor custo na AWS. É possível


reduzir os custos de recuperação usando a recuperação em lote, o que
retorna dados em até 48 horas. Foi projetada para clientes que mantêm
conjuntos de dados por 7 a 10 anos ou mais para cumprir requisitos de
conformidade regulatória (setor financeiro, saúde, setor público). Também
pode ser usado para casos de uso de backup e recuperação de desastres.

É uma alternativa mais barata e fácil de gerenciar em comparação


aos sistemas de fita magnética como bibliotecas on-premises (local).
Projetada para fornecer 99,999999999% de resiliência de objetos em várias
zonas de disponibilidade. O tamanho mínimo do objeto a ser armazenado é
de 40 KB. Projetada para oferecer 99,99% de disponibilidade de acesso aos
dados.

Principais diferenças entre as classes de armazenamento S3 Glacier

36
São muito sutis as diferenças entre as três classes de
armazenamento S3 Glacier, onde, em alguns momentos, podemos observar
uma sobreposição de recursos e funcionalidades. Para a escolha mais
aderente às necessidades do negócio, considere avaliar a frequência com
que os dados precisam ser acessados, a duração mínima do armazenamento
e, principalmente, os custos com o armazenamento em si, os custos para as
taxas de recuperação e o tempo de recuperação.

Segurança no Amazon S3 Glacier


Faça uso do recurso de criptografia de dados (server-side
encryption). Implemente políticas de armazenamento. Imponha o uso de
criptografia de dados em trânsito (SSL). Considere utilizar soluções AWS
para proteger os dados (AWS Macie). Implemente um monitoramento
usando ferramentas de monitoramento da AWS (AWS Cloud Watch).
Habilite o registro em log de acesso ao servidor do Amazon S3.

Monitore as ações executadas por um usuário, uma função ou um


serviço da AWS no Amazon S3 (AWS Cloud Trail). Monitore os avisos de
segurança da Amazon Web Services. Monitore as alterações feitas nas
configurações e relacionamentos entre os recursos (AWS Config). Teste a
segurança do seu ambiente regularmente.

São muitas as possibilidades, configurações e as formas para a


utilização do Amazon S3 Glacier. Sempre que possível, faça uma POC (teste).
É de suma importância conhecer em detalhes as características dos dados
para escolher a classe de armazenamento do Amazon S3 Glacier que será
mais aderente às necessidades do negócio.

Adicionalmente, para essa escolha, tenha em mente e leve em


consideração as questões de segurança, performance, resiliência, alta
disponibilidade, tolerância a falhas e, especialmente, os custos envolvidos.

37
2.3. Amazon Elastic Block Store
O que é o Amazon Elastic Block Store (EBS)?
É um serviço de armazenamento em blocos fácil de usar, escalável e
de alta performance. Projetado para oferecer volumes de armazenamento
(discos) para o Amazon Elastic Compute Cloud (Amazon EC2, servidores
virtuais na AWS). Volumes do EBS se comportam como dispositivos de bloco
brutos e não formatados. Você pode montar esses volumes como
dispositivos em suas instâncias.

Os volumes EBS que estão anexados a uma instância persistem


independentemente da vida útil dela. É possível criar um sistema de
arquivos sobre esses volumes ou utilizá-los da maneira que utilizaria um
dispositivo de bloco (como um disco rígido). Permite alterar dinamicamente
a configuração de um volume anexado a uma instância. Resumidamente,
volumes EBS nada mais são do que os discos utilizados pelas instâncias EC2
(servidores virtuais) na AWS.

Casos de uso
Recomendado para dados que devem ser rapidamente acessíveis e
requerem persistência no longo prazo. São especialmente adequados ao uso
como armazenamento principal para sistemas de arquivos, bancos de dados
ou para todas as aplicações que necessitem de atualizações granulares e
acesso ao armazenamento em nível de bloco bruto e não formatado.

Ideal para aplicações no estilo de banco de dados que utilizam


leituras e gravações aleatórias. Ideal para aplicações com alta taxa de
transferência, que executam leituras e gravações longas e contínuas. Você
cria um volume do EBS em uma zona de disponibilidade específica e, em
seguida, o anexa a uma instância nessa mesma zona de disponibilidade.
Permite usar os recursos de snapshot e criptografia.

38
Snapshot (instantâneo) é o registro estado de um sistema, aplicação
ou arquivos em um determinado ponto no tempo. Cria-se uma imagem (uma
fotografia – daí a origem do nome) do estado dos dados em um momento
específico, a fim de estabelecer um ponto de restauração caso haja algum
tipo de falha ou erro. Snapshots não são cópias de backup, são registros de
status de um dispositivo ou sistema em um determinado instante, com a
função de organizar a restauração em caso de falha.

Criptografia é um conjunto de técnicas pensadas para proteger uma


informação de modo que apenas emissor e receptor consigam compreendê-
la. É a conversão de dados de um formato legível em um formato codificado.
Os dados criptografados só podem ser lidos ou processados depois de serem
descriptografados. conversão de texto simples legível por humanos em
texto incompreensível, o que é conhecido como texto cifrado.
Essencialmente, isso significa pegar dados legíveis e transformá-los de
forma que pareçam aleatórios. A criptografia envolve o uso de uma chave
criptográfica, um conjunto de valores matemáticos com os quais tanto o
remetente quanto o destinatário concordam. O destinatário usa a chave para
descriptografar os dados, transformando-os de volta em texto simples
legível. Quanto mais complexa for a chave criptográfica, mais segura será a
criptografia.

Figura 9 – Arquitetura de referência demonstrando o uso do Elastic Block


Storage (EBS).

39
Fonte: https://docs.aws.amazon.com.

Tipos de volumes EBS


O Amazon EBS fornece os seguintes tipos de volumes:

• Baseados em SSD (Solid State Drive): SSD de uso geral (gp2 e gp3),
SSD de IOPS provisionados (io1 e io2).

• Baseados em HDD (Hard Disk Drive): HDD otimizado para taxa de


transferência (st1), HDD a frio (sc1) e magnético (standard).

Os tipos de volumes EBS diferem em características de performance


e preço, permitindo que você adapte a performance e custo de
armazenamento às necessidades das aplicações. Os tipos de volumes
podem ser divididos conforme mostrado a seguir:

• SSD de uso geral (gp2 e gp3): equilibram preço e performance para


uma ampla variedade de cargas de trabalho (workloads)
transacionais. Ideais para volumes de inicialização, aplicações
interativas de baixa latência, bancos de dados de instância única de
tamanho médio e ambientes de desenvolvimento e teste.

• Single-attach: durabilidade de 99,8% a 99,9%. Tamanho do volume


de 1 GB a 16 TB. Máximo de IOPS por volume: 16,000. Taxa de

40
transferência máxima por volume: 1,000 MB/s (gp3) e 250 MB/s
(gps2).

• SSD de IOPS provisionadas (io1 e io2): criados para atender às


necessidades das cargas de trabalho (workloads) com uso intensivo
de E/S, que são sensíveis a performance e consistência de
armazenamento. Fornecem uma taxa de IOPS (Input/Output
Operations Per Second) consistente, que você específica ao criar o
volume. Permite que você escale de forma previsível para dezenas
de milhares de IOPS por instância. Volumes io2 fornecem os mais
altos níveis de durabilidade de volume.

• Multi-attach: durabilidade de 99,999%. Tamanho do volume 4 GB a


64 TB (io2 Block Express) e 4 GB a 16 TB (io2 e io1). Máximo de IOPS
por volume: 16,000. Taxa de transferência máxima por volume: 4,000
MB/s (io2 Block Express) e 1000 MB/s (io2 e io1).

• SSD de IOPS provisionadas (io1 e io2): criados para atender às


necessidades das cargas de trabalho (workloads) com uso intensivo
de E/S, que são sensíveis a performance e consistência de
armazenamento. Fornecem uma taxa de IOPS (Input/Output
Operations Per Second) consistente, que você específica ao criar o
volume. Permite que você escale de forma previsível para dezenas
de milhares de IOPS por instância. Volumes io2 fornecem os mais
altos níveis de durabilidade de volume.

• Multi-attach: durabilidade de 99,999%. Tamanho do volume 4 GB a


64 TB (io2 Block Express) e 4 GB a 16 TB (io2 e io1). Máximo de IOPS
por volume: 16,000. Taxa de transferência máxima por volume: 4,000
MB/s (io2 Block Express) e 1000 MB/s (io2 e io1).

• HDD a frio (sc1): fornecem armazenamento magnético de baixo


custo, que define a performance em termos de taxa de transferência,

41
não IOPS. Ideais para cargas de trabalho (workloads) grandes,
sequenciais, cold data ou acesso infrequente aos dados. Ideal para
cenários nos quais o menor custo de armazenamento é importante.

• Single-attach: durabilidade de 99,8% a 99,9%, tamanho do volume


125 GB a 16 TB, máximo de IOPS por volume 250, taxa de
transferência máxima por volume 250 MB/s (st1).

Snapshot
É possível fazer “backup” dos dados nos volumes do Amazon EBS
para o Amazon S3 criando snapshots point-in-time. Snapshots são
“backups” incrementais, o que significa que somente os blocos no
dispositivo que tiverem mudado depois do snapshot mais recente serão
salvos. Minimiza o tempo necessário para criar o snapshot e economiza em
custos de armazenamento ao não duplicar os dados. Cada snapshot contém
todas as informações necessárias para restaurar seus dados, desde o
momento em que o snapshot foi tirado, até um volume novo do EBS.
Snapshots podem ser criptografados.

A seguir, vamos mostrar como um snapshot do EBS captura o estado


de um volume em um ponto no tempo e como snapshots sucessivos de um
volume em constante mudança criam um histórico dessas alterações.

O diagrama abaixo mostra o Volume 1 em três pontos no tempo. Um


snapshot é retirado de cada um desses três estados de volumes. O diagrama
mostra especificamente o seguinte:

• No Estado 1, o volume tem 10 GiB de dados. Como Snap A é o


primeiro snapshot criado do volume, todos os 10 GiB de dados
devem ser copiados.

• No Estado 2, o volume ainda contém 10 GiB de dados, mas 4 GiB


mudaram. O Snap B precisa copiar e armazenar somente os 4 GiB

42
que mudaram após o Snap A ser tirado. Os outros 6 GiB de dados
inalterados, que já estão copiados e armazenados no Snap A, são
referenciados pelo Snap B, em vez de novamente copiados. Isso é
indicado pela seta tracejada.

• No Estado 3, 2 GiB de dados foram adicionados ao volume,


totalizando 12 GiB. O Snap C precisa copiar os 2 GiB adicionados
após o Snap B ser tirado. Como mostrado pelas setas tracejadas, o
Snap C faz referência a 4 GiB de dados armazenados no Snap B e 6
GiB de dados armazenados no Snap A.

• O armazenamento total necessário para os três snapshots é de 16


GiB.

Figura 10 – Diagrama para demonstração do funcionamento da rotina de


snapshot em um volume EBS.

43
Fonte: https://docs.aws.amazon.com.

Segurança
A segurança é uma responsabilidade compartilhada entre a AWS e
você.

Segurança da nuvem: a AWS é responsável pela proteção da


infraestrutura que executa produtos da AWS na nuvem AWS.

Segurança na nuvem: sua responsabilidade inclui controlar os


acessos, gerenciar as credenciais usadas, gerenciar os sistemas
operacionais que fazem uso do Amazon EBS, configurar políticas de acesso,
utilizar criptografia, auditar, monitorar e fazer testes periódicos de
recuperação de dados.

44
Segue abaixo um diagrama que resume as responsabilidades da
nuvem e as responsabilidades na nuvem.

Figura 11 – Modelo de responsabilidade compartilhada AWS.

Fonte: https://aws.amazon.com.

O Amazon Elastic Block Store (EBS), em resumo, são os volumes ou


discos que são usados pelas instâncias EC2 (Windows, Linux). Podem ser
discos de inicialização do sistema operacional ou discos para o
armazenamento de dados. O entendimento das suas características,
recursos, funcionalidades e especialmente os custos envolvidos, é um fator
essencial para escolha do tipo de EBS que será usado pelas instâncias EC2
(Windows e Linux).

2.4. Amazon Elastic File System


O que é o Amazon Elastic File System (EFS)?
O Amazon Elastic File System (Amazon EFS) fornece um sistema de
arquivos elástico simples, sem servidor, set-and-forget (configura e
esqueça), que pode ser usado com serviços cloud da AWS e recursos locais
(on-premises). Foi desenvolvido para escalar sob demanda até petabytes,
sem interromper os aplicativos, aumentando e diminuindo

45
automaticamente à medida que você adiciona e remove arquivos. O serviço
gerencia toda a infraestrutura de armazenamento de arquivos para você, de
modo a evitar a complexidade de implantar, corrigir e manter configurações
complexas de sistemas de arquivos.

É compatível com o protocolo Network File System versão 4


(NFSv4.1 e NFSv4.0), o que viabiliza a compatibilidade com os aplicativos e
ferramentas usadas atualmente para funcionarem perfeitamente com o
Amazon EFS. Várias instâncias de computação, incluindo Amazon EC2,
podem acessar um sistema de arquivos do Amazon EFS ao mesmo tempo.
Proporciona uma fonte de dados comum para cargas de trabalho (workloads)
e aplicativos que estão em execução em mais de uma instância de
computação ou servidor. Foi projetado para fornecer taxas de transferência,
IOPS e baixa latência necessárias para uma grande variedade de cargas de
trabalho (workloads, para ser altamente escalável, altamente disponível e
altamente durável.

Você paga apenas pelo armazenamento utilizado pelo sistema de


arquivos e não há taxa mínima ou custo de configuração. Permite controlar
o acesso aos sistemas de arquivos por meio de permissões POSIX (Portable
Operating System Interface). O POSIX é uma família de padrões mínimos
que define a portabilidade de uso das APIs (Application Programming
Interface) entre os sistemas operacionais.

O Amazon EFS é compatível com recursos de autenticação,


autorização e criptografia (em trânsito, enquanto estão sendo trafegados na
rede e em repouso, quando estão armazenados e salvos em disco) para
atender aos requisitos de segurança e conformidade.

É possível escolher entre dois modos de desempenho e dois modos


de taxa de transferência:

46
• Modo padrão de desempenho de uso geral é ideal para casos de uso
sensíveis à latência, como ambientes de servidores web, sistemas de
gerenciamento de conteúdo, diretórios iniciais e serviços gerais de
arquivos.

• Modo padrão de taxa de transferência de intermitência, onde a


taxa de transferência é dimensionada à medida que o sistema de
arquivos cresce, independentemente da quantidade de dados
armazenados.

O Amazon EFS não é compatível com instâncias EC2 baseadas em


Microsoft Windows.

O Amazon EFS oferece as seguintes classes de armazenamento para


diferentes casos de uso:

• Classes de armazenamento padrão – EFS Standard: Acesso


Infrequente (Padrão – IA), que oferecem resiliência Multi-AZ e os
mais altos níveis de durabilidade e disponibilidade.

• Classes de armazenamento de uma zona – EFS One Zone: Acesso


Pouco Frequente (EFS One Zone-IA), que oferecem aos clientes a
escolha de economias adicionais ao optar por salvar seus dados em
um Single-AZ.

Single-AZ é o termo utilizado para dizer que os dados, recursos ou


serviços estão armazenados e hospedados em apenas uma zona de
disponibilidade de uma região da AWS. Neste caso, não há replicação de
dados implementada. Em caso de falha na infraestrutura, dados poderão ser
perdidos e haverá interrupção de acesso aos aplicativos, bancos de dados,
recursos e serviços.

Multi-AZ é o termo utilizado para dizer que os dados, recursos ou


serviços são replicados automaticamente para duas ou mais zonas de

47
disponibilidade de uma região da AWS. Em caso de falha na infraestrutura
de uma zona de disponibilidade, as aplicações, os dados, recursos ou
serviços continuarão disponíveis e acessíveis.

A tabela a seguir compara as classes de armazenamento, incluindo


sua disponibilidade, durabilidade, duração mínima de armazenamento e
outras considerações.

Figura 12 – Tabela de comparação entre as classes de armazenamento do


Amazon EFS.

Fonte: https://docs.aws.amazon.com.

As imagens a seguir se referem a duas arquiteturas de referência


para dois exemplos de caso de uso do Amazon EFS.

48
Figura 13 – Arquitetura de referência Amazon EFS.

Fonte: https://docs.aws.amazon.com.

Figura 14 – Arquitetura de referência Amazon EFS.

Fonte: https://docs.aws.amazon.com.

Backup
Há duas opções disponíveis para proteger seus dados ao fazer
backup dos seus sistemas de arquivos do EFS.

• Serviço AWS Backup: serviço totalmente gerenciado e nativamente


integrado com o Amazon EFS. Apresenta uma maneira simples e
econômica de fazer o backup dos seus sistemas de arquivos do

49
Amazon EFS. Projetado para simplificar a criação, migração,
restauração e exclusão de backups. Permite configurar e auditar os
recursos dos quais deseja fazer backup, automatizar a programação
de backup, definir políticas de retenção, gerar relatórios e monitorar
todas as atividades recentes de backup e restauração.

• Backup de EFS para EFS: não é uma solução gerenciada, mas é


adequada para todos os sistemas de arquivos do Amazon EFS. Inclui
um modelo do AWS CloudFormation que inicia, configura e executa
os serviços necessários da AWS para implantar essa solução. É
adequada para as melhores práticas de segurança e disponibilidade.

O AWS CloudFormation é um serviço gerenciado pela AWS que ajuda


a organizar as soluções criadas na nuvem. É uma peça fundamental para
replicar configurações entre ambientes de desenvolvimento, homologação
e produção dos clientes, mas também pode ser utilizado para replicar
soluções reutilizáveis entre diversos clientes. É a forma oficial de definir
infraestrutura como código na nuvem da AWS, portanto, é uma peça
fundamental para possibilitar processos de entrega contínua e DevOps.

Segurança
A segurança é uma responsabilidade compartilhada entre a AWS e
você.

Segurança da nuvem: a AWS é responsável pela proteção da


infraestrutura que executa produtos da AWS na Nuvem AWS.

Segurança na nuvem: sua responsabilidade inclui fazer uso de


criptografia, gerenciamento de identidade de acesso, controle de acesso à
rede aos sistemas de arquivos, trabalhar com usuários, grupos e permissões
do nível do sistema de arquivos, registro em log e monitoramento, políticas,
validação de conformidade, resiliência e isolamento a rede. Adicionalmente,
fazer testes periódicos de recuperação de dados.

50
O Amazon Elastic Block Store (EFS), em resumo, são os volumes ou
discos que são usados pelas instâncias EC2 (Microsoft Windows não
suportado). São volumes ou discos utilizados para o armazenamento de
dados.

O entendimento das suas características, recursos, funcionalidades


e especialmente os custos envolvidos, é um fator essencial para escolha do
tipo de EFS que será usado pelas instâncias EC2 (exceto Microsoft Windows)
ou outros serviços AWS compatíveis.

2.5. Amazon Elastic FSx


O que é o Amazon FSx?
O Amazon FSx é um serviço que fornece sistemas de arquivos para
várias cargas de trabalho (workloads), como armazenamento para
aplicativos Windows, aprendizado de máquina (ML – Machine Learning),
automação de design eletrônico e computação de alto desempenho.

Torna fácil e econômico iniciar, executar e dimensionar sistemas de


arquivos de alto desempenho e ricos em recursos na nuvem. Ele suporta uma
ampla variedade de cargas de trabalho com sua confiabilidade, segurança,
escalabilidade e amplo conjunto de recursos. Elimina os custos
administrativos indiretos de configurar e provisionar servidores de arquivos
e volumes de armazenamento.

Foi desenvolvido com base nas mais recentes tecnologias de


computação, rede e disco da AWS para fornecer alto desempenho e menor
custo total de propriedade (TCO – Total Cost of Ownership). Como um
serviço totalmente gerenciado, ele lida com provisionamento de hardware,
configuração, aplicação de patches e backups, liberando você para se
concentrar em seus aplicativos, seus usuários finais e seus negócios.
Atualmente, é possível escolher entre quatro sistemas de arquivos
amplamente usados: NetApp ONTAP, OpenZFS, Windows File Server e
Lustre.

51
O FSx for Windows File Server fornece servidores de arquivos do
Microsoft Windows totalmente gerenciados, baseadas em um sistema
totalmente nativo de arquivos do Windows. Tem suporte nativo para
recursos do sistema de arquivos Windows e para o protocolo SMB (Server
Message Block) padrão do setor, para acessar o armazenamento de arquivos
em uma rede.

O FSx for Lustre fornece o popular sistema de arquivos Lustre de


alto desempenho. Recomendado para cargas de trabalho em que a
velocidade é importante, como aprendizado de máquina (ML – Machine
Learning), Computação de alta performance (HPC – High Performance
Computing), processamento de vídeo e modelagem financeira. Foi criado
para resolver o problema do processamento rápido de conjuntos de dados
cada vez maiores do mundo.

É um sistema de arquivos amplamente utilizado projetado para os


computadores mais rápidos do mundo. Ele fornece latências abaixo de
milissegundos, até centenas de Gbps de taxa de transferência e até milhões
de IOPS.

IOPS é a sigla para Input/Output Operations Per Second, ou


Operações de Entrada e Saída por Segundo. É um índice de desempenho
muito comum atualmente, utilizado nas unidades de armazenamento de
dados.

O FSx for NetApp ONTAP é um serviço totalmente gerenciado que


fornece armazenamento de arquivos altamente confiável, escalável, de alto
desempenho e rico em recursos, construído no popular sistema de arquivos
ONTAP (Open Network Technology for Appliance Products) da NetApp
(empresa que comercializa várias soluções de armazenamento). Ele fornece
os recursos, desempenho, capacidades e APIs familiares dos sistemas de
arquivos da NetApp com agilidade, escalabilidade e simplicidade de um
serviço AWS totalmente gerenciado. Fornece armazenamento de arquivos

52
compartilhados rico em recursos, rápido e flexível, amplamente acessível em
instâncias de computação Linux, Windows e macOS executadas na AWS ou
no local.

O FSx for OpenZFS é um serviço de armazenamento de arquivos


totalmente gerenciado que facilita a movimentação de dados que residem
no ZFS (Zettabyte file system, Sun Microsystems Solaris) local ou em outros
servidores de arquivos baseados em Linux na AWS, sem alterar o código do
aplicativo ou como você gerencia os dados. Sistema de arquivos
amplamente acessível em instâncias e contêineres de computação Linux,
Windows e macOS, usando o protocolo NFS padrão do setor (v3, v4.0, v4.1,
v4.2). Oferece armazenamento de arquivos altamente confiável, escalável,
de alto desempenho e rico em recursos, construído no sistema de arquivos
OpenZFS de código aberto, fornecendo os recursos e capacidades familiares
dos sistemas de arquivos OpenZFS com a agilidade, escalabilidade e
simplicidade de um serviço totalmente gerenciado da AWS. Recomendado
para desenvolvedores que criam aplicativos nativos da nuvem, ele oferece
armazenamento simples e de alto desempenho com recursos avançados
para trabalhar com dados.

Figura 15 – Arquitetura de referência Amazon FSx for Windows File Server


(Single-AZ).

Fonte: https://docs.aws.amazon.com.

53
Figura 16 – Arquitetura de referência Amazon FSx for Windows File Server
(Multi-AZ).

Fonte: https://docs.aws.amazon.com.

Figura 17 – Arquitetura de referência Amazon FSx for Windows File Server (duas
regiões AWS).

Fonte: https://docs.aws.amazon.com.

Backup
Além de replicar automaticamente os dados do sistema de arquivos
para garantir alta durabilidade, o Amazon FSx oferece algumas opções para
proteger ainda mais os dados armazenados em seus sistemas de arquivos.
Os backups nativos do Amazon FSx suportam suas necessidades de
retenção e conformidade de backup dentro do Amazon FSx. Os backups do

54
AWS Backup de seus sistemas de arquivos Amazon FSx fazem parte de uma
solução de backup centralizada e automatizada.

As cópias de sombra do Windows (Shadow Copies) permitem que


seus usuários desfaçam facilmente alterações de arquivos e comparem
versões de arquivos restaurando arquivos para versões anteriores. A
replicação agendada do AWS DataSync ao seu sistema de arquivos Amazon
FSx para um segundo sistema de arquivos, fornece proteção e recuperação
de dados. Os snapshots permitem que seus usuários desfaçam facilmente
alterações de arquivos e comparem versões de arquivos restaurando
arquivos para versões anteriores.

AWS DataSync é um serviço on-line seguro que automatiza e acelera


a movimentação de dados entre serviços de armazenamento on-premises e
da AWS. O DataSync pode copiar dados entre compartilhamentos do
Network File System (NFS) ou Server Message Block (SMB), Hadoop
Distributed File Systems (HDFS), armazenamento de objetos
autogerenciado, buckets do Amazon Simple Storage Service (Amazon S3),
sistemas de arquivos do Amazon Elastic File System (Amazon EFS),
sistemas de arquivos do Amazon FSx for Windows File Server e sistema de
arquivos Amazon FSx for Lustre.

Segurança
A segurança é uma responsabilidade compartilhada entre a AWS e
você.

Segurança da nuvem: a AWS é responsável pela proteção da


infraestrutura que executa produtos da AWS na Nuvem AWS.

Segurança na nuvem: sua responsabilidade inclui fazer uso de


criptografia, controle de acesso em nível de arquivo e pasta, controle de
acesso ao sistema de arquivos, controle de acesso à administração de
recursos, com o gerenciador de identidade (IAM), políticas e validação de

55
conformidade. Adicionalmente, fazer testes periódicos de recuperação de
dados.

O Amazon FSx, em resumo, é um outro nível de volumes de


armazenamento utilizados pelas cargas de trabalho na AWS. São volumes
de armazenamento “mais inteligentes”, que possuem mais tecnologia, mais
funcionalidades e mais recursos embarcados. O entendimento das suas
características, recursos, funcionalidades e especialmente os custos
envolvidos, é um fator essencial para escolha do tipo de FSx que será usado
pelas cargas de trabalho na AWS.

2.6. Amazon Snow Family


O que é um dispositivo do AWS Snowball?
O AWS Snowball é um serviço que usa dispositivos de
armazenamento físico para transferir grandes quantidades de dados entre
o Amazon Simple Storage Service (Amazon S3) e o local de armazenamento
físico de dados em velocidades mais rápidas do que a Internet. Ao trabalhar
com o AWS Snowball, você pode economizar tempo e dinheiro. O Snowball
fornece interfaces avançadas que podem ser usadas para criar trabalhos,
rastrear dados e acompanhar o status de trabalhos até a finalização.

Os dispositivos Snowball são dispositivos fisicamente resistentes,


protegidos pelo serviço de criptografia AWS Key Management Service (AWS
KMS). Eles guardam e protegem seus dados em trânsito. Transportadoras
regionais transportam o Snowball entre o Amazon S3 e o local de
armazenamento físico de dados. O Snowball serve para transferir grandes
quantidades de dados. Se quiser transferir menos de 10 TB de dados entre
os centros de dados locais e o Amazon S3, o Snowball pode não ser a opção
mais econômica.

56
Figura 18 – AWS Snowball.

Fonte: https://docs.aws.amazon.com.

Cada dispositivo tem diferentes capacidades de armazenamento.

Figura 19 – Capacidade de armazenamento AWS Snowball.

Fonte: https://docs.aws.amazon.com.

Os modelos de 80 TB e 50 TB estão disponíveis nas regiões dos EUA,


enquanto o modelo de 50 TB está disponível em todas as outras Regiões da
AWS. A criptografia imposta protege seus dados em repouso (criptografia
dos dados em disco) e fisicamente em trânsito (criptografia quando os
dados estão sendo trafegados na rede). Não há necessidade de comprar ou
manter seus próprios dispositivos de hardware. Os trabalhos podem ser
gerenciados pelo console de gerenciamento da família AWS Snow ou
programados com a API de gerenciamento de trabalhos.

É possível fazer transferências locais de dados entre seu datacenter


local e um Snowball. Você pode fazer essas transferências por meio do
cliente Snowball, um cliente independente que pode ser obtido por

57
download. Ou você pode transferir de forma programática usando chamadas
da API REST do Amazon S3 com o adaptador do Amazon S3 para download,
para Snowball. O Snowball é seu próprio contêiner de envio e a tela muda
para mostrar o rótulo de remessa quando o Snowball está pronto para ser
enviado.

Existem alguns pré-requisitos para usar o Snowball. Além de uma


conta na AWS é importante confirmar se os arquivos e as pastas a serem
transferidos têm nomes que seguem as diretrizes de nomeação de chave de
objeto para o Amazon S3. Todos os arquivos ou pastas com nomes que não
estiverem de acordo com essas diretrizes não serão importados para o
Amazon S3. Para qualquer arquivo com dois pontos (:) no nome do arquivo,
altere os nomes no Amazon S3 antes de criar o trabalho de exportação para
obter esses arquivos. Arquivos com dois pontos no nome não são exportados
para o Microsoft Windows Server.

O AWS Snowmobile
O AWS Snowmobile é um serviço de transferência na escala de
exabytes, usado para movimentar quantidades de dados extremamente
grandes para a AWS. Você pode transferir até 100 PB por Snowmobile, um
contêiner de transporte reforçado com 45 pés de comprimento puxado por
um caminhão semirreboque. Depois de uma avaliação inicial, um
Snowmobile é transportado até o datacenter e configurado pelo pessoal da
AWS para que você possa acessá-lo como um destino de armazenamento na
rede.

Com o Snowmobile no local, o pessoal da AWS trabalhará em


conjunto com a sua equipe para conectar um switch de rede removível de
alta velocidade entre o Snowmobile e sua rede local. Em seguida, será
iniciada uma transferência de dados de alta velocidade de um número
ilimitado de fontes no seu datacenter para o Snowmobile. Após a carga dos

58
dados, o Snowmobile será conduzido de volta à AWS, onde os dados serão
importados para o Amazon S3.

O serviço inclui pessoal de segurança dedicado, rastreamento via


GPS, monitoramento de alarmes, vigilância por vídeo 24 horas por dia, 7 dias
por semana e um veículo de escolta de segurança opcional quando em
trânsito. Todos os dados são criptografados com chaves de criptografia de
256 bits, gerenciadas pelo AWS Key Management Service (KMS) e
projetadas para garantir a segurança e a cadeia de custódia completa dos
dados.

O AWS Key Management Service (AWS KMS) é um serviço


gerenciado que facilita a criação e o controle de chaves criptográficas
usadas para proteger os dados.

Figura 20 – O AWS Snowmobile.

Fonte: https://docs.aws.amazon.com.

O AWS Snowball Family é a solução ideal para movimentação de


grandes volumes de dados, entre o datacenter e a AWS. Em especial quando
o link de dados disponível não for suficiente para transferir toda a volumetria
de dados em tempo hábil para o respectivo projeto.

59
3
Capítulo 3. IaaS para bancos de dados
3.1. Conceitos básicos e cenários
Conceitos básicos e cenários
Todo aplicativo precisa de um local para armazenar dados de
usuários, dados de dispositivos ou dados do próprio aplicativo. Os bancos de
dados são importantes sistemas de back-end usados para armazenar,
gerenciar, atualizar e analisar dados para todos os tipos de aplicativos, desde
pequenos sistemas de back-office até aplicativos da Web móveis e de
consumo em escala global.

A IaaS é um tipo de serviço de computação em nuvem que oferece


recursos fundamentais de computação, armazenamento e rede sob
demanda e pagos conforme o uso, ou seja, fornece toda a infraestrutura
necessária de modo a viabilizar a execução, por exemplo, de uma instância
EC2 (servidor virtual) na AWS.

No modelo de computação em nuvem com IaaS, o provedor


de nuvem é responsável por prover e gerenciar toda a infraestrutura
representada em vermelho (vide imagem da Figura 21). A gestão dos itens
em verde (vide imagem da Figura 21) é de responsabilidade do cliente.

É um modelo bem semelhante ao que ainda é utilizado em uma


infraestrutura virtual e um datacenter tradicional.

61
Figura 21 – Gestão dos itens de infraestrutura.

Fonte: https://wcs.zone.

É um modelo bem semelhante ao que ainda é utilizado em uma


infraestrutura virtual e um datacenter tradicional.

IaaS para banco de dados, em resumo, nada mais é que a utilização


de um sistema de gerenciamento de banco de dados instalado em uma
instância EC2 na AWS.

A AWS oferece mais de 15 mecanismos de bancos de dados com


propósito específico para apoiar vários modelos de dados, incluindo bancos
de dados relacionais, de chave/valor, de documentos, na memória, de grafos,
de séries temporais, coluna ampla e ledger (registro).

Cenários
IaaS para bancos de dados podem ser implementados em ambientes
virtuais que possua uma ou mais instâncias EC2 na AWS, onde esteja
instalado um dos vários sistemas de gerenciamento de bancos de dados
disponíveis. É possível implementar ambientes redundantes, tolerantes às
falhas e com alta disponibilidade pelo uso de pelo menos duas ou mais
instâncias, EC2 com banco de dados, por exemplo, em cluster. O mesmo

62
pode ser feito pelo uso do recurso de replicação de dados entre duas ou mais
instâncias de bancos de dados.

Um cluster é um conjunto (dois ou mais) de computadores, recursos


e componentes computacionais que trabalham juntos para que possam ser
vistos como um único sistema. Os clusters geralmente são implantados para
melhorar o desempenho e a disponibilidade em relação a um único
computador, recurso ou serviço. Os tipos de implementação mais comuns
são: cluster ativo/ativo e cluster ativo/passivo.

IaaS para banco de dados é uma excelente alternativa,


especialmente se você não quer mais se preocupar com a infraestrutura
adjacente. Pelo uso deste modelo de computação é possível maximizar a
escala e o desempenho dos recursos de TI e ainda otimizar os custos. Avalie,
de acordo com as necessidades do negócio, a melhor opção para o sistema
de gerenciamento de banco de dados que a AWS oferece.

3.2. IaaS para bancos de dados


Vantagens e desvantagens
Vantagens

Atualmente, a AWS oferece uma boa quantidade de mecanismos de


banco de dados para serem executados em instâncias EC2. Permite criar
aplicações distribuídas, orientadas por caso de uso e altamente escaláveis,
adequadas às suas necessidades específicas. Comece pequeno e escale à
medida que suas aplicações crescem. Você não precisa se preocupar com a
infraestrutura adjacente ao sistema operacional e ao mecanismo de banco
de dados.

Oferece alta disponibilidade, confiabilidade e aprimora segurança.


Reduz as despesas de capital e elimina o custo de configurar e gerenciar um
datacenter físico. Redução de custos contínuos (energia, manutenções,
contratos de suporte, custo com instalação do hardware). Aprimora a

63
continuidade dos negócios e a recuperação de desastres. Propicia mais
agilidade nas mudanças tecnológicas.

Desvantagens

Possíveis problemas no provedor, especialmente relacionados à


segurança. A utilização de sistemas com multialocação onde os recursos de
infraestrutura são compartilhados com vários clientes. Dependência do link
de internet. Relativa imprevisibilidade e surpresas indesejadas para os
custos mensais (fatura AWS). Tempo de inatividade devido a interrupções
de qualquer natureza.

Figura 22 – Comparação entre os modelos de gerenciamento de IaaS para


bancos de dados no ambiente on-premises (servidores locais) e na nuvem da
AWS (EC2).

Fonte: https://docs.aws.amazon.com.

Aparentemente existem mais vantagens do que desvantagens em


fazer uso do modelo de computação em nuvem IaaS para bancos de dados.
Avalie cada um dos pontos apresentados e tenha atenção especial para os
custos e para a segurança. Um bom planejamento e uma boa estratégia de
migração para uso deste modelo de computação são alguns componentes

64
fundamentais para o sucesso das organizações nesta jornada da
transformação digital.

65
4
Capítulo 4. Amazon RDS
4.1. O que é o Amazon RDS?
O Amazon Relational Database Service (Amazon RDS) é um serviço
que facilita a configuração, a operação e escalabilidade de um banco de
dados relacional na nuvem AWS. Ele fornece capacidade econômica e
redimensionável para um banco de dados relacional padrão do setor e
gerencia tarefas comuns de administração de banco de dados. É um serviço
de banco de dados gerenciado onde a AWS é responsável pela maioria das
tarefas de gerenciamento.

O serviço oferece capacidade com bom custo-benefício e


redimensionável, além de automatizar tarefas demoradas de administração,
como provisionamento de hardware, configuração de bancos de dados,
aplicação de patches e backups. O Amazon RDS está disponível em vários
tipos de instância de banco de dados – com otimização para memória,
performance ou E/S (entrada e saída, I/O). Utiliza armazenamento em blocos
duráveis: finalidade geral (SSD), IOPS provisionados e magnético. Você pode
usar os produtos de banco de dados já conhecidos com: Aurora, MySQL,
MariaDB, PostgreSQL, Oracle e Microsoft SQL Server.

Implantações Multi-AZ podem ter uma ou duas instâncias de banco


de dados em espera para prover alta disponibilidade. Quando a implantação
tem uma instância de banco de dados em espera, ela é chamada de
implantação de instância de banco de dados Multi-AZ, que fornece suporte
para failover, mas não serve tráfego de leitura. Quando a implantação tem
duas instâncias de banco de dados em espera, ela é chamada de implantação
de cluster de banco de dados Multi-AZ, que fornecem suporte para failover
e também podem servir tráfego de leitura.

67
Failover em computação significa tolerância a falhas, disponibilidade
contínua e alta disponibilidade. Quando um sistema, servidor ou outro
componente de hardware ou software fica indisponível, um componente
secundário assume operações sem que haja interrupção nos serviços. Para
esta transferência de operações, quando um componente falha, dá-se o
nome de failover.

Embora não seja recomendado, é possível implementar o RDS em


Single-AZ. Existem ferramentas e soluções AWS especialmente
desenvolvidas para auxiliar no processo de migração dos bancos de dados
(DMS, SCT) do ambiente on-premises (ambiente local) para a nuvem da AWS
e que avaliam e geram relatórios detalhados, inclusive para a
compatibilidade de uma eventual migração, por exemplo, de um ambiente
de banco de dados SQL Server on-premises (ambiente local) para o RDS
MySQL na nuvem da AWS. Permite o gerenciamento através da AWS
Managment Console ou através de interface de linha de comando (AWS CLI)
para acessar interativamente a API do Amazon RDS.

Figura 23 – Arquitetura de referência do Amazon RDS Multi-AZ com uma


instância em espera (RDS Standby Replica) não servindo tráfego de leitura.

Fonte: https://docs.aws.amazon.com.

68
Figura 24 – Arquitetura de referência do Amazon RDS Multi-AZ com três
instâncias em espera (RDS Standby Replica) servindo tráfego de leitura.

Fonte: https://docs.aws.amazon.com.

Figura 25 – Comparação entre os modelos de gerenciamento de instâncias EC2


com bancos de dados e o Amazon RDS.

Fonte: https://docs.aws.amazon.com.

O Amazon RDS é uma excelente solução de banco de dados


gerenciado, fácil de administrar, altamente escalável, disponível e resiliente,
rápido, seguro e com baixo custo em relação aos ambientes tradicionais.

69
4.2. Instâncias de bancos de dados
Instâncias de bancos de dados
No Amazon RDS, é um ambiente de banco de dados isolado em
execução na nuvem. É o bloco de criação básico do Amazon RDS. Uma
instância de banco de dados pode conter vários bancos de dados criados por
usuários e pode ser acessada usando as mesmas ferramentas e aplicativos
do cliente que você usa para acessar uma instância de banco de dados
autônoma. São simples de serem criadas e modificadas com as ferramentas
da linha de comando da Amazon AWS, as operações da API do Amazon RDS
ou o AWS Management Console.

O Amazon RDS oferece suporte ao acesso a bancos de dados que


usam qualquer aplicação de cliente SQL padrão. O Amazon RDS não permite
o acesso direto ao host (servidor físico). É possível ter até 40 instâncias de
banco de dados do Amazon RDS, com as seguintes limitações: 10 de cada
edição do SQL Server (Enterprise, Standard, Web e Express) no modelo
“licença incluída”, 10 para Oracle no modelo “licença incluída”, 40 MySQL,
MariaDB ou PostgreSQL, 40 Oracle no modelo “traga sua própria licença”
(BYOL bring-your-own-license).

Se a aplicação exige mais instâncias de banco de dados, é possível


solicitar instâncias de banco de dados adicionais preenchendo um
formulário específico disponibilizados na console de gerenciamento da
AWS. Cada instância de banco de dados tem um DB instance identifier que
a identifica de forma exclusiva. É possível fazer implementações Single-AZ
(uma zona de disponibilidade) e Multi-AZ (duas ou mais zonas de
disponibilidade – opção recomendada).

O identificador (DB instance identifier) é usado como parte do nome


do host DNS, alocado para a instância pelo RDS. Por exemplo, se você
especificar db1 como o identificador de instância de banco de dados, o RDS
alocará automaticamente um endpoint de DNS para a instância, como

70
db1.123456789012.us-east-1.rds.amazonaws.com, onde 123456789012 é
o identificador fixo de uma região específica da conta. Ao criar uma instância
de banco de dados, alguns mecanismos de banco de dados exigem que um
nome de banco de dados seja especificado. O nome do banco de dados
depende do mecanismo do banco de dados.

O Amazon RDS cria uma conta de usuário principal para a sua


instância de banco de dados como parte do processo de criação. Esse
usuário principal tem permissões para criar bancos de dados e realizar
operações de criação, exclusão, seleção, atualização e inserção em tabelas
criadas pelo usuário principal. É necessário definir a senha de usuário
principal ao criar uma instância de banco de dados, mas essa senha pode ser
alterada a qualquer momento usando a AWS CLI, as operações da API do
Amazon RDS ou o AWS Management Console. Você também pode usar
comandos SQL padrão para alterar a senha de usuário principal e gerenciar
usuários.

O Amazon RDS oferece três tipos de armazenamento: SSD de uso


geral (também conhecido como gp2), SSD de IOPS provisionadas (também
conhecido como io1) e magnético (também conhecido como padrão). Eles
diferem em características de performance e preço. É possível criar
instâncias de banco de dados MySQL, MariaDB, Oracle e PostgreSQL do RDS
com até 64 TB de armazenamento.

Na imagem da Figura 26 podemos observar que DB Instances se


refere ao nome da instância que possui vários bancos de dados dentro dela.
Os bancos de dados de nome cjp-db, demodb, demodb2, mydb estão dentro
de DB Instances.

71
Figura 26 – Exemplo de visualização das instâncias e dos bancos de dados do
Amazon RDS pelo uso da solução AWS Explorer.

O Amazon RDS oferece uma variedade de mecanismos de bancos de


dados. A escolha do mecanismo de banco de dados, do tipo de instância,
tamanho, grau de disponibilidade e tolerância às falhas, o custo, entre outras
características, depende também de um entendimento e uma avaliação
criteriosa para o tipo de aplicação que é/será utilizada, ou que será
desenvolvida para atender às necessidades do negócio.

4.3. Classes das instâncias de bancos de dados


Classes das instâncias de bancos de dados
A classe de instância de banco de dados determina a capacidade de
computação e de memória de uma instância de banco de dados do Amazon
RDS. A classe de instância de banco de dados da qual você precisa depende,
também, dos requisitos de memória e processamento. Existe uma matriz de
compatibilidade/suporte para as classes de instâncias de bancos de dados
em relação ao mecanismo de banco de dados. Por exemplo, uma
determinada classe de instância de banco de dados (db.m6g.12xlarge) pode

72
ser suportada por todas as versões do MySQL e do PostgreSQL, e não ser
suportada para Oracle e SQL Server.

Tipos de classes das instâncias de bancos de dados


O Amazon RDS disponibiliza uma seleção de tipos de instâncias
otimizados para atender a diferentes casos de uso de banco de dados
relacional. Os tipos de instâncias consistem em várias combinações de CPU,
memória, armazenamento e capacidade de rede e oferecem flexibilidade de
escolha da composição adequada de recursos para os bancos de dados. Cada
tipo de instância inclui diversos tamanhos de instância, permitindo a
escalabilidade de recursos de acordo com os requisitos da carga de trabalho
a ser executada.

Nem todo tipo de instância conta com o suporte de cada mecanismo,


versão, edição ou região do banco de dados. O Amazon RDS oferece suporte
a três tipos de classes de instância: padrão (standard), otimizada para
memória (memory optimized) e performance expansível ou instâncias de
performance com capacidade de intermitência (burstable performance).

Tipos de classes de instância de banco de dados padrão (standard)


disponíveis:

• db.m6g, db.m5d, db.m5, db.m4, db.m3.

• Medium, large, xlarge, 2xlarge, 4xlarge, 8xlarge, 12xlarge, 24xlarge.

Em resumo, há variação no número de núcleos, quantidade de


vCPUs, memória, tipo de armazenamento, largura de banda dedicada do EBS
(Mbps) e performance de rede (Gbps).

73
Figura 27 – Exemplos de configurações para os tipos de classes de instâncias
padrão do Amazon RDS.

Fonte: https://docs.aws.amazon.com.

Tipos de classes de instância de banco de dados otimizadas para


memória disponíveis:

• db.x2g, db.z1d, db.x1e, db.x1, db.r6g, db.r5b, db.r5d, db.r5, db.r4,


db.r3.

• large, xlarge, 2xlarge, 4xlarge, 8xlarge, 12xlarge, 24xlarge.

Em resumo, há variação no número de núcleos, quantidade de


vCPUs, memória, tipo de armazenamento, largura de banda dedicada do EBS
(Mbps) e performance de rede (Gbps).

Figura 28 – Exemplos de configurações para os tipos de classes de instâncias


otimizadas para memória do Amazon RDS.

Fonte: https://docs.aws.amazon.com.

Tipos de classes de instância de banco de dados de performance


expansível ou instâncias de performance com capacidade de intermitência
(burstable performance) disponíveis:

• db.t4g, db.t3, db.t2.

74
• Micro, small, medium, large, 2xlarge.

Em resumo, há variação no número de núcleos, quantidade de


vCPUs, memória, tipo de armazenamento, largura de banda dedicada do EBS
(Mbps) e performance de rede (Gbps).

Figura 29 – Exemplos de configurações para os tipos de classes de instâncias de


performance expansível do Amazon RDS.

Fonte: https://docs.aws.amazon.com.

A escolha da classe das instâncias de bancos de dados do Amazon


RDS depende, também, de um entendimento e de uma avaliação criteriosa
para o tipo de aplicação que é/será utilizada ou que será desenvolvida para
atender às necessidades do negócio.

Em especial, além dos custos e contínua atenção com a segurança,


observe os requisitos de capacidade de processamento, memória,
velocidade de acesso aos discos e performance de rede que o mecanismo de
banco de dados precisa ter para suportar adequadamente suas instâncias
de bancos de dados.

4.4. Práticas recomendadas no Amazon RDS


Práticas recomendadas no Amazon RDS
Seguir e implementar as boas práticas recomendadas do Amazon
RDS permite que as empresas tenham um ambiente mais seguro, íntegro e
com menos chances de ocorrências de falhas e indisponibilidades.

Adicionalmente, O Amazon RDS fornece recomendações


automatizadas para recursos de banco de dados, como instâncias de banco
de dados, réplicas de leitura e grupo de parâmetros de banco de dados. Essas

75
recomendações fornecem orientações de práticas recomendadas,
analisando a configuração, o uso e os dados de performance da instância de
banco de dados.

O Amazon RDS gera recomendações para um recurso quando esse


recurso é criado ou modificado. O Amazon RDS também verifica
periodicamente seus recursos e gera recomendações. Podemos encontrar
as recomendações no AWS Management Console. Podemos executar a ação
recomendada imediatamente, programá-la para a próxima janela de
manutenção ou descartá-la.

Apresentaremos algumas das práticas recomendadas e diretrizes


operacionais básicas para trabalhar com o Amazon RDS.

• Monitore sua memória, CPU e uso de armazenamento, tráfego de


rede, número de conexões com o banco de dados, memória livre
disponível, métricas de IOPS (AWS CloudWatch).

• Escale sua instância de banco de dados quando estiver se


aproximando dos limites de capacidade de armazenamento.

• Habilite backups automáticos e configure a janela de backup para


ocorrer durante a baixa diária em IOPS de gravação.

• Implemente rotinas de backup e faça testes de restore (recuperação


de dados) periodicamente.

• Verifique todas as questões relacionadas e implemente os recursos


de segurança necessários para acesso aos dados.

• Crie usuários individuais, conceda o conjunto mínimo de permissões


necessárias e troque as senhas regularmente (AWS Secrets
Manager).

76
• Use a criptografia do Amazon RDS para proteger suas instâncias de
banco de dados e snapshots.

• Configure registro de logs para fins de auditoria.

• Avalie a performance e faça o tunning (ajuste finos) do banco de


dados (tamanho de tabelas, índices etc.).

O AWS Secrets Manager é um serviço de gerenciamento de


informações confidenciais que o ajuda a proteger o acesso a seus
aplicativos, serviços e recursos de TI. Este serviço lhe permite alternar,
gerenciar e recuperar com facilidade as credenciais de banco de dados,
chaves de API e outras informações confidenciais em todo o ciclo de vida
delas. Você pode proteger, auditar e gerenciar informações confidenciais
usadas para acessar recursos na nuvem AWS, em serviços de terceiros e no
local.

Se a cargas de trabalho do banco de dados exigir mais E/S (entrada


e saída) do que você provisionou, avalie e execute uma ou todas as ações a
seguir:

• Migre para uma classe de instância de banco de dados diferente, com


alta capacidade de E/S.

• Converta o armazenamento magnético de uso geral ou


armazenamento de IOPS provisionadas.

• Se você converter para o armazenamento de IOPS provisionadas,


certifique-se de usar também uma classe de instância de banco de
dados otimizada para IOPS provisionadas.

• Se você já estiver usando armazenamento de IOPS provisionadas,


configure a capacidade de transferência adicional.

77
• Se o seu aplicativo cliente estiver armazenando em cache os dados
do sistema de nome de domínio (DNS – Domain Name System) de
suas instâncias de banco de dados, defina um valor de tempo de vida
(TTL – Time to Live) de menos de 30 segundos. O endereço IP de
uma instância de banco de dados pode mudar após um failover.

• Teste o failover da instância de banco de dados para entender o


tempo que o processo leva para o seu caso de uso específico e para
garantir que o aplicativo que acessa a instância de banco de dados
possa se conectar automaticamente à nova instância de banco de
dados após o failover ocorrer.

O DNS (Domain Name System – Sistema de nome de domínio)


converte nomes de domínio legíveis por humanos (por exemplo,
www.amazon.com) em endereços IP legíveis por máquina (por exemplo,
192.0.2.44).

Recomendamos fortemente que as boas práticas apresentadas


sejam observadas, avaliadas e implementadas. Estas não precisam ser
implementadas de uma única vez. O ideal é que seja feito de maneira
gradativa, avaliando o funcionamento dos ambientes após cada etapa e, se
necessário, fazer os ajustes necessários. Tão importante quanto
implementar é manter uma rotina constantes de avaliação, testes e ajustes.

4.5. Backup, snapshot e replicação do Amazon RDS


Backup, snapshot e janela de backup
O Amazon RDS cria e salva backups automatizados de sua instância
de banco de dados durante a janela de backup de sua instância de banco de
dados. O RDS cria um snapshot do volume de armazenamento da instância
de banco de dados, fazendo o backup de toda a instância de banco de dados
e não apenas dos bancos de dados individuais. O RDS salva os backups
automatizados da instância de banco de dados de acordo com o período de
retenção de backup especificado (0 e 35 dias). Se necessário, você poderá

78
recuperar seu banco de dados em qualquer ponto no tempo durante o
período de retenção do backup.

Uma instância de banco de dados deve estar no estado “disponível”


(available) para fazer backups automáticos. É possível fazer o backup da
instância de banco de dados manualmente, criando manualmente um
snapshot de banco de dados. O primeiro snapshot de uma instância de
banco de dados contém os dados da instância de banco de dados completa.
Os snapshots subsequentes da mesma instância de banco de dados são
incrementais, o que significa que somente os dados que foram alterados
depois do snapshot mais recente serão salvos.

É possível copiar snapshots de banco de dados automáticos e


manuais, e compartilhar snapshot de banco de dados manuais. O
armazenamento de backup do Amazon RDS para cada região da AWS é
composto por backups automáticos e snapshots de banco de dados manuais
para essa região. O espaço total do armazenamento de backup é igual à
soma do armazenamento de todos os backups nessa região. O
armazenamento do snapshot em outra região aumenta o armazenamento
de backup na região de destino.

Os backups são armazenados no Amazon S3. É possível reter


backups automatizados ao excluir uma instância de banco de dados desde
que a opção “Retain automated backups” seja selecionada no momento da
exclusão, caso contrário, todos os backups automatizados serão excluídos
junto com a instância de banco de dados sem opção de recuperação.
Snapshots manuais não são excluídos automaticamente. O Amazon RDS
pode criar um snapshot de banco de dados final antes de excluir sua
instância de banco de dados.

É possível ter até 100 snapshots manuais por região e 40 backups


automáticos por região. Os backups automáticos são feitos diariamente
durante a janela de backup escolhida. Se o backup exigir mais tempo do que

79
o da janela de backup, ele continuará após a janela encerrar até que esteja
concluído. A janela de backup não pode se sobrepor à janela de manutenção
semanal para a instância do banco de dados.

Você pode perceber latências elevadas por alguns minutos durante


os backups de implantações Multi-AZ. Durante a janela de backup
automático, as operações de E/S de armazenamento podem ser suspensas
brevemente, enquanto o processo de backup é inicializado (geralmente
durante alguns segundos). Os backups automatizados podem ser ignorados
ocasionalmente se a instância de banco de dados estiver sobrecarregada no
momento em que um backup deveria ser iniciado.

Se você não especificar uma janela de backup preferida ao criar a


instância de banco de dados, o Amazon RDS atribuirá uma janela de backup
de 30 minutos padrão. Essa janela é selecionada aleatoriamente em um
bloco de tempo de 8 horas, para cada região da AWS.

Replicação
O Amazon RDS usa a funcionalidade de replicação integrada nos
mecanismos de banco de dados MariaDB, MySQL, Oracle, PostgreSQL e
Microsoft SQL Server para criar um tipo especial de instância de banco de
dados, chamada de réplica de leitura, a partir de uma instância de banco de
dados de origem. A instância de banco de dados de origem se torna a
instância de banco de dados primária. As atualizações feitas à instância de
banco de dados primária são copiadas de forma assíncrona na réplica de
leitura.

É possível reduzir a carga na instância de banco de dados primária,


roteando as consultas de leitura dos aplicativos para a réplica de leitura.
Com o uso de réplicas de leitura, é possível expandir de maneira elástica para
além das limitações de capacidade de uma única instância de banco de
dados para cargas de trabalho (workloads) de banco de dados com muita
leitura.

80
Figura 30 – Arquitetura de referência demonstrando o processo de replicação
dos dados do Amazon RDS entre zonas de disponibilidades de uma região da
AWS.

Fonte: https://docs.aws.amazon.com.

Implemente rotinas de backup e, para validação, faça testes


periódicos de restore (recuperação de dados). Configure as rotinas de
backup automáticas observando a melhor janela para a execução, de forma
a não impactar a performance das aplicações em horário de trabalho.
Observe as políticas internas e/ou as regulamentações para o período de
retenção dos backups dos bancos de dados. Não menos importante, tenha
atenção às questões de monitoramento, performance, alta disponibilidade,
tolerância às falhas e segurança.

81
5
Capítulo 5. Amazon Aurora
5.1. O que é o Amazon Aurora?
O Amazon Aurora (Aurora) é um mecanismo de banco de dados
relacional gerenciado, compatível com o MySQL e o PostgreSQL, criado para
a nuvem, que combina performance e a disponibilidade de bancos de dados
empresariais tradicionais com a simplicidade e a economia de bancos de
dados de código aberto. Faz parte do serviço de banco de dados gerenciado
Amazon Relational Database Service (Amazon RDS).

Um banco de dados relacional é um tipo de banco de dados que


armazena e fornece acesso a pontos de dados relacionados entre si. Bancos
de dados relacionais são baseados no modelo relacional, uma maneira
intuitiva e direta de representar dados em tabelas.

É sabido como o MySQL e o PostgreSQL aliam a velocidade e a


confiabilidade dos bancos de dados comerciais avançados com a
simplicidade e a economia dos bancos de dados de código aberto.

O código, as ferramentas e os aplicativos que você usa atualmente


em seus bancos de dados existentes do MySQL e do PostgreSQL podem ser
usados com o Aurora. Com algumas cargas de trabalho, o Aurora pode
oferecer até cinco vezes a taxa de processamento do MySQL e até três vezes
a taxa de processamento do PostgreSQL, sem exigir alterações na maioria
dos aplicativos existentes. O Aurora inclui um subsistema de
armazenamento de alto desempenho.

Seus mecanismos de banco de dados compatíveis com o MySQL e o


PostgreSQL são personalizados para tirar proveito do rápido
armazenamento distribuído. O armazenamento subjacente aumenta
automaticamente, conforme necessário. Um volume de cluster do Aurora

83
pode aumentar até o tamanho máximo de 128 TB. O Aurora também
automatiza e padroniza a clusterização (criação, configuração e utilização
de clusters) e a replicação de bancos de dados que, normalmente, são os
aspectos mais desafiantes da configuração e da administração de bancos de
dados. Os backups são gerenciados pelo AWS Backup.

Pode ser gerenciado pelo uso da interface do AWS Management


Console do Amazon RDS, comandos da AWS CLI e operações de API para
processar as tarefas de rotina de bancos de dados, como provisionamento,
backup, recuperação, detecção de falhas e reparo.

As operações de gerenciamento do Aurora normalmente envolvem


clusters inteiros de servidores de bancos de dados que são sincronizados
por meio de replicação, em vez de instâncias de banco de dados individuais.
A clusterização (criação, configuração e utilização de clusters), a replicação
e a alocação de armazenamento automáticos, facilitam e tornam a
configuração, operação e escalabilidade de suas maiores implantações mais
rentáveis.

É possível trazer os dados do Amazon RDS for MySQL e do Amazon


RDS for PostgreSQL para o Aurora, criando e restaurando snapshots ou
configurando a replicação unidirecional. É possível usar as ferramentas de
migração push (empurrar) para converter seus aplicativos existentes do
Amazon RDS for MySQL e do Amazon RDS for PostgreSQL para o Aurora. Por
padrão, você pode ter um total de 40 instâncias de banco de dados Aurora.
Se a sua aplicação exigir mais instâncias de bancos de dados Aurora, você
poderá solicitar por meio do preenchimento de um formulário, dentro da
console de gerenciamento da AWS.

84
Figura 31 – Arquitetura de referência de ambiente altamente disponível com
Amazon Aurora.

Fonte: https://docs.aws.amazon.com.

O Amazon Aurora é uma excelente solução de banco de dados


gerenciado, fácil de administrar, altamente escalável, disponível e resiliente,
rápido, seguro e com baixo custo em relação aos ambientes tradicionais.
Adicionalmente, consolida o melhor das funcionalidades do MySQL e o
PostgreSQL, especialmente para os requisitos de velocidade e
confiabilidade.

5.2. Classes da instância de banco de dados Aurora


A classe de instância de banco de dados determina a capacidade de
computação e de memória de uma instância de banco de dados Aurora. A
classe de instância de banco de dados da qual você precisa depende dos
requisitos de memória e de processamento. O Amazon Aurora oferece
suporte a dois tipos de classes de instância:

85
• Otimizado para memória (Memory optimized).

• Performance expansível ou instâncias de performance com


capacidade de intermitência (Burstable performance).

Tipos de classe da instância de banco de dados Aurora


Tipos de classes de instância de banco de dados otimizadas para
memória disponíveis:

• db.x2g, db.z1d, db.x1e, db.x1, db.r6g, db.r5b, db.r5d, db.r5, db.r4,


db.r3.

• large, xlarge, 2xlarge, 4xlarge, 8xlarge, 12xlarge, 24xlarge.

Em resumo, há variação no número de núcleos, quantidade de


vCPUs, memória, tipo de armazenamento, largura de banda dedicada do EBS
(Mbps) e performance de rede (Gbps).

Figura 32 - Exemplos de configurações para os tipos de classes de instâncias


otimizadas para memória do Amazon Aurora.

Fonte: https://docs.aws.amazon.com.

Tipos de classes de instância de banco de dados de performance


expansível ou instâncias de performance com capacidade de
intermitência (burstable performance) disponíveis:

• db.t4g, db.t3, db.t2.

• Micro, small, medium, large, 2xlarge.

86
Em resumo, há variação no número de núcleos, quantidade de
vCPUs, memória, tipo de armazenamento, largura de banda dedicada do EBS
(Mbps) e performance de rede (Gbps).

Figura 33 - Exemplos de configurações para os tipos de classes de instâncias de


performance expansível do Amazon Aurora.

Fonte: https://docs.aws.amazon.com.

A escolha da classe das instâncias de bancos de dados do Amazon


Aurora depende, também, de um entendimento e de uma avaliação criteriosa
para o tipo de aplicação que é/será utilizada ou que será desenvolvida para
atender às necessidades do negócio.

Em especial, além dos custos e contínua atenção com a segurança,


observe os requisitos de capacidade de processamento, memória,
velocidade de acesso aos discos e performance de rede que o mecanismo de
banco de dados precisa ter para suportar adequadamente suas instâncias
de bancos de dados.

5.3. Armazenamento e confiabilidade


Armazenamento
O Aurora usa uma arquitetura de armazenamento distribuído e
compartilhado que é um fator importante em termos de performance,
escalabilidade e confiabilidade para clusters do Aurora. Os dados do Aurora
são armazenados no volume de cluster, que é um volume virtual único que
usa Solid State Drives (SSDs – Unidades de estado sólido). Um volume de
cluster consiste em cópias dos dados em várias zonas de disponibilidade em
uma única região da AWS.

87
Como os dados são replicados automaticamente nas Zonas de
disponibilidade, seus dados são resilientes, havendo menos possibilidade de
perda de dados. Essa replicação também garante que o banco de dados
esteja disponível durante um failover. Ele faz isso porque as cópias de dados
já existem nas outras zonas de disponibilidade e continuam atendendo a
solicitações de dados para as instâncias de banco de dados no cluster de
banco de dados. A quantidade de replicação independe do número de
instâncias de banco de dados no cluster.

O volume de cluster do Aurora contém todos os dados do usuário, os


objetos de esquema e os metadados internos como as tabelas do sistema e
o log binário. Por exemplo, o Aurora armazena todas as tabelas, os índices,
os grandes objetos binários (BLOBs – Binary Large Objects) em um cluster
do Aurora no volume do cluster. A arquitetura de armazenamento
compartilhado do Aurora torna os dados independentes das instâncias de
banco de dados no cluster. Remova uma instância de banco de dados de um
cluster sem remover dados subjacentes do cluster. O Aurora só remove os
dados quando você exclui todo o cluster.

BLOB, em inglês, significa Binary Large Object. Ele é definido como


o pedaço de dados binários sendo armazenado como uma única entidade em
um sistema de banco de dados. Os BLOBs são usados principalmente para
armazenar objetos multimídia como imagens, vídeos e sons, embora
também possam ser usados para armazenar programas. Nem todos os
bancos dedos suportam BLOBs.

Os volumes de cluster do Aurora crescem automaticamente à


medida em que aumenta a quantidade de dados em seu banco de dados. Um
volume do cluster do Aurora pode aumentar até o tamanho máximo de 128
TB. Essa escalabilidade automática de armazenamento é combinada com
um subsistema de armazenamento altamente distribuído e de alta

88
performance. Quando os dados do Aurora são removidos, o espaço alocado
para esses dados é liberado.

Exemplos de remoção de dados incluem descartar ou truncar uma


tabela (apagar os dados sem excluir a tabela). Essa redução automática no
uso do armazenamento ajuda a minimizar as cobranças de armazenamento.
Alguns recursos de armazenamento, como o tamanho máximo de um
volume de cluster e o redimensionamento automático quando os dados são
excluídos, dependem da versão do Aurora do cluster.

Confiabilidade
O Aurora foi projetado para ser confiável, durável e tolerante a falhas.
É possível arquitetar o cluster de banco de dados do Aurora para aumentar
a disponibilidade por meio de ações, como adicionar réplicas do Aurora e
instalá-las em zonas de disponibilidade diferentes. Além disso, o Aurora
inclui vários recursos automáticos que fazem dele uma solução de banco de
dados confiável.

Confiabilidade – Reparo automático de armazenamento


Como o Aurora mantém várias cópias de seus dados em três zonas
de disponibilidade, a chance de perder dados devido a uma falha no disco é
muito baixa. O Aurora detecta automaticamente as falhas nos volumes de
disco que compõem o volume do cluster.

Quando um segmento de um volume de disco falha, o Aurora repara


imediatamente o segmento. Quando o Aurora repara o segmento do disco,
ele usa os dados nos outros volumes que compõem o volume do cluster para
garantir que os dados no segmento reparado sejam atuais. Como resultado,
o Aurora evita a perda de dados e reduz a necessidade de executar uma
restauração pontual para recuperação de uma falha de disco.

89
Confiabilidade – Aquecimento de cache possível de recuperar
O Aurora “aquece” o cache do grupo de buffer quando um banco de
dados é iniciado após ter sido desligado ou reiniciado mediante uma falha.
Aurora pré-carrega o grupo de buffer com as páginas para consultas comuns
conhecidas, que são armazenadas em um cache de páginas na memória.
Isso gera um ganho de desempenho, eliminando a necessidade de “aquecer”
o grupo de buffer do uso normal do banco de dados.

Cache, em banco de dados, é o nome de um espaço reservado na


memória do computador onde os dados são armazenados temporariamente,
até que sejam completamente processados. Depois disso, o cache de
confirmação salva os dados no disco rígido ou recupera os dados no disco
rígido, quando necessário. Um dos principais objetivos do cache é retornar
os resultados das consultas de maneira muito mais rápida. Estando os dados
em memória, o resultado de uma determinada consulta será extremamente
mais rápido em comparação ao tempo necessário para fazer a mesma
consulta, caso seja necessária realizar uma ou mais operações de leitura no
disco rígido.

O cache de página do Aurora é gerenciado em um processo separado


do banco de dados, permitindo que o cache da página sobreviva
independentemente do banco de dados. No caso improvável de uma falha
no banco de dados, o cache de página permanece na memória, o que garante
que o grupo de buffer seja aquecido com o estado mais recente quando o
banco de dados for reiniciado.

Confiabilidade – Recuperação de falha


O Aurora é projetado para se recuperar de uma falha quase
instantaneamente e continuar a fornecer seus dados de aplicações sem o
log binário. O Aurora executa a recuperação de falhas de forma assíncrona
(que não ocorre nem se efetiva ao mesmo tempo, ocorre em intervalos

90
regulares) em threads paralelos, de maneira que o banco de dados seja
aberto e fique disponível imediatamente após a falha.

Thread é um pequeno programa que trabalha como um subsistema,


sendo uma forma de um processo se autodividir em duas ou mais tarefas. É
o termo em inglês para “linha ou encadeamento de execução”. Essas tarefas
múltiplas podem ser executadas simultaneamente para rodar mais rápido
do que um programa em um único bloco ou praticamente juntas, mas que
são tão rápidas que parecem estar trabalhando em conjunto ao mesmo
tempo.

O Amazon Aurora é uma excelente solução de banco de dados


gerenciado, fácil de administrar, altamente escalável, disponível e resiliente,
seguro e com baixo custo em relação aos ambientes tradicionais.
Adicionalmente, consolida o melhor das funcionalidades do MySQL e o
PostgreSQL, especialmente, para os requisitos de velocidade e
confiabilidade. Isso faz do Aurora uma boa escolha para seus dados
corporativos importantes quando seus principais objetivos são
confiabilidade e alta disponibilidade.

5.4. Segurança, alta disponibilidade, tolerância às falhas e replicação


Segurança do Amazon Aurora
A segurança é uma responsabilidade compartilhada entre a AWS e
você.

Segurança da nuvem: a AWS é responsável pela proteção da


infraestrutura que executa produtos da AWS na Nuvem AWS.

Segurança na nuvem: sua responsabilidade inclui fazer uso de


criptografia, implementar duplo fator de autenticação (MFA), usar senhas
fortes, não compartilhar usuários, gerenciar identidade de acesso, controlar
o acesso e permissões aos bancos de dados, configurar o registro em log das

91
atividades de API, monitoramento, validação de conformidade e isolamento
de rede. Adicionalmente, fazer testes periódicos de recuperação de dados.

Alta disponibilidade e replicação do Amazon Aurora


A arquitetura do Amazon Aurora envolve separação entre
armazenamento e computação. O Aurora contém alguns recursos de alta
disponibilidade que se aplicam aos dados no cluster de banco de dados. Os
dados permanecem seguros, mesmo que algumas ou todas as instâncias de
banco de dados no cluster fiquem indisponíveis. Outros recursos de alta
disponibilidade se aplicam às instâncias de banco de dados.

O Aurora armazena cópias dos dados em um cluster de banco de


dados em várias zonas de disponibilidade em uma única região da AWS. O
Aurora armazena essas cópias independentemente de as instâncias no
cluster de banco de dados abrangerem várias zonas de disponibilidade.
Quando os dados são gravados na instância principal de banco de dados, o
Aurora replica os dados de forma síncrona (que acontece exatamente ao
mesmo tempo outra coisa, que ocorre em simultâneo com outros) nas zonas
de disponibilidade para seis nós de armazenamento associados ao volume
do cluster.

Nós do cluster ou cluster nodes, em computação, representam cada


computador (recurso computacional) que faz parte do cluster. Os nós do
cluster devem ser interconectados, preferencialmente, por uma rede de alta
velocidade.

Isso fornece redundância de dados, elimina congelamentos de E/S


(entrada e saída) e minimiza picos de latência durante backups do sistema.
Executar uma instância de banco de dados com alta disponibilidade
aumenta a disponibilidade durante uma manutenção planejada do sistema
e ajuda a proteger os bancos de dados contra falhas e interrupções da zona
de disponibilidade.

92
Latência quer dizer a quantidade de atraso (o tempo) que uma
solicitação leva para ser transferida de um ponto para outro e é medida por
milissegundos (ms).

Para um cluster que usa a replicação de mestre único, após criar a


instância primária, é possível criar até 15 réplicas somente leitura do Aurora.
As réplicas do Aurora também são conhecidas como instâncias de leitura
(read replicas). É possível descarregar parte do trabalho para aplicativos com
uso intensivo de leitura usando as instâncias de leitor para processar
consultas SELECT. Quando um problema afeta a instância primária, uma
dessas instâncias de leitor assume como instância primária. Esse
mecanismo é conhecido como failover.

O Aurora detecta problemas de banco de dados e ativa o mecanismo


de failover automaticamente, quando necessário. O Aurora também tem
recursos que reduzem o tempo de conclusão do failover, que minimiza o
tempo em que o banco de dados não está disponível para gravação durante
um failover. Para usar uma string de conexão que permanece a mesma,
mesmo quando um failover promove uma nova instância primária, conecte-
se ao endpoint do cluster. O endpoint do cluster sempre representa a
instância primária atual no cluster.

String de conexão, é uma cadeia de caracteres que especifica


informações sobre uma fonte de dados e os meios de conexão com ela.
Exemplo de uma string de conexão: Driver={SQL Native Client};
Server=meuServidor; Database=meuBanco; Uid=NomeUsuario;
Pwd=SenhaUsuario;

Endpoint é um termo em inglês que pode ser traduzido, literalmente,


como “pontos de extremidade”. Usado para definir pontos de comunicação
de acesso a uma aplicação (endpoints de comunicação com a aplicação) de
banco de dados (endpoint de com o banco de dados) de um local de

93
armazenamento na nuvem (endpoint de comunicação com o
armazenamento S3).

Para obter alta disponibilidade em várias regiões da AWS, é possível


configurar bancos de dados globais do Aurora. Cada banco de dados global
do Aurora abrange várias regiões da AWS, permitindo leituras globais de
baixa latência e recuperação de desastres de interrupções em uma região da
AWS. O Aurora lida automaticamente com a replicação de todos os dados e
atualizações da região primária da AWS para cada uma das regiões
secundárias.

Tolerância às falhas do Amazon Aurora


Um cluster de banco de dados do Aurora é tolerante às falhas por
concepção. O volume do cluster abrange várias zonas de disponibilidade em
uma única região da AWS, e cada zona de disponibilidade contém uma cópia
dos dados de volume do cluster. Isso significa que seu cluster de banco de
dados pode tolerar falhas de uma Zona de disponibilidade sem perder dados,
havendo apenas uma breve interrupção do serviço.

Se a instância primária em um cluster de banco de dados usando a


replicação de mestre único falhar, o Aurora falhará automaticamente em
uma nova instância primária de um dos dois jeitos:

• Ao promover uma réplica do Aurora existente para a nova instância


primária.

• Ao criar uma nova instância primária.

Se o cluster de banco de dados tiver uma ou mais réplicas do Aurora,


uma réplica do Aurora será promovida à instância primária durante um
evento de falha.

Um evento de falha resulta em uma breve interrupção, durante a


qual as operações de leitura e gravação falham com uma exceção. No

94
entanto, o serviço é restaurado normalmente em menos de 120 segundos e
muitas vezes em menos de 60 segundos. Para aumentar a disponibilidade
do seu cluster de banco de dados, é recomendado criar pelo menos uma ou
mais réplicas do Aurora em duas ou mais Zonas de disponibilidade
diferentes.

Você pode personalizar a ordem em que suas réplicas do Aurora são


promovidas à instância primária após uma falha, atribuindo uma prioridade
(0 a 15) a cada réplica. Se o cluster de banco de dados não contiver quaisquer
réplicas do Aurora, a instância primária será recriada na mesma AZ (zona de
disponibilidade) durante um evento de falha.

Neste caso, um evento de falha resulta em uma interrupção durante


a qual as operações de leitura e gravação falham com uma exceção. O serviço
é reestabelecido quando a nova instância primária é criada, o que
normalmente leva menos de 10 minutos. Promover uma réplica do Aurora à
instância primária é muito mais rápido do que criar uma nova instância
primária.

Figura 34 – Arquitetura de referência que ilustra a relação entre o volume do


cluster, a instância de banco de dados primária e as réplicas do Aurora em um
cluster de banco de dados do Aurora.

Fonte: https://docs.aws.amazon.com.

95
O Amazon Aurora é uma excelente solução de banco de dados
gerenciado, fácil de administrar, altamente escalável, disponível, tolerante
às falhas, rápido, confiável, seguro e com baixo custo em relação aos
ambientes tradicionais. Por possuir mecanismos de recuperação
automáticos, talvez seja um dos serviços do Amazon RDS mais resiliente na
AWS.

96
6
Capítulo 6. Amazon DynamoDB
6.1. O que é o Amazon DynamoDB
O Amazon DynamoDB é um serviço de banco de dados NoSQL
(chave-valor) totalmente gerenciado, que fornece uma performance rápida
e previsível com escalabilidade integrada. NoSQL é um termo usado para
descrever os sistemas de bancos de dados não relacionais altamente
disponíveis, dimensionáveis e otimizados para alta performance. Bancos de
dados NoSQL fornecem esquemas flexíveis para a criação de aplicativos
modernos.

Figura 35 - O diagrama a seguir mostra um exemplo de dados armazenados


como pares de chave-valor no DynamoDB.

Fonte: https://aws.amazon.com.

Um banco de dados NoSQL (originalmente referindo-se a "não-SQL"


ou "não-relacional") fornece um mecanismo para armazenamento e
recuperação de dados que é modelado em outros meios que não as relações
tabulares usadas em bancos de dados relacionais.

98
Bancos de dados NoSQL são amplamente reconhecidos por sua
facilidade de desenvolvimento, funcionalidade e desempenho em escala.
Você não precisa se preocupar com provisionamento, instalação e
configuração de hardware, replicação, correção de software nem
escalabilidade de cluster. Ao começar a trabalhar com o Amazon DynamoDB,
você encontrará muitas similaridades, mas também muitas diferenças. Se
você é um desenvolvedor de aplicativos, talvez tenha alguma experiência no
uso do sistema de gerenciamento de banco de dados relacional (RDBMS –
Relational Database Management System) e da linguagem de consulta
estruturada (SQL - Structured Query Language).

Structured Query Language (SQL) é uma linguagem de programação


padronizada que é usada para gerenciar bancos de dados relacionais e
realizar várias operações nos dados neles contidos.

Em vez de usar o modelo relacional, os bancos de dados NoSQL


(como o DynamoDB) usam modelos alternativos para o gerenciamento de
dados, como pares de chave-valor ou armazenamento de documentos.
Oferece suporte à PartiQL do Amazon DynamoDB, uma linguagem de
consulta compatível com SQL de código aberto que facilita a consulta de
dados com eficiência, independentemente do local ou do formato em que
estejam armazenados.

Com PartiQL, é possível processar facilmente dados estruturados de


bancos de dados relacionais, dados semiestruturados e aninhados em
formatos de dados abertos ou em bancos de dados de documentos que
permitam atributos diferentes para linhas diferentes. Na imagem abaixo, um
exemplo de uma tabela em um banco de dados NoSQL contendo dados.

99
Figura 36 – Exemplo de uma tabela em um banco de dados NoSQL contendo
dados.

Fonte: https://aws.amazon.com.

Figura 37 – Exemplo de comandos para a criação de uma tabela em um banco de


dados NoSQL.

100
Fonte: https://aws.amazon.com.

101
Figura 38 – Exemplo de comandos SQL para a criação de uma tabela em um
banco de dados relacional.

Fonte: https://docs.aws.amazon.com.

O Amazon DynamoDB é uma solução de banco de dados gerenciado,


NoSQL, ideal para casos de uso enormes e de alta velocidade, carrinhos de
compras virtuais (sites) e aplicações modernas (jogos on-line).

6.2 Principais recursos e componentes


Principais recursos e componentes
No DynamoDB, tabelas, itens e atributos são os componentes
principais com que você trabalha. Uma tabela é uma coleção de itens e cada
item é uma coleção de atributos. O DynamoDB usa chaves primárias para
identificar exclusivamente cada item em uma tabela e índices secundários
para fornecer mais flexibilidade de consulta. Você pode usar o DynamoDB
Streams para capturar eventos de modificação de dados em tabelas do
DynamoDB.

Oferece criptografia em repouso (criptografia dos dados em disco)


para proteção de dados confidenciais. Com o DynamoDB você pode criar
tabelas de banco de dados que armazenam e recuperam qualquer
quantidade de dados e atendem a todos os níveis de tráfego solicitados.
Permite aumentar ou diminuir a capacidade de taxa de transferência da
tabela sem tempo de inatividade ou degradação da performance. Você pode

102
usar o AWS Management Console para monitorar a utilização de recursos e
as métricas de performance.

Oferece o recurso de backup sob demanda, permitindo criar backups


completos das suas tabelas para retenção e arquivamento de longo prazo,
de modo a atender às necessidades de conformidade regulamentar. É
possível criar backups sob demanda e habilitar backups contínuos com a
recuperação em um ponto anterior do tempo para as tabelas do Amazon
DynamoDB. A recuperação point-in-time (em um ponto anterior do tempo)
ajuda a proteger as tabelas do de operações acidentais de gravação ou
exclusão.

A recuperação point-in-time é uma funcionalidade que fornece aos


administradores de bancos de dados a opção de recuperar um conjunto de
dados, em um ponto específico no tempo, sem afetar o restante do banco de
dados.

Com a recuperação point-in-time (em um ponto anterior do tempo),


você pode recuperar a tabela para qualquer ponto durante os últimos 35
dias. O DynamoDB permite excluir automaticamente os itens expirados das
tabelas para ajudar você a reduzir o uso e o custo do armazenamento de
dados que não são mais relevantes. Por ser um serviço de banco de dados
totalmente gerenciado, permite que você transfira os encargos
administrativos de operação e escalabilidade de um banco de dados
distribuído.

Os bancos de dados NoSQL fornecem esquemas flexíveis para a


criação de aplicativos modernos (jogos on-line, por exemplo). Eles são
amplamente reconhecidos por sua facilidade de desenvolvimento,
funcionalidade e desempenho em escala. Proporciona um desempenho
rápido e previsível com escalabilidade contínua para bancos de dados
NoSQL na nuvem da AWS. Como um serviço de banco de dados totalmente

103
gerenciado, o DynamoDB permite que você transfira os encargos de
operação e escalabilidade de um banco de dados distribuído.

O design do esquema NoSQL requer uma abordagem diferente do


design tradicional do sistema de gerenciamento de banco de dados
relacional (RDBMS). O modelo de dados relacional (RDBMS) concentra-se na
estrutura dos dados e suas relações com outros dados. A modelagem de
dados NoSQL se concentra em padrões de acesso ou como o aplicativo
consumirá os dados, para que ele armazene os dados de uma forma que
ofereça suporte a operações de consulta simples.

Para um banco de dados relacional (Microsoft SQL Server ou o IBM


Db2) você pode criar um modelo de dados normalizado sem pensar muito
em padrões de acesso e estendê-lo para suportar seus padrões e consultas
posteriormente.

Figura 39 – Exemplo de modelo de dados normalizados em um banco de dados


relacional.

Fonte: https://pt.stackoverflow.com.

104
Figura 40 – Exemplo de uma arquitetura de referência de aplicação moderna
que faz uso do DynamoDB e outros serviços AWS.

Fonte: https://docs.aws.amazon.com.

Leituras eventualmente consistentes (Eventually Consistent Reads)


Quando você lê dados de uma tabela do DynamoDB, a resposta pode
não refletir os resultados de uma operação de gravação recém-concluída. A
resposta pode incluir alguns dados obsoletos. Se você repetir sua solicitação
de leitura após um curto período, a resposta deverá retornar os dados mais
recentes.

Leituras fortemente consistentes (Strongly Consistent Reads)


Quando você solicita uma leitura fortemente consistente, o
DynamoDB retorna uma resposta com os dados mais atualizados, refletindo
as atualizações de todas as operações de gravação anteriores que foram
bem-sucedidas.

O Amazon DynamoDB possui vários recursos e componentes. É de


fundamental importância conhecer em detalhes cada um deles para que os
desenvolvedores possam tirar o melhor proveito e criarem aplicações cada
vez mais modernas, rápidas e resilientes.

6.3. Alta disponibilidade, durabilidade e melhores práticas


O DynamoDB distribui automaticamente os dados e o tráfego para
as tabelas por um número suficiente de servidores, para lidar com seus
requisitos de taxa de transferência e armazenamento sem deixar de manter
uma performance consistente e rápida. Todos os dados são armazenados

105
em discos de estado sólido (SSDs) e automaticamente replicados entre
várias zonas de disponibilidade em uma região da AWS, o que oferece alta
durabilidade de dados e disponibilidade integradas.

Você pode usar tabelas globais para manter as tabelas do


DynamoDB sincronizadas em regiões da AWS. Se uma única região da AWS
se tornar isolada ou degradada, sua aplicação, se preparada, poderá realizar
redirecionamentos para uma região diferente e executar leituras e
gravações em uma tabela-réplica diferente.

Se uma região se tornar isolada ou degradada, o DynamoDB


acompanhará as gravações executadas que ainda não foram propagadas
para todas as tabelas-réplica. Quando a região voltar a ficar on-line, o
DynamoDB retomará a propagação de todas as gravações pendentes dessa
região para as tabelas-réplica nas outras regiões. Ele também retomará a
propagação de gravações de outras tabelas-réplica para a região que está
on-line novamente.

Melhores práticas
As seguintes práticas recomendadas podem ajudar a antecipar e
evitar incidentes de segurança no Amazon DynamoDB:

• Criptografia em repouso (criptografia dos dados em disco) e


criptografia do lado do cliente.

• Usar funções do IAM para autenticar o acesso ao DynamoDB.

• Usar políticas o IAM para autorizações de acesso ao DynamoDB.

• Uso de condições de política do IAM para controle de acesso


refinado.

• Usar um endpoint da VPC e políticas para acessar o DynamoDB.

106
• Se estiver usando criptografia, use o AWS CloudTrail para monitorar
e auditar o uso das chaves do KMS gerenciadas pela AWS.

• Monitorar operações do DynamoDB usando o CloudTrail.

• E principalmente, faça backup dos dados e faça testes periódicos de


restore.

O Amazon DynamoDB é uma excelente solução de banco de dados


gerenciado, NoSQL, fácil de administrar, altamente escalável, disponível e
resiliente, rápido, seguro e com baixo custo em relação aos ambientes
tradicionais. Ideal para ser usado com aplicações modernas que exigem
extrema velocidade para leitura e escrita de dados (jogos on-line).

107
7
Capítulo 7. Amazon DocumentDB
7.1. O que é o Amazon DocumentDB?
O Amazon DocumentDB é um serviço de banco de dados NoSQL
(chave-valor), rápido, confiável e totalmente gerenciado. O Amazon
DocumentDB facilita a configuração, a operação e a escalabilidade de
bancos de dados compatíveis com o MongoDB na nuvem. Com ele, é possível
executar o mesmo código de aplicativo e usar os mesmos drivers e
ferramentas usados com o MongoDB. Como um banco de dados de
documentos, o Amazon DocumentDB pode armazenar, consultar e indexar
dados em formato JSON (formato de arquivo padrão aberto).

JSON (JavaScript Object Notation) é um formato de arquivo padrão


aberto e de intercâmbio de dados que usa texto legível para armazenar e
transmitir objetos de dados que consistem em pares de valor-atributo e
matrizes (ou outro formato serializável valores). É um formato de dados
comum, com diversos usos no intercâmbio eletrônico de dados, incluindo
aplicações web com servidores, e independe de idioma. Ele foi derivado do
JavaScript, mas muitas linguagens de programação modernas incluem
código para gerar e analisar dados no formato JSON. Os nomes de arquivo
JSON usam a extensão .json.

O DocumentDB fornece pesquisas de documento único, verificações


de índice, consultas de expressão regular e agregações. Um banco de dados
de documentos armazena nativamente dados JSON. Os bancos de dados de
documentos são usados para armazenar dados semiestruturados como um
documento — em vez de normalizar dados em várias tabelas, cada uma com
uma estrutura única e fixa, como em um banco de dados relacional. Os
documentos armazenados em um banco de dados de documentos usam
pares de chave/valor aninhados para fornecer a estrutura ou o esquema do
documento.

109
Diferentes tipos de documentos podem ser armazenados no mesmo
banco de dados de documentos, atendendo, assim, ao requisito de
processamento de dados semelhantes em formatos diferentes. É possível
criar índices de campo único, compostos e de várias chaves para melhorar o
desempenho dos padrões de consulta. Os clientes podem usar o AWS
Database Migration Service (DMS) para migrar facilmente bancos de dados
não relacionais do MongoDB on-premises ou do Amazon Elastic Compute
Cloud (EC2) para o Amazon DocumentDB, sem praticamente nenhum tempo
de inatividade.

Não há investimentos antecipados para usar o Amazon


DocumentDB. Os clientes pagam apenas pela capacidade utilizada. Alguns
desenvolvedores não pensam em seu modelo de dados em termos de linhas
e colunas normalizadas. Normalmente, na camada do aplicativo, os dados
são representados como um documento JSON, pois é mais intuitivo para os
desenvolvedores pensarem em seu modelo de dados como um documento.
Antes de criar instâncias do Amazon DocumentDB, é necessário criar um
cluster para conter as instâncias. Uma instância do Amazon DocumentDB é
um ambiente de banco de dados na nuvem.

Uma instância pode conter vários bancos de dados que podem ser
criados e modificados pelo uso do AWS Management Console ou da AWS
CLI. A popularidade dos bancos de dados de documentos cresceu porque
eles permitem que você mantenha a persistência dos dados em um banco
de dados, usando o mesmo formato de modelo de documento usado no
código do aplicativo. Os bancos de dados de documentos fornecem APIs
poderosas e intuitivas para desenvolvimento flexível e ágil.

110
Figura 41 – Imagem de uma tabela do SQL Server (banco de dados relacional).

Fonte: http://www.macoratti.net.

Figura 42 – Imagem de uma tabela do DocumentDB (banco de dados não


relacional).

Fonte: https://docs.aws.amazon.com.

O Amazon DocumentDB é uma solução de banco de dados


gerenciado, NoSQL, fácil de administrar, altamente escalável, disponível e
resiliente, rápido, seguro e com baixo custo em relação aos ambientes
tradicionais. Além disso, dispõe de um esquema flexível, pode armazenar
documentos com atributos e valores de dados diferentes e possibilita um

111
desenvolvimento rápido, que é o ideal para soluções de Big Data em tempo
real.

7.2. Principais recursos e componentes


O Amazon DocumentDB aumenta automaticamente o tamanho do
volume de armazenamento à medida que as necessidades de
armazenamento do seu banco de dados aumentam. Seu volume de
armazenamento aumenta em incrementos de 10 GB, até um máximo de 64
TB. Você não precisa provisionar nenhum armazenamento em excesso para
o seu cluster para lidar com o crescimento futuro.

O Amazon DocumentDB fornece um endpoint do leitor para que o


aplicativo possa se conectar sem precisar rastrear as réplicas à medida que
elas são adicionadas e removidas. O Amazon DocumentDB permite
aumentar ou diminuir a escala dos recursos de computação e memória para
cada uma das suas instâncias. As operações de escalabilidade de
computação geralmente são concluídas em poucos minutos.

O Amazon DocumentDB é executado na Amazon Virtual Private


Cloud (Amazon VPC), para que você possa isolar o banco de dados em sua
própria rede virtual. Também é possível definir configurações de firewall
para controlar o acesso de rede ao cluster. Com o Amazon DocumentDB,
você pode criptografar seus bancos de dados usando chaves que você cria e
controla por meio do AWS Key Management Service (AWS KMS).

Amazon VPC é uma rede virtual logicamente isolada na nuvem da


AWS. Você tem controle total sobre o ambiente de rede virtual, inclusive com
relação à seleção dos seus próprios intervalos de endereço IP, à criação de
sub-redes e à configuração de tabelas de roteamento e gateways de rede.
Além disso, você pode criar uma conexão de Virtual Private Network (VPN).

112
O AWS Key Management Service (KMS) facilita a criação e o
gerenciamento de chaves criptográficas e o controle do seu uso em uma
ampla variedade de serviços da AWS e em seus aplicativos.

Em um cluster de banco de dados em execução com a criptografia


do Amazon DocumentDB, os dados armazenados em repouso no
armazenamento subjacente (discos) são criptografados. Os backups
automatizados, snapshots e réplicas no mesmo cluster também são
criptografados. Um cluster consiste em 0 a 16 instâncias, e um volume de
armazenamento de cluster que gerencia os dados dessas instâncias. Todas
as gravações são feitas por meio da instância primária. Destaca-se que todas
as instâncias (primárias e réplicas) são compatíveis com leituras. Os dados
do cluster são armazenados no volume do cluster com cópias em três zonas
de disponibilidade diferentes.

Figura 43 - Arquitetura de referência com DocumentDB em cluster utilizando


réplicas de leitura distribuídas em zonas de disponibilidades diferentes.

Fonte: https://docs.aws.amazon.com.

O Amazon DocumentDB possui vários recursos e componentes. É de


fundamental importância conhecer em detalhes cada um deles para que os

113
desenvolvedores possam tirar o melhor proveito e criar aplicações cada vez
mais modernas, rápidas e resilientes.

7.3. Alta disponibilidade, durabilidade e melhores práticas


Com o Amazon DocumentDB, você pode aumentar a taxa de
transferência de leitura para oferecer suporte a solicitações de aplicativos
de alto volume, criando até 15 instâncias de réplica. As réplicas do Amazon
DocumentDB compartilham o mesmo armazenamento subjacente,
reduzindo os custos e evitando a necessidade de executar gravações nos
nós da réplica. Você pode adicionar réplicas em minutos,
independentemente do tamanho do volume de armazenamento.

Esse recurso (réplicas) libera mais capacidade de processamento


para atender às solicitações de leitura e reduz o tempo de defasagem das
réplicas — geralmente para menos de 10 milissegundos, na maioria das
vezes. O Amazon DocumentDB monitora continuamente a integridade do
cluster. Em uma falha de instância, o Amazon DocumentDB reinicia
automaticamente a instância e os processos associados.

O Amazon DocumentDB não requer uma repetição de recuperação


de falhas de redo logs de banco de dados (refaz uma determinada transação
que possa ter sofrido algum tipo de indisponibilidade), o que reduz muito os
tempos de reinicialização. O Amazon DocumentDB também isola o cache do
banco de dados do processo de banco de dados, permitindo que o cache
sobreviva a uma reinicialização da instância. Em caso de falha, o Amazon
DocumentDB automatiza o failover para uma das 15 réplicas que você cria
em outras zonas de disponibilidade.

Se nenhuma réplica tiver sido provisionada e ocorrer uma falha, o


Amazon DocumentDB tentará criar uma nova instância automaticamente. O
recurso de backup no Amazon DocumentDB permite a recuperação point-in-
time do cluster. Esse recurso permite que você restaure seu cluster para
qualquer segundo dos últimos cinco minutos do período de retenção. O

114
Amazon DocumentDB executa backup contínuo dos dados com retenção de
1 a 35 dias.

Os backups automatizados são armazenados no Amazon Simple


Storage Service (Amazon S3), projetado para oferecer durabilidade de
99,999999999%. O Amazon DocumentDB também usa snapshots
automáticos dos dados como parte desse processo de backup contínuo. Os
backups do Amazon DocumentDB são automáticos, incrementais e
contínuos, e não afetam o desempenho do cluster. Você também pode reter
os dados de backup além do período de retenção de backup, criando um
snapshot manual dos dados do cluster. O processo de backup não afeta o
desempenho do cluster.

Melhores práticas
As diretrizes operacionais básicas a seguir devem ser seguidas por
todos ao trabalhar com o Amazon DocumentDB.

• Implantar um cluster com duas ou mais instâncias do Amazon


DocumentDB em duas Zonas de disponibilidade.

• Use o serviço dentro dos limites de serviço indicados.

• Monitorar o consumo de memória, CPU, conexões e uso de


armazenamento para auxiliar na manutenção do desempenho e da
disponibilidade do sistema.

• Escale suas instâncias quando estiver se aproximando dos limites


de capacidade.

• Defina seu período de retenção de backup para alinhar com seu


objetivo de ponto de recuperação.

• Teste o failover de seu cluster para entender quanto tempo o


processo leva para seu caso de uso.

115
• Escolha uma configuração de preferência de leitura das aplicações
que maximize a escalabilidade de leitura.

• Projetar aplicativos para serem resistentes no caso de erros de rede


e banco de dados.

• Habilite a proteção contra exclusão de todos os clusters, seja de


produção ou de qualquer cluster que tenha dados valiosos.

• Faça o dimensionamento correto para a escolha do tamanho da


instância.

• Aplique o menor privilégio com o controle de acesso baseado em


função.

• Atribua uma conta do IAM individual a cada pessoa que gerencia os


recursos do Amazon DocumentDB.

• Conceda a cada usuário do IAM o conjunto mínimo de permissões


necessárias para realizar suas funções.

• Mude suas credenciais do IAM regularmente.

• Configure AWS Secrets Manager para alternar automaticamente as


senhas do Amazon DocumentDB.

• Use a Transport Layer Security (TLS) para criptografar os dados em


trânsito e o AWS KMS para criptografar os dados em repouso
(criptografia dos dados em disco).

O AWS Identity and Access Management (IAM) fornece controle de


acesso refinado em toda a AWS. Com o IAM, é possível especificar quem
pode acessar quais serviços e recursos e em que condições. Com as políticas
do IAM, você gerencia permissões para seu quadro de funcionários e
sistemas para garantir permissões com privilégios mínimos.

116
O Amazon DocumentDB é uma solução muito prática para o
armazenamento de perfis de usuários online para gerar recomendações para
estes usuários. Outro caso de uso é para aplicações de big data em tempo
real. Ao usar bancos de dados de documentos, uma empresa pode
armazenar e gerenciar dados operacionais de qualquer origem e,
simultaneamente, alimentar os dados para o mecanismo de BI escolhido
para análise.

Devido ao esquema flexível, os bancos de dados de documentos são


perfeitos para coletar e armazenar qualquer tipo de dados. Você pode usá-
los para criar e incorporar novos tipos de conteúdo, incluindo conteúdo
gerado pelo usuário, como imagens, comentários e vídeos.

117
8
Capítulo 8. Amazon ElastiCache
8.1. O que é o Amazon ElastiCache?
O Amazon ElastiCache é um serviço da Web que facilita a
configuração, o gerenciamento e escalabilidade de um armazenamento de
dados distribuído em memória ou de um ambiente de cache na nuvem. É um
serviço totalmente gerenciado e fornece uma solução de armazenamento
em cache econômica, de alta performance (latência de microssegundos) e
escalável. Ajuda a remover a complexidade associada à implantação e ao
gerenciamento de um ambiente de cache distribuído.

Oferece suporte a casos de uso flexíveis e em tempo real, o que


acelera a performance de aplicações e bancos de dados, ou como um
armazenamento de dados principal para casos de uso que não exigem
durabilidade, como armazenamentos de sessões, placares de jogos,
streaming e análises. O serviço melhora o desempenho de aplicativos da
Web, recuperando informações de caches de memória gerenciados, em vez
de depender inteiramente de bancos de dados baseados em disco mais
lentos.

O ElastiCache oferece suporte a dois mecanismos de cache na


memória de código aberto: ElastiCache for Memcached e o ElastiCache for
Redis. Além disso, gerencia backups, patches de software, detecção
automática de falhas e recuperação. É possível executar um cluster em uma
nuvem privada virtual (VPC) usando o serviço Amazon Virtual Private Cloud
(Amazon VPC), permitindo o controle sobre o ambiente de rede virtual.

Casos de uso
O AWS ElastiCache é particularmente ideal para casos de uso, como:

119
• Atualização e gerenciamento de tabelas de classificação na indústria
de jogos.

• Realização de análises em tempo real, enquanto os clientes


compram em sites de comércio eletrônico.

• Monitoramento do status das contas dos clientes em sites baseados


em assinatura.

• Processamento e retransmissão de mensagens em plataformas de


mensagens instantâneas.

• Transmissão de mídia on-line.

• Realização de processos geoespaciais.

O que é o armazenamento em cache?


Na área de computação, um cache é uma camada de armazenamento
físico de dados de alta velocidade, que guarda um subconjunto de dados,
geralmente temporário por natureza, para que futuras solicitações
referentes aos dados sejam atendidas de modo mais rápido do que é
possível fazer ao acessar o local de armazenamento principal de dados. O
armazenamento em cache permite reutilizar com eficiência dados
recuperados ou computados anteriormente.

Os dados, em um cache, geralmente, são armazenados no hardware


de acesso rápido, como uma Memória de Acesso Aleatório (Random access
memory – RAM), e também podem ser usados em paralelo com um
componente de software. O principal objetivo de um cache é aumentar a
performance da recuperação de dados ao reduzir a necessidade de acessar
a camada subjacente mais lenta de armazenamento (disco).

A substituição de capacidade por velocidade geralmente faz com


que um cache armazene um subconjunto de dados de modo temporário, em

120
comparação com bancos de dados, cujos dados são, de modo geral,
completos e duráveis.

Devido às altas taxas de solicitação ou IOPS (operações de


entrada/saída por segundo), com suporte por mecanismos de RAM e em
memória, o armazenamento em cache resulta em um desempenho de
recuperação de dados otimizado, além de reduzir custos em grande escala.
Os caches podem ser aplicados e utilizados entre várias camadas de
tecnologia, como sistemas operacionais, camadas de redes, incluindo Redes
de Entrega de Conteúdo (CDN com Amazon CloudFront) e DNS, além de
aplicativos web e bancos de dados.

Amazon CloudFront é um serviço da web que acelera a distribuição


do conteúdo estático e dinâmico da web, como arquivos .html, .css, .js e
arquivos de imagem, para os usuários. O CloudFront distribui o conteúdo por
meio de uma rede global de datacenters denominados pontos de presença.
Quando um usuário solicita um conteúdo que você está disponibilizando
com o CloudFront, a solicitação é roteada para o ponto de presença que
fornece a menor latência (atraso), assim o conteúdo é entregue com a
melhor performance possível.

Você pode usar o cache para reduzir significativamente a latência e


melhorar as IOPS para muitas cargas de trabalho de aplicativos de leitura
intensa, como portais de perguntas e respostas, jogos, compartilhamento de
mídia e redes sociais. As informações armazenadas em cache podem incluir
os resultados de consultas de banco de dados, cálculos
computacionalmente intensivos, solicitações/respostas de APIs e artefatos
da web, como arquivos HTML, JavaScript e imagens.

As cargas de trabalho com alto consumo computacional que


trabalham com conjuntos de dados, como mecanismos de recomendação e
simulações computacionais de alta performance, também se beneficiam de
uma camada de dados de memória, atuando como um cache. Nesses

121
aplicativos, conjuntos de dados muito grandes devem ser acessados em
tempo real em clusters de máquinas que podem abranger centenas de nós.
Devido à velocidade do hardware subjacente, manipular esses dados em um
armazenamento baseado em disco é um gargalo significativo para esses
aplicativos.

Se o cache residir no mesmo nó que o aplicativo ou os sistemas que


o utilizam, o dimensionamento poderá afetar a integridade do cache. Ao
implementar uma camada de cache, é importante entender a validade dos
dados que estão sendo armazenados em cache. Um cache bem-sucedido
resulta em uma alta taxa de acertos. Isso significa que os dados estavam
presentes quando foram obtidos. Um erro de cache ocorre quando os dados
obtidos não estão presentes no cache.

Figura 44 – Arquitetura de referência do Amazon ElastiCache em alta


disponibilidade.

Fonte: https://docs.aws.amazon.com.

122
Figura 45 – Arquitetura de referência do Amazon ElastiCache acessando dados
em um banco de dados relacional (Amazon RDS), em um banco de dados não
relacional (Amazon DynamoDB) e objetos no Amazon S3.

Fonte: https://docs.aws.amazon.com.

O ElastiCache é a solução ideal para ambientes que exigem alta


performance e latência extremamente baixa, na casa dos microssegundos.
Escale com apenas alguns cliques para atender às necessidades das suas
aplicações. Reduza custos e elimine a sobrecarga operacional do cache
autogerenciado.

8.2. Memcached e Redis


O Amazon ElastiCache oferece suporte aos mecanismos de cache
Memcached e Redis. São dois mecanismos de cache em memória de código
aberto. Memcached (mem-cash-dee ou mem-cashed) é um sistema de
cache de memória distribuído de propósito geral. Redis (remote dictionary
server) é um armazenamento de estrutura de dados na memória, usado
como um banco de dados de chave-valor distribuído na memória.

Cluster Memcached e Cluster Redis


O bloco de construção básico do ElastiCache é o cluster. Ambos
trabalham em modo cluster. Um cluster é uma coleção de um ou mais nós
de cache, todos executando uma instância do software do mecanismo de

123
cache. Ao criar um cluster, especifique o mecanismo e a versão para que
todos os nós usem. A capacidade de computação e memória de uma
instância de um cluster é determinada de acordo com sua classe de
instância ou de nó.

Você pode selecionar o tipo de nó que melhor atenda às suas


necessidades. Se as suas necessidades mudarem com o passar do tempo,
você poderá alterar os tipos de nós do cluster. O armazenamento de nós de
cluster vem em dois tipos: padrão e otimizado para memória, que diferem
em características de performance e preço, permitindo que você adapte o
custo e a performance de armazenamento às suas necessidades. Cada
instância tem requisitos mínimos e máximos de armazenamento, de acordo
com o tipo de armazenamento. É importante ter armazenamento suficiente
para que seus clusters tenham espaço para se expandir.

Figura 46 – Arquitetura de referência de um cluster ElastiCache for Redis.

Fonte: https://docs.aws.amazon.com.

124
Figura 47 – Arquitetura de referência de um cluster ElastiCache for Memcached.

Fonte: https://docs.aws.amazon.com.

Comparação entre o Memcached e o Redis


Superficialmente, os mecanismos parecem semelhantes. Cada um
deles é um armazenamento de chaves/valores na memória. No entanto, na
prática, existem diferenças significativas.

Escolha o Memcached, se:

• Você precisa do modelo mais simples possível.

• Você precisa executar nós grandes com vários cores ou threads.

• Você precisa da capacidade de expandir e reduzir, adicionar e


remover nós à medida que a demanda no seu sistema aumenta e
diminui.

• Você precisa armazenar objetos em cache.

• Você precisa de recuperação automática de falhas de nós de cache.

125
Escolha o Redis, se:

• Você deseja ter a capacidade de classificar dados em níveis entre


memória e SSD usando o tipo de nó r6gd.

• Você deseja autenticar usuários com o controle de acesso baseado


em função.

• Você quer usar fluxos Redis, uma estrutura de dados de log que
permite aos produtores anexarem novos itens em tempo real.

• Oferece suporte à criptografia e à adição ou remoção de fragmentos


do cluster do Redis (modo cluster habilitado) de modo dinâmico.

• Você precisa dividir seus dados entre dois e 500 grupos de nós
(somente no modo de cluster).

• Você precisa de indexação geoespacial (modo de cluster ou modo


sem cluster).

• Você não precisa comportar vários bancos de dados.

• Você precisa de tipos de dados complexos, como strings, hashes,


listas, conjuntos, conjuntos classificados e bitmaps.

• Você precisa classificar ou organizar conjuntos de dados na


memória.

• Você precisa replicar seus dados do primário para uma ou mais


réplicas de leitura para aplicativos de leitura intensa.

• Você precisa de failover automático se o primário falhar.

• Você precisa de recursos de backup e restauração.

• Você precisa oferecer suporte para vários bancos de dados.

126
Uma função hash é um algoritmo para criptografia que mapeia dados
de comprimento variável para dados de comprimento fixo. Ocorre uma
transformação do dado (como um arquivo, senha ou informações) em um
conjunto alfanumérico com comprimento fixo de caracteres. Os valores
retornados por uma função hash são chamados valores hash, códigos hash,
somas hash (hash sums), checksums ou simplesmente hashes. Funções
hash aceleram consultas a tabelas ou bancos de dados por meio da detecção
de registros duplicados em um arquivo grande. A criptografia hash é
utilizada para resumir dados, verificar integridade de arquivos e garantir a
segurança de senhas dentro de um servidor.

Hoje em dia, podemos selecionar Memcached ou Redis em


diferentes cenários e casos de uso. O Memcached foi projetado para ser
simples, enquanto o Redis oferece um rico conjunto de recursos que o
tornam eficaz para uma ampla variedade de casos de uso. Ambos oferecem
um robusto mecanismo de cache usado entre o aplicativo e o banco de
dados. Verifique o que você precisa para o serviço de cache e escolha o mais
adequado para as suas necessidades e aplicações.

127
9
Capítulo 9. Amazon Keyspaces
9.1. O que é o Amazon Keyspaces?
O Amazon Keyspaces (for Apache Cassandra) é um serviço de banco
de dados compatível com Apache Cassandra, escalável, altamente
disponível e gerenciado. Com o Amazon Keyspaces, você não precisa
provisionar, corrigir ou gerenciar servidores e não precisa instalar, manter ou
operar software. É um produto sem servidor e você paga apenas pelos
recursos usados e o serviço dimensiona automaticamente a escala das
tabelas, para mais ou para menos, em resposta ao tráfego de aplicativos.

Você pode criar aplicativos que atendam a milhares de solicitações


por segundo, com taxa de transferência e armazenamento praticamente
ilimitados.

O Apache Cassandra é um banco de dados distribuído NoSQL de


código aberto confiável por milhares de empresas para escalabilidade e alta
disponibilidade sem comprometer o desempenho. A escalabilidade linear e
a tolerância a falhas, comprovada em hardware comum ou infraestrutura em
nuvem, o tornam a plataforma perfeita para dados de missão crítica.

Os dados são criptografados por padrão no Amazon Keyspaces.


Permite que você faça backup dos dados de sua tabela continuamente,
usando a recuperação point-in-time. O Amazon Keyspaces facilita a
migração, a execução e a escala de cargas de trabalho do Cassandra na
nuvem da AWS. Com apenas alguns cliques via AWS Management Console
ou algumas linhas de código no AWS CLI, você pode criar espaços de chave
e tabelas no Amazon Keyspaces, sem implantar nenhuma infraestrutura ou
instalar software.

129
Com o Amazon Keyspaces, você pode executar suas cargas de
trabalho existentes do Cassandra na AWS usando o mesmo código de
aplicativo Cassandra e ferramentas de desenvolvedor que você usa hoje.

Alguns casos de uso:

• Aplicativos que exigem baixa latência: processe dados em altas


velocidades para aplicações que exigem latência de um único dígito
milissegundo, como manutenção de equipamentos industriais,
monitoramento comercial, gerenciamento de frota e otimização de
rotas.

• Crie aplicativos usando tecnologias de código aberto: pelo uso de


APIs e drivers do Cassandra de código aberto, disponíveis para uma
ampla variedade de linguagens de programação, como Java, Python,
Ruby, Microsoft .NET, Node.js, PHP, C++, Perl e Go.

• Mova suas cargas de trabalho Cassandra para a nuvem: pode ser


demorado e caro você mesmo gerenciar uma infraestrutura local do
Cassandra. Com o Amazon Keyspaces, é possível configurar,
proteger e dimensionar tabelas Cassandra na nuvem da AWS sem
gerenciar a infraestrutura.

Figura 48 – Arquitetura de referência do Amazon Keyspaces.

Fonte: https://docs.aws.amazon.com.

O Amazon Keyspaces é mais uma dentre as várias robustas soluções


de bancos de dados NoSQL na nuvem da AWS. Possui vários benefícios e
não requer administração de servidores, pois é um serviço totalmente

130
gerenciado. É um serviço que oferece desempenho em escala, segurança,
alta disponibilidade, proteção contra falhas e perda de dados.

9.2. Principais recursos e componentes


O Apache Cassandra tradicional é implantado em um cluster
composto por um ou mais nós. Você é responsável por gerenciar cada nó e
adicionar e remover nós à medida que o cluster é dimensionado. Um
programa cliente acessa o Cassandra conectando-se a um dos nós e
emitindo instruções CQL (Cassandra Query Language). O CQL é semelhante
ao SQL, a linguagem popular usada em bancos de dados relacionais. O
Amazon Keyspaces é compatível com a API CQL.

Mesmo que o Cassandra não seja um banco de dados relacional, o


CQL fornece uma interface familiar para consultar e manipular dados em
Cassandra. O diagrama a seguir mostra um cluster Apache Cassandra
simples, local, composto por quatro nós.

Uma implantação de produção do Cassandra pode consistir em


centenas de nós sendo executados em centenas de computadores físicos,
em um ou mais data centers físicos. Isso pode causar um fardo operacional
para os desenvolvedores de aplicativos que precisam provisionar, corrigir e
gerenciar servidores, além de instalar, manter e operar os softwares. Com o
Amazon Keyspaces, você não precisa provisionar, corrigir ou gerenciar
servidores, para que você possa se concentrar na criação de aplicativos
melhores.

131
Figura 49 – Diagrama de um cluster Apache Cassandra.

Fonte: https://docs.aws.amazon.com.

O Amazon Keyspaces oferece dois modos de capacidade de


throughput (taxa de transferência) para leituras e gravações: sob demanda
e provisionado. Você pode escolher o modo de capacidade de throughput da
tabela para otimizar o preço de leituras e gravações, com base na
previsibilidade e na variabilidade de sua carga de trabalho. Com o modo sob
demanda, você paga apenas pelas leituras e gravações que o aplicativo
realmente executa.

Você não precisa especificar a capacidade de transferência da tabela


com antecedência. O Amazon Keyspaces acomoda o tráfego de aplicativos
quase instantaneamente à medida que ele aumenta ou diminui, tornando-o
uma boa opção para aplicativos com tráfego imprevisível. O modo de
capacidade provisionada ajuda a otimizar o preço da taxa de transferência,
se você tiver tráfego de aplicativos previsível e puder prever os requisitos de
capacidade da tabela com antecedência.

Com o modo de capacidade provisionada, você especifica o número


de leituras e gravações por segundo que espera que o aplicativo execute.
Você pode aumentar e diminuir a capacidade provisionada para sua tabela
automaticamente, ativando o recurso de escalabilidade automática. Você
pode alterar o modo de capacidade da sua tabela uma vez por dia na medida

132
em que aprende mais sobre os padrões de tráfego da sua carga de trabalho,
ou se você espera ter uma grande intermitência de tráfego, como, por
exemplo, de um grande evento que você prevê que gerará muito tráfego de
tabela.

O Amazon Keyspaces armazena três cópias dos dados em várias


zonas de disponibilidade para durabilidade e alta disponibilidade. Além
disso, você aproveita um datacenter (AWS) e uma arquitetura de rede
criados para atender aos requisitos das empresas com as maiores exigências
de segurança. A criptografia em repouso (criptografia dos dados em disco) é
ativada automaticamente quando você cria uma nova tabela do Amazon
Keyspaces e todas as conexões do cliente exigem Transport Layer Security
(TLS). Um programa cliente acessa o Amazon Keyspaces conectando-se a
um endpoint predeterminado (nome do host e número da porta) emitindo
instruções CQL.

Figura 50 – Arquitetura de referência do Amazon Keyspaces na AWS.

Fonte: https://docs.aws.amazon.com.

A forma como você modela seus dados para seu business case é
fundamental para alcançar o desempenho ideal do Amazon Keyspaces, uma
vez que um modelo de dados ruim pode prejudicar significativamente o
desempenho. A Recuperação Point-in-time (Point-In-Time Recovery – PITR)
ajuda a proteger as tabelas do Amazon Keyspaces contra operações

133
acidentais de gravação ou exclusão, fornecendo backups contínuos dos
dados da tabela com retenção de até 35 dias. Você pode restaurar uma
tabela do Amazon Keyspaces para um ponto no tempo usando a console ou
Cassandra Query Language (CQL).

O Amazon Keyspaces é mais uma dentre as várias robustas soluções


de bancos de dados NoSQL na nuvem da AWS. Possui vários recursos,
componente, benefícios e não requer administração de servidores, pois é um
serviço totalmente gerenciado. É um serviço que oferece desempenho em
escala, segurança, alta disponibilidade, proteção contra falhas e perda de
dados.

134
10
Capítulo 10. Amazon Neptune
10.1. O que é o Amazon Neptune?
O Amazon Neptune é um serviço de banco de dados de grafos, rápido
e confiável, totalmente gerenciado, que facilita a criação e a execução de
aplicativos que trabalham com conjuntos de dados altamente conectados.
O núcleo do Neptune é um mecanismo de banco de dados de grafos com
projeto específico e alta performance. Esse mecanismo é otimizado para
armazenar bilhões de relacionamentos e consultar grafos com latência de
milissegundos.

O Neptune oferece suporte a linguagens comuns de consulta a


grafos, como Apache TinkerPop Gremlin e SPARQL da W3C. Isso lhe permite
que criar consultas que naveguem com eficiência em conjuntos de dados
altamente conectados. Bancos de dados de grafos são otimizados para
armazenar e consultar as relações entre itens de dados. Eles armazenam os
próprios itens de dados como vértices do grafo e os relacionamentos entre
eles como arestas.

Os grafos podem representar as inter-relações de entidades do


mundo real de várias maneiras, em termos de ações, propriedade, escolhas
de compra, conexões pessoais, laços familiares e assim por diante. Por um
lado, é “fácil” modelar interconexões de dados como um grafo e, em seguida,
escrever consultas complexas que extraem informações do mundo real do
grafo. A criação de um aplicativo equivalente usando um banco de dados
relacional exige que você crie muitas tabelas com várias chaves estrangeiras
e, em seguida, escreva consultas SQL aninhadas e uniões complexas.

No grafo, cada aresta tem um tipo e é direcionada de um vértice (o


início) para outro (o fim). Os relacionamentos podem ser chamados de

136
predicados e também de arestas, e os vértices também são chamados de
nós. Nos chamados grafos de propriedades, vértices e arestas também
podem ter propriedades adicionais associadas a eles.

Dois exemplos de grafos representando amigos e hobbies em uma


rede social. As arestas são mostradas como setas nomeadas, e os vértices
representam pessoas e hobbies específicos que eles conectam. Uma
simples travessia deste grafo pode dizer o que os amigos de uma
determinada pessoa gostam, usam ou jogam.

Figura 51 – Exemplo de grafos.

Fonte: https://docs.aws.amazon.com.

Figura 52 – Exemplo de grafos.

Fonte: https://docs.aws.amazon.com.

É possível fazer recomendações de produtos a um usuário com base


em quais produtos são comprados por outras pessoas, que seguem o mesmo
esporte e têm histórico de compras semelhante.

137
Figura 53 – Exemplo de grafos.

Fonte: https://docs.aws.amazon.com.

Alguns casos de uso:

• Grafos de conhecimento.

• Grafos de identidade.

• Grafos de fraude.

• Redes sociais.

• Instruções de condução.

• Logística.

• Pesquisa científica.

• Regras regulatórias.

• Topologia e eventos de rede.

O Amazon Neptune é uma solução de bancos de dados de grafos


bem específica. Possui vários benefícios e não requer administração de
servidores pois é um serviço totalmente gerenciado. É um serviço que
oferece desempenho em escala, segurança, alta disponibilidade, proteção
contra falhas e perda de dados. Sempre que conexões ou relações entre
entidades estiverem no centro dos dados que você está tentando modelar,
um banco de dados de grafos é sua escolha natural.

138
10.2. Principais recursos e componentes
Principais recursos e componentes do Amazon Neptune
O Neptune é altamente disponível, com réplicas de leitura,
recuperação point-in-time, backup contínuo para o Amazon S3 e replicação
entre zonas de disponibilidade. Neptune fornece recursos de segurança de
dados, com suporte à criptografia em repouso e em trânsito. O Neptune é
totalmente gerenciado, portanto você não precisa mais se preocupar com
tarefas de gerenciamento de banco de dados, como provisionamento de
hardware, aplicação de patches no software, instalação, configuração ou
backups.

Podemos citar três principais componentes:

• Instância primária de banco — oferece suporte a operações de


leitura e gravação e executa todas as modificações de dados no
volume do cluster. Cada cluster de banco de dados do Neptune tem
uma instância de banco de dados principal responsável por gravar
(ou seja, carregar ou modificar) conteúdo do banco de dados de
grafos.

• Réplica do Neptune — conecta-se ao mesmo volume de


armazenamento da instância de banco de dados primária e só
oferece suporte a operações de leitura. Cada cluster de banco de
dados do Neptune pode ter até 15 réplicas do Neptune, além da
instância de banco de dados principal. Isso fornece alta
disponibilidade ao localizar réplicas do Neptune em zonas de
disponibilidade separadas e carga de distribuição dos clientes de
leitura.

• Volume do cluster — os dados do Neptune são armazenados no


volume do cluster, que é projetado para confiabilidade e alta

139
disponibilidade. Um volume de cluster consiste em cópias dos dados
em várias zonas de disponibilidade em uma única região da AWS.
Como os dados são replicados automaticamente nas zonas de
disponibilidade, eles são resilientes.

Figura 54 – Arquitetura de referência do Amazon Neptune.

Fonte: https://docs.aws.amazon.com.

O Neptune fornece vários níveis de segurança para o banco de


dados. Os recursos de segurança incluem isolamento de rede usando
Amazon VPC e criptografia em repouso usando chaves que você cria e
controla por meio do AWS Key Management Service (AWS KMS). Em uma
instância criptografada do Neptune, os dados do armazenamento
subjacente são criptografados, bem como os backups, as réplicas e os
snapshots automatizados no mesmo cluster.

É um serviço totalmente gerenciado, não sendo necessário


preocupar-se com tarefas de gerenciamento de banco de dados, como
provisionamento de hardware, aplicação de patches em software, instalação,

140
configuração ou backups. Você pode usar o Neptune para criar aplicativos
sofisticados, aplicativos de grafos interativos que podem consultar bilhões
de relacionamentos em milissegundos. O Neptune foi criado para oferecer
disponibilidade superior a 99,99%.

Ele aumenta o desempenho e a disponibilidade do banco de dados


integrando totalmente o mecanismo de banco de dados com uma camada
de armazenamento virtualizada com SSD criada especificamente para
cargas de trabalho de banco de dados. O armazenamento do Neptune
oferece tolerância a falhas e recuperação automática. As falhas de disco são
corrigidas em segundo plano, sem perda de disponibilidade do banco de
dados.

O Neptune detecta falhas no banco de dados e reinicia


automaticamente sem necessidade de recuperação de pane ou de recriar o
cache do banco de dados. Se a instância inteira falhar, o Neptune executará
um failover automaticamente em uma das 15 réplicas de leitura, sem perder
dados, com apenas uma breve interrupção do serviço. Um cluster de banco
de dados do Neptune é tolerante a falhas por padrão. Você pode personalizar
a ordem (0 a 15) na qual as réplicas do Neptune são promovidas à instância
primária após uma falha, atribuindo uma prioridade a cada réplica.

O Neptune faz backup do volume de cluster automaticamente e


mantém dados retidos por 1 a 35 dias. Os backups do Neptune são contínuos
e incrementais para que você possa restaurar rapidamente de qualquer
ponto dentro do período de retenção de backup. Quando os dados do backup
estão sendo gravados, não há nenhum impacto ao desempenho ou
interrupção de serviço do banco de dados.

Se você excluir um cluster de banco de dados, todos os backups


automatizados serão excluídos ao mesmo tempo e não poderão ser
recuperados. Isso significa que, a menos que você opte por criar um

141
snapshot de banco de dados final manualmente, não poderá restaurar a
instância de banco de dados para seu estado final posteriormente. Os
snapshots manuais não são excluídos quando o cluster é excluído.

Para os clusters de banco de dados do Amazon Neptune, o período


de retenção de backup padrão é de um dia, independentemente de como o
cluster de banco de dados é criado. Você não pode desativar backups
automatizados no Neptune.

Diretrizes operacionais, melhores práticas


Compreenda as instâncias de banco de dados Neptune para que
você possa dimensioná-las adequadamente para seus requisitos de
desempenho e caso de uso. Monitore o uso que você faz da CPU e da
memória. Ative os backups automáticos e defina a janela de backup para que
ela ocorra em um momento conveniente. Teste o failover da instância do
banco de dados para entender quanto tempo o processo leva para seu caso
de uso.

Se possível, execute o cliente e o cluster Neptune na mesma região


e VPC. Ao criar uma instância de réplica de leitura, ela deve ser pelo menos
tão grande quanto a instância de gravação principal (master). Antes de
atualizar para uma nova versão do mecanismo principal, não se esqueça de
testar seu aplicativo nele antes de atualizar. Para facilitar os failovers, é ideal
que todas as instâncias tenham o mesmo tamanho.

O Amazon Neptune é uma solução de bancos de dados de grafos


bem específica. Possui vários benefícios e não requer administração de
servidores, pois é um serviço totalmente gerenciado. Além disso, oferece
desempenho em escala, segurança, alta disponibilidade e proteção contra
falhas e perda de dados.

142
11
Capítulo 11. Amazon Quantum Ledger Database (QLDB)
11.1. O que é o Amazon Quantum Ledger Database (QLDB)?
O Quantum Ledger Database (QLDB) é um banco de dados NoSQL
(Semi-SQL e Semi-NoSQL) que fornece um log de transações imutável,
transparente e verificável criptograficamente pertencente a uma autoridade
central. Por ser um banco de dados NoSQL, ele tem a capacidade de
armazenar muitos dados semiestruturados usando um modelo de dados
orientado a documentos. Além disso, ele usa SQL como estrutura de dados
(tabelas e linhas) e uma linguagem chamada PartiQL.

O Amazon QLDB rastreia todas as alterações de dados de aplicativos


e mantém um histórico completo e verificável de alterações ao longo do
tempo. Normalmente é usado para registrar um histórico de atividades
econômicas e financeiras em uma organização. Muitas organizações criam
aplicativos com funcionalidade semelhante ao legder, porque querem
manter um histórico preciso dos dados de seus aplicativos.

Por exemplo, você pode querer rastrear o histórico de créditos e


débitos em transações bancárias, verificar a cadeia de dados de uma
reivindicação de seguro ou rastrear a movimentação de um item em uma
rede de cadeia de suprimentos. Os aplicativos geralmente são
implementados usando tabelas de auditoria personalizadas ou trilhas de
auditoria criadas em bancos de dados relacionais.

O Amazon QLDB é uma nova classe de banco de dados que ajuda a


eliminar a necessidade de se envolver no complexo esforço de
desenvolvimento de criar seus próprios aplicativos semelhantes a um
ladger.

144
Com o QLDB, o histórico de alterações em seus dados é imutável —
ele não pode ser alterado, atualizado ou excluído. Usando criptografia, você
pode verificar facilmente se não houve alterações não intencionais nos
dados do aplicativo. O QLDB usa um log transacional imutável, também
conhecido como diário. O diário é “append-only” (permite somente escrita
incremental) e é composto por um conjunto de blocos sequenciados e
encadeados por hash, que contêm seus dados confirmados.

Casos de uso:

• Instituições financeiras (pagamentos entre participantes).

• Cadeia de suprimentos (transacionar com fornecedores e


distribuidores).

• Varejo (programas de recompensa com parceiros).

• Planos de saúde (dados de pacientes).

Figura 55 – Arquitetura de referência do Amazon Quantum Ledger Database


(QLDB).

Fonte: https://docs.aws.amazon.com.

145
Se você já está familiarizado com o blockchain, pode concluir por
definição que o QLDB está um pouco relacionado a ele. O QLDB oferece
todos os principais recursos de um banco de dados blockchain, incluindo
imutabilidade, transparência e log de transações criptograficamente
verificável. No entanto, há a diferença mais importante entre QLDB e o
blockchain: o QLDB é um legder centralizado, enquanto blockchain é um
ledger distribuído.

Blockchain, também conhecido como “o protocolo da confiança”, é


uma tecnologia de registro distribuído que visa à descentralização como
medida de segurança. É um sistema de registro de informações de uma
maneira que torna difícil ou impossível alterar, hackear ou enganar o
sistema. São bases de registros e dados distribuídos e compartilhados que
têm a função de criar um índice global para todas as transações que ocorrem
em um determinado mercado. Funciona como um livro-razão (ledger), só que
de forma pública, compartilhada e universal, que cria consenso e confiança
na comunicação direta entre duas partes, ou seja, sem o intermédio de
terceiros.

Um blockchain é essencialmente um livro digital (ledger) de


transações que é duplicado e distribuído em toda a rede de sistemas de
computador no blockchain. Cada bloco na cadeia contém um número de
transações, e toda vez que uma nova transação ocorre no blockchain, um
registro dessa transação é adicionado ao livro-razão (ladger) de cada
participante. O banco de dados descentralizado gerenciado por vários
participantes é conhecido como Distributed Ledger Technology (DLT).

146
Figura 56 – Diagrama de apoio para a escolha do banco de dados.

Fonte: https://docs.aws.amazon.com.

O Amazon Quantum Ledger Database (QLDB) se encaixa


perfeitamente em aplicativos que precisam de um banco de dados ledger
centralizado e escalável, onde ele precisa registrar todo o histórico de
transações ao longo do tempo com segurança criptográfica adicional.

11.2. O que é o Amazon Quantum Ledger Database (QLDB)?


Resiliência do Amazon Quantum Ledger Database (QLDB)
O Armazenamento do Diário (journal, log) do QLDB tem replicação
síncrona para várias zonas de disponibilidade com confirmações de
transação. Isso garante que mesmo uma falha total da zona de
disponibilidade do armazenamento do diário não comprometa a integridade
dos dados ou a capacidade de manter um serviço ativo. Além disso, o diário
do QLDB apresenta arquivos assíncronos para armazenamento tolerante a
falhas. Esse recurso oferece suporte à recuperação de desastres no caso

147
altamente improvável de falha simultânea de armazenamento para várias
zonas de disponibilidade.

O QLDB fornece um recurso de exportação de diário sob demanda


que é armazenado Amazon Simple Storage Service (Amazon S3). Neste
momento, não há suporte para a restauração automatizada para
exportações. A exportação fornece uma capacidade básica de criar
redundância de dados adicional na frequência definida. No entanto, um
cenário de restauração depende do aplicativo, onde os registros exportados
são presumivelmente gravados de volta em um novo ladger, aproveitando o
mesmo método de ingestão ou semelhante.

O QLDB foi projetado para ser resiliente contra corrupção lógica. O


diário (journal, log) do QLDB é imutável, garantindo que todas as transações
confirmadas sejam persistidas no diário (journal, log).

Auditores terceiros avaliam a segurança e a conformidade do


Amazon QLDB como parte de vários programas AWS de conformidade, tais
como:

• SOC: System and Organization Controls.

• PCI: Payment Card Industry.

• ISO: International Organization for Standardization.

• HIPAA: Health Insurance Portability and Accountability Act.

• ISMAP: Information System Security Management and Assessment


Program.

Segurança do Amazon Quantum Ledger Database (QLDB)


A segurança é uma responsabilidade compartilhada entre a AWS e
você.

148
Segurança da nuvem: a AWS é responsável pela proteção da
infraestrutura que executa produtos da AWS na Nuvem AWS.

Segurança na nuvem: sua responsabilidade inclui fazer uso de


criptografia (em trânsito e em repouso), implementar duplo fator de
autenticação (MFA), usar senhas fortes, não compartilhar usuários,
gerenciar identidade de acesso, controlar o acesso e permissões aos bancos
de dados, configurar o registro em log das atividades de API,
monitoramento, backup, validação de conformidade e isolamento de rede.

O Amazon Quantum Ledger Database (QLDB) se encaixa


perfeitamente para aplicativos que precisam de um banco de dados ledger
centralizado e escalável, onde ele precisa registrar todo o histórico de
transações ao longo do tempo com segurança criptográfica adicional.

149
12
Capítulo 12. Amazon Timestream
12.1. O que é o Amazon Timestream?
O Amazon Timestream é um banco de dados de séries temporais
rápido, escalável, totalmente gerenciado e desenvolvido especificamente
para facilitar o armazenamento e a análise de trilhões de pontos de dados
de séries temporais por dia.

O Timestream economiza tempo e custo no gerenciamento do ciclo


de vida dos dados de séries temporais, mantendo os dados recentes na
memória e movendo os dados históricos para uma camada de
armazenamento com custo otimizado com base nas políticas definidas pelo
usuário.

O mecanismo de consulta específico do Timestream permite acessar


e analisar dados recentes e históricos juntos, sem precisar especificar sua
localização. O Amazon Timestream possui funções analíticas de séries
temporais integradas, ajudando você a identificar tendências e padrões em
seus dados quase em tempo real. O Amazon Timestream não tem servidor
(servless) e aumenta ou diminui automaticamente para ajustar a capacidade
e o desempenho. Como você não precisa gerenciar a infraestrutura
subjacente, pode se concentrar em otimizar e criar seus aplicativos.

O Timestream também se integra a serviços comumente usados


para coleta de dados, visualização e machine learning. Você pode enviar
dados para o Amazon Timestream usando AWS IoT Core, Amazon Kinesis,
Amazon MSK e Telegraf de código aberto. Você pode visualizar dados
usando Amazon QuickSight, Grafana e ferramentas de business intelligence
por meio do JDBC (driver de comunicação). Você também pode usar o
Amazon SageMaker com o Timestream para machine learning.

151
Casos de uso:

• Métricas de monitoramento para melhorar o desempenho e a


disponibilidade de seus aplicativos.

• Armazenamento e análise de telemetria industrial para agilizar a


gestão e manutenção de equipamentos.

• Acompanhamento da interação do usuário com um aplicativo ao


longo do tempo.

• Armazenamento e análise de dados do sensor IoT.

Dados de séries temporais são uma sequência de pontos de dados


registrados em um intervalo de tempo. Este tipo de dados é usado para
medir eventos que mudam ao longo do tempo. São alguns exemplos de
dados de series temporais: preços das ações ao longo do tempo, medições
de temperatura ao longo do tempo e utilização da CPU de uma instância do
EC2 ao longo do tempo.

Com dados de série temporal, cada ponto de dados consiste em um


carimbo (timestamp) de data/hora, um ou mais atributos e o evento que
muda ao longo do tempo. Esses dados podem ser usados para obter insights
(ideias) sobre o desempenho e a integridade de um aplicativo, detectar
anomalias e identificar oportunidades de otimização. Por exemplo, os
engenheiros de DevOps podem querer visualizar dados que medem as
mudanças nas métricas de desempenho da infraestrutura.

O carimbo (timestamp) de data/hora é a parte de uma mensagem de


log que marca a hora em que um evento ocorreu. Durante a ingestão dos
dados, podemos detectar o carimbo de data/hora da mensagem, convertê-lo
para o tempo de época (o número de milissegundos desde a meia-noite de
1º de janeiro de 1970 UTC) e indexá-lo. O carimbo de data/hora é analisado

152
usando as configurações de análise de carimbo de data/hora padrão ou um
formato personalizado que você especifica, incluindo o fuso horário.

Os fabricantes podem querer rastrear os dados do sensor de IoT, que


medem as mudanças nos equipamentos em uma instalação. Os
profissionais de marketing on-line podem analisar dados de fluxo de cliques
que capturam informações sobre como um usuário navega em um site ao
longo do tempo. Como os dados de séries temporais são gerados a partir de
várias fontes em volumes extremamente altos, eles precisam ser coletados
de maneira econômica quase em tempo real e, portanto, requerem
armazenamento eficiente que ajude a organizar e analisar os dados.

Conceitos chaves do Amazon Timestream:

• Série temporal: uma sequência de um ou mais pontos de dados (ou


registros) registrados em um intervalo de tempo.

• Registro: um único ponto de dados em uma série temporal.

• Dimensão: um atributo que descreve os metadados de uma série


temporal.

• Medida: o valor real que está sendo medido pelo registro.

• Carimbo de data e hora (Timestamp): indica quando uma medida foi


coletada para um determinado registro.

• Tabela: um contêiner para um conjunto de séries temporais


relacionadas.

• Banco de dados: um contêiner de nível superior para tabelas.

153
Figura 57 – Conceitos chaves do Amazon Timestream.

Fonte: https://docs.aws.amazon.com.

Um banco de dados contém 0 ou mais tabelas. Cada tabela contém


0 ou mais séries temporais. Cada série temporal consiste em uma sequência
de registros em um determinado intervalo de tempo em uma granularidade
especificada. Cada série temporal pode ser descrita usando seus metadados
ou dimensões, seus dados ou medidas e seus 154imestamp.

154
Figura 58 – Arquitetura de referência do Amazon Timestream.

Fonte: https://docs.aws.amazon.com.

O Amazon Timestream é a solução de banco de dados criada


especificamente para dados de séries temporais. É uma solução rápida,
segura, escalável e sem servidor para aplicações operacionais e IoT.
Proporciona acesso simplificado aos dados e gerencia o ciclo de vida dos
dados.

12.2. Principais benefícios, melhores práticas e segurança


Principais benefícios do Amazon Timestream
Sem servidor (serverless) com dimensionamento automático: não
há servidores para gerenciar nem capacidade para provisionar. Conforme as
necessidades de seu aplicativo mudam, o Timestream é dimensionado
automaticamente para ajustar a capacidade.

155
Durabilidade: garante a durabilidade de seus dados ao replicar
automaticamente seus dados de memória e armazenamento magnético em
diferentes zonas de disponibilidade, em uma única região da AWS. Todos os
seus dados são gravados no disco antes de confirmar que sua solicitação de
gravação foi concluída.

Arquitetura Serverless, ou “Computação Sem Servidores”, é uma


arquitetura de computação orientada a eventos. Sua principal proposta é
permitir que as empresas de software criem e mantenham seus aplicativos
web sem se preocupar com a infraestrutura em que esses aplicativos estão
rodando.

Gerenciamento do ciclo de vida dos dados: simplifica o complexo


processo de gerenciamento do ciclo de vida dos dados, oferecendo camadas
de armazenamento, com um armazenamento de memória para dados
recentes e um armazenamento magnético para dados históricos. O Amazon
Timestream automatiza a transferência de dados do armazenamento de
memória para o armazenamento magnético, com base em políticas
configuráveis pelo usuário.

Acesso simplificado a dados: você não precisa mais usar


ferramentas diferentes para acessar dados recentes e históricos. O
mecanismo de consulta específico do Amazon Timestream acessa e
combina dados de forma transparente em todas as camadas de
armazenamento sem que você precise especificar o local dos dados.

Criado especificamente para séries temporais: você pode analisar


rapidamente dados de séries temporais usando SQL, com funções de séries
temporais integradas para suavização, aproximação e interpolação. O fluxo
de tempo também oferece suporte a agregações avançadas, funções de
janela e tipos de dados complexos, como matrizes e linhas.

156
Sempre criptografado: garante que seus dados de séries temporais
sejam sempre criptografados, seja em repouso ou em trânsito. O Amazon
Timestream também permite especificar uma chave gerenciada pelo cliente
(CMK) do AWS KMS para criptografar dados no armazenamento magnético.

Alta disponibilidade: garante alta disponibilidade de suas


solicitações de gravação e leitura ao replicar dados automaticamente e
alocar recursos em pelo menos três zonas de disponibilidade diferentes em
uma única região da AWS.

Melhores práticas para o Amazon Timestream


Ao executar aplicativos de prova de conceito, considere a quantidade
de dados que seu aplicativo acumulará ao longo de alguns meses ou anos
ao avaliar o desempenho e a escala do Timestream. À medida que seus dados
crescem ao longo do tempo, você notará que o desempenho do Timestream
permanece praticamente inalterado, porque sua arquitetura sem servidor
pode aproveitar grandes quantidades de paralelismo para processar grandes
volumes de dados e dimensionar automaticamente para atender às
necessidades de seu aplicativo.

Considere as questões para a modelagem de dados, segurança,


configurações, especialmente para retenção de dados, ingestão de dados,
consultas, aplicativos clientes, integrações suportadas e outros (AWS Well-
Architected Framework).

O AWS Well-Architected Framework ajuda arquitetos de nuvem a


construir infraestruturas seguras, resilientes, eficientes e de alta
performance para aplicações e workloads. Baseado em cinco pilares
(excelência operacional, segurança, confiabilidade, eficiência de
performance e otimização de custos), o AWS Well-Architected fornece uma
abordagem consistente para que clientes e parceiros avaliem arquiteturas e
implementem designs que podem se expandir com o tempo.

157
Segurança para o Amazon Timestream
A segurança é uma responsabilidade compartilhada entre a AWS e
você, a saber:

Segurança da nuvem: a AWS é responsável pela proteção da


infraestrutura que executa produtos da AWS na Nuvem AWS.

Segurança na nuvem: sua responsabilidade inclui fazer uso de


criptografia (em trânsito e em repouso), implementar duplo fator de
autenticação (MFA), usar SSL/TLS para comunicação com os recursos, usar
senhas fortes, não compartilhar usuários, gerenciar identidade de acesso,
controlar o acesso e permissões aos bancos de dados, configurar o registro
em log das atividades de API, monitoramento, backup, validação de
conformidade e isolamento de rede.

O Amazon Timestream é a solução de banco de dados criada


especificamente para dados de séries temporais. Importante que você
conheça suas principais funcionalidades e recursos, de modo a aproveitar
todo o potencial que o Amazon Timestream pode agregar às aplicações que
você desenvolve.

158
13
Capítulo 13. Amazon OpenSearch Service
13.1. O que é o Amazon OpenSearch Service?
O Amazon OpenSearch Service, o sucessor do Amazon Elasticsearch
Service, é um serviço gerenciado que facilita a implantação, a operação e o
dimensionamento de clusters do OpenSearch na nuvem da AWS. O
OpenSearch é um conhecido mecanismo de pesquisa e análise com código
totalmente aberto para casos de uso, como monitoramento, análise de logs,
monitoramento de aplicações em tempo real e análise de fluxos de cliques.
O OpenSearch Service (AWS) oferece suporte ao OpenSearch (on-premises)
e ao antigo Elasticsearch OSS (on-premises, versão mais antiga).

O OpenSearch fornece um sistema altamente escalável para


fornecer acesso rápido e resposta a grandes volumes de dados com uma
ferramenta de visualização integrada, o OpenSearch Dashboards, que
facilita a exploração de dados pelos usuários. Para começar a usar o
OpenSearch Service, é necessário criar um cluster do OpenSearch Service.
Cada instância do EC2 no cluster atua como um nó do OpenSearch Service.

O OpenSearch Service fornece todos os recursos para seu cluster e


o inicia. Ao criar um cluster, você tem a opção de escolher qual mecanismo
de pesquisa deseja usar. O cluster detecta e substitui automaticamente os
nós do OpenSearch Service que apresentam falhas. Você pode dimensionar
seu cluster com uma única chamada de API ou alguns cliques no console.

Você pode usar o console do OpenSearch Service para definir e


configurar um domínio. Domínios são clusters com configurações, tipos de
instância, contagens de instâncias e recursos de armazenamento
especificados por você. O OpenSearch Service normalmente é usado com os

160
seguintes serviços: CloudWatch, CloudTrail, Kinesis, S3, IAM, Lambda,
DynamoDB, QuickSight, entre outros.

Figura 59 – Exemplo de um dashboard. Aplicação fazendo chamadas ao banco de


dados e retornando informações para o usuário.

Fonte: https://docs.aws.amazon.com.

Figura 60 – Arquitetura de referência do Amazon OpenSearch.

Fonte: https://docs.aws.amazon.com.

161
1. Domínio do OpenSearch Service.

2. Servidor proxy.

3. Aplicações diversas.

4. Clientes do OpenSearch Dashboard.

O Amazon OpenSearch Service, em resumo, é um robusto


mecanismo de busca, altamente escalável, resiliente, rápido e seguro.
Permite ingerir, proteger, pesquisar, agregar, visualizar e analisar dados
facilmente. Facilita a execução de análises de log interativas,
monitoramento de aplicativos em tempo real, pesquisa de sites e muito
mais.

13.2. Principais recursos, componentes e práticas recomendadas


Possui várias configurações de CPU, memória e capacidade de
armazenamento conhecidas como tipos de instância, incluindo instâncias
do tipo Graviton mais econômicas. Até 3 PB de armazenamento vinculado.
Armazenamento do tipo UltraWarm que oferece uma maneira econômica de
armazenar grandes quantidades de dados somente leitura. O

O UltraWarm oferece uma maneira econômica de armazenar


grandes quantidades de dados somente leitura no Amazon OpenSearch
Service. Os nós de dados padrão usam o armazenamento de atividade muito
alta, o qual assume a forma de armazenamentos de instâncias ou volumes
do Amazon EBS anexados a cada nó. O armazenamento de atividade muito
alta fornece a performance mais rápida possível para indexar e pesquisar
novos dados.

Em vez do armazenamento vinculado, os nós do UltraWarm usam o


Amazon S3 e uma solução de armazenamento em cache sofisticada para
melhorar a performance. Para os índices nos quais você não está gravando

162
ativamente, consulta com menos frequência e para os quais não precisa da
mesma performance, o UltraWarm oferece custos significativamente mais
baixos por GB de dados. Como os índices de alta atividade são somente
leitura, a menos que você os retorne ao armazenamento de atividade muito
alta, o UltraWarm é o mais adequado para dados imutáveis, como logs.

Possui controle de acesso por meio de uso do AWS Identity and


Access Management (IAM). Tem integração fácil à Amazon VPC e aos grupos
de segurança da VPC. Uso de criptografia de dados em repouso (dados
armazenados nos discos) e a criptografia de nó a nó. Autenticação do
Amazon Cognito, HTTP básica ou SAML para OpenSearch Dashboards.
Segurança no nível do índice, no nível do documento e no nível do campo.
Logs de auditoria.

SAML (Security Assertion Markup Language) é um padrão aberto


para troca de dados de autenticação e autorização entre as partes, em
particular, entre um provedor de identidade e um provedor de serviços. SAML
é uma linguagem de marcação baseada em XML para declarações de
segurança (declarações que os provedores de serviços usam para tomar
decisões de controle de acesso).

O Amazon Cognito fornece autenticação, autorização e


gerenciamento de usuários para suas aplicações Web e móveis. Seus
usuários podem fazer login diretamente com um nome de usuário e uma
senha, ou por meio de terceiros, como o Facebook, a Amazon, o Google ou a
Apple.

Os dois componentes principais do Amazon Cognito são os grupos


de usuários e os grupos de identidades. Os grupos de usuários são diretórios
de usuários que fornecem opções de cadastro e login para os usuários do
seu aplicativo. Os grupos de identidade lhe permitem conceder aos usuários

163
acesso a outros serviços da AWS. Você pode usar grupos de identidades e
grupos de usuários separadamente ou em conjunto.

Há vários locais geográficos para os recursos, conhecidos como


regiões e zonas de disponibilidade. A alocação de nós em duas ou três zonas
de disponibilidade na mesma região da AWS, recurso conhecido como Multi-
AZ. Nós principais dedicados para executar tarefas de gerenciamento de
cluster. Snapshots automatizados para fazer backup e restaurar domínios
do OpenSearch Service.

Suporte SQL para integração com aplicativos de inteligência de


negócios (BI). Pacotes personalizados para melhorar os resultados da
pesquisa.

A replicação entre clusters no Amazon OpenSearch Service que


segue um modelo ativo-passivo, permite replicar índices, mapeamentos e
metadados de um domínio do OpenSearch Service para outro. A replicação
entre clusters garante alta disponibilidade em caso de interrupção e permite
replicar dados em datacenters geograficamente distantes para reduzir a
latência.

Visualização de dados usando o OpenSearch Dashboards (o


sucessor do Kibana). Integração ao Amazon CloudWatch para
monitoramento das métricas e definição de alarmes. Integração ao AWS
CloudTrail para auditoria de chamadas de API de configuração para
domínios. Integração ao Amazon S3, Amazon Kinesis e Amazon DynamoDB
para carregar dados de streaming. Alertas do Amazon SNS quando os dados
excedem determinados limites.

O Amazon Simple Notification Service (Amazon SNS) é um serviço


gerenciado que fornece entrega de mensagens de editores para assinantes
(também conhecido como produtores e consumidores). Os editores se

164
comunicam de maneira assíncrona com os assinantes produzindo e
enviando mensagens para um tópico, que é um canal de comunicação e um
ponto de acesso lógico. Os clientes podem se inscrever no tópico SNS e
receber mensagens publicadas usando um tipo de endpoint compatível,
como Amazon Kinesis Data Firehose, AWS Lambda, HTTP, e-mail,
notificações push móveis e mensagens de texto móveis (SMS).

Aplique uma política de acesso baseada em recursos restritiva ao


domínio (ou habilite o controle de acesso refinado). Siga o princípio do
privilégio mínimo ao conceder acesso à API de configuração e às APIs do
OpenSearch. Configure pelo menos uma réplica para cada índice. Use três
nós principais dedicados. Implante o domínio em três zonas de
disponibilidade.

Atualize para as versões do OpenSearch mais recentes à medida que


elas forem disponibilizadas. Dimensione o domínio (armazenamento de
disco) de forma apropriada para sua workload. Não use instâncias T2 ou
t3.small para domínios de produção. Se o seu domínio armazena dados
confidenciais, ative a criptografia de dados em repouso e a criptografia de
nó a nó.

A imagem da Figura 61 é um exemplo de arquitetura de referência


de um domínio do OpenSearch Service com dez instâncias. Sete das
instâncias são nós de dados e três são nós principais dedicados. Somente
um dos nós principais dedicados está ativo; os dois nós principais dedicados
de cor cinza aguardam como backup em caso de falha do nó principal
dedicado ativo. Todas as solicitações de carregamento de dados são
atendidas por sete nós de dados, e todas as tarefas de gerenciamento de
cluster são transferidas para o nó principal dedicado ativo.

165
Figura 61 – Arquitetura de referência do Amazon OpenSearch.

Fonte: https://docs.aws.amazon.com.

O Amazon OpenSearch Service, em resumo, é um robusto


mecanismo de busca, altamente escalável, resiliente, rápido e seguro.
Permite ingerir, proteger, pesquisar, agregar, visualizar e analisar dados
facilmente. Facilita a execução de análises de log interativas,
monitoramento de aplicativos em tempo real, pesquisa de sites e muito
mais.

166
14
Capítulo 14. Introdução à Data Analytics na AWS
14.1. Serviços da AWS para Data Warehouse Moderno / Big Data (parte 1)
AWS Glue, AWS Data Pipeline, Amazon Redshift e Amazon EMR
Introdução à Data Analytics na AWS
Devido ao grande volume de informações que as empresas
processam, é necessário recorrer a soluções analíticas para melhorar a
tomada de decisões. Os trabalhos em análise de dados estão aumentando,
pois, as organizações que usam dados tomam melhores decisões
operacionais e melhoram o gerenciamento de riscos, para alcançar um
crescimento lucrativo e sustentável.

Embora os campos de aplicação da análise de dados sejam muito


amplos, ela impacta em toda a cadeia de valor de negócios e produtos.
Vamos pensar em uma fábrica de alimentos: podemos identificar os
produtos e os clientes menos lucrativos para otimizar a força de vendas em
produtos que oferecem uma margem maior, com uma campanha de
marketing bem direcionada, ou estimar o estoque necessário dos produtos
durante o ano, de modo a não perder vendas, ou ainda o estoque de matéria-
prima para garantir a produção contínua.

No setor financeiro, é possível identificar os riscos ao conceder


crédito usando menos documentação do que um banco tradicional. Um
exemplo disso são as fintechs que oferecem empréstimos rápidos pela
internet. A diferença está em como o processamento é realizado, pois,
nesses casos, tudo é feito on-line, não sendo necessário visitar o banco. Os
casos e exemplos variam de acordo com o domínio da tecnologia, mas são
sempre transversais, permeando todo o negócio.

168
A palavra fintech é uma abreviação para Financial Technology
(Tecnologia Financeira, em português). Ela é usada para se referir a startups
ou empresas que desenvolvem produtos financeiros totalmente digitais, nas
quais o uso da tecnologia é o principal diferencial em relação às empresas
tradicionais do setor.

De um modo geral, essas soluções analíticas podem ser


categorizadas em três tipos: descritiva, preditiva e prescritiva. Vamos
começar fazendo uma análise descritiva, para entender o que está
acontecendo no negócio. Em seguida, fazemos uma análise preditiva,
tentando antecipar os diferentes cenários possíveis e, por fim, numa análise
prescritiva, fornecemos recomendações sobre como melhorar as ações para
maximizar os resultados em cenários desejáveis, ou para minimizar os riscos
nos cenários em que queremos evitá-los. Ou seja, a Análise de Dados vai
desde o entendimento até a transformação de um processo ou até do
negócio como um todo.

Big Data, Data Analytics e Data Science


Big Data: são grandes volumes de grande variedade, que exigem
formas inovadoras e econômicas de processamento de informações para
permitir uma melhor compreensão, tomada de decisão e automação de
processos.

Data Analytics: refere-se ao processo de examinar conjuntos de


dados, a fim de tirar conclusões sobre as informações que eles contêm, cada
vez mais com o auxílio de sistemas e softwares especializados.

Data Science: é a combinação de estatísticas, matemática,


programação, resolução de problemas, captura de dados de maneiras
engenhosas, a capacidade de ver as coisas de maneira diferente e a
atividade de limpeza, preparação e alinhamento dos dados. Simplificando,

169
Data Science é um termo abrangente para as técnicas utilizadas ao tentar
extrair insights de dados não estruturados e estruturados.

Big Data, Data Analytics e Data Science


No final dos anos 90, o Walmart detectou um comportamento
comum entre pais que compravam fraldas: grande parte deles levava
também cervejas. A partir disso, a rede de supermercados começou a
posicionar as gôndolas de cervejas próximas às gôndolas de fraldas, o que
resultou em um crescimento de 30% nas vendas de ambos os produtos.

De lá para cá, muitas outras empresas começaram a fazer uso de


ferramentas analíticas baseadas em aprendizado por associação. As
ferramentas evoluíram muito e as empresas estão cada vez mais assertivas
em suas ações de sugestão de produtos de forma customizada. E isso tem
tudo a ver com análise de dados.

Figura 62 – Arquitetura de referência AWS – Ciência de Dados.

Fonte: https://docs.aws.amazon.com.

170
Figura 63 – Arquitetura de referência AWS – Data Lake.

Fonte: https://docs.aws.amazon.com.

À medida que mais e mais dados são gerados e coletados, a análise


de dados requer ferramentas escaláveis, flexíveis e de alto desempenho para
fornecer insights em tempo hábil. No entanto, as organizações estão
enfrentando um crescente ecossistema de big data, onde novas ferramentas
surgem e ficam desatualizadas muito rapidamente. Portanto, pode ser muito
difícil acompanhar o ritmo e escolher as ferramentas certas.

14.2. Serviços da AWS para Data Warehouse Moderno / Big Data (Parte 2)
A AWS fornece uma ampla plataforma de serviços gerenciados para
ajudá-lo a criar, proteger e dimensionar aplicativos de big data de ponta a
ponta com rapidez e facilidade. Independentemente de seus aplicativos
exigirem streaming em tempo real ou processamento de dados em lote, a
AWS fornece a infraestrutura e as ferramentas para lidar com seu próximo
projeto de big data. Não há hardware para adquirir, nem infraestrutura para
manter e dimensionar, apenas o que você precisa para coletar, armazenar,
processar e analisar big data. A AWS tem um ecossistema de soluções

171
analíticas projetadas especificamente para lidar com essa quantidade
crescente de dados e fornecer insights sobre seus negócios.

A análise de grandes conjuntos de dados requer capacidade


computacional significativa, que pode variar em tamanho, com base na
quantidade de dados de entrada e no tipo de análise. Essa característica das
cargas de trabalho de big data é ideal para o modelo de computação em
nuvem, com pagamento conforme o uso, em que os aplicativos podem ser
facilmente escalados para cima e para baixo com base na demanda. À
medida que os requisitos mudam, você pode redimensionar facilmente seu
ambiente (horizontal ou verticalmente) na AWS para atender às suas
necessidades, sem precisar esperar por hardware adicional ou investir
demais para provisionar capacidade suficiente.

Para aplicativos de missão crítica em uma infraestrutura mais


tradicional, os projetistas de sistemas não têm escolha a não ser
superprovisionar, porque um aumento nos dados adicionais devido a um
aumento nas necessidades de negócios deve ser algo que o sistema possa
lidar. Por outro lado, na AWS você pode provisionar mais capacidade e
computação em questão de minutos, o que significa que seus aplicativos de
big data crescem e diminuem conforme a demanda exige, e seu sistema é
executado o mais próximo possível da eficiência ideal.

AWS Glue
O AWS Glue é um serviço web de integração de dados (processo de
preparar e combinar os dados para análise) sem servidor, que facilita
descobrir, preparar e combinar dados para análise (ETL), machine learning e
desenvolvimento de aplicações. O AWS Glue oferece todos os recursos
necessários para a integração dos dados, e, assim, é possível começar a
analisar seus dados e usá-los em minutos, em vez de meses.

172
Figura 64 – Diagrama para exemplificar as etapas de ETL.

Fonte: https://www.astera.com.

AWS Data Pipeline, Amazon Redshift e Amazon EMR


O AWS Data Pipeline é um serviço web que você pode usar para
automatizar a movimentação e a transformação de dados. Com o AWS Data
Pipeline, você pode definir fluxos de trabalho dirigidos por dados, para que
as tarefas possam ser dependentes da conclusão bem-sucedida das tarefas
anteriores. Você define os parâmetros das transformações dos seus dados e
o AWS Data Pipeline impõe a lógica configurada.

Figura 65 – Arquitetura de referência AWS Data Pipeline.

Fonte: https://docs.aws.amazon.com.

173
Amazon Redshift
O Amazon Redshift é o data warehouse em nuvem da AWS. Com ele,
é simples e econômico analisar todos os dados com ferramentas SQL padrão
e as ferramentas de Business Intelligence (BI) existentes. Ele permite
realizar consultas analíticas complexas em terabytes ou petabytes de dados
estruturados e semiestruturados, usando a otimização sofisticada de
consultas, o armazenamento colunar em armazenamento de alta
performance e a execução de consultas maciçamente paralelas. A maioria
dos resultados é disponibilizada em segundos.

Figura 66 – Arquitetura de referência AWS Redshift.

Fonte: https://docs.aws.amazon.com.

174
Amazon EMR
Amazon EMR é a plataforma de big data em nuvem líder do setor
para processar grandes quantidades de dados usando ferramentas de
código aberto (Apache Spark, Apache Hive, Apache HBase, Apache Flink,
Apache Hudi e Presto). Facilita a configuração, operação e escala de seus
ambientes de big data, automatizando tarefas demoradas como
provisionamento de capacidade e ajuste de clusters.

Figura 67 – Arquitetura de referência AWS Redshift.

Fonte: https://docs.aws.amazon.com.

À medida que mais e mais dados são gerados e coletados, a análise


de dados requer ferramentas escaláveis, flexíveis e de alto desempenho para
fornecer insights em tempo hábil. No entanto, as organizações estão
enfrentando um crescente ecossistema de big data, onde novas ferramentas

175
surgem e ficam desatualizadas muito rapidamente. Portanto, pode ser muito
difícil acompanhar o ritmo e escolher as ferramentas certas. A maioria das
soluções de arquitetura de big data usa várias ferramentas da AWS para
criar uma solução completa. Essa abordagem ajuda a atender aos rigorosos
requisitos de negócios da maneira mais otimizada em termos de custo,
desempenho e resiliência possível. O resultado é uma arquitetura de big
data flexível que pode ser dimensionada junto com seus negócios.

14.3. Serviços da AWS para Data Warehouse Moderno / Big Data (parte 3)
AWS Lake Formation, Amazon Kinesis, Amazon Managed Streaming for
Apache Kafka (Amazon MSK) e Amazon QuickSight
AWS Lake Formation
O AWS Lake Formation é um serviço que facilita a configuração de
um data lake seguro em questão de dias. O Data lake é um repositório
centralizado, selecionado e seguro, que armazena todos os seus dados,
tanto no formato original quanto preparados para análise. Ele permite que
você integre os silos de dados e combine diferentes tipos de análise para
obter insights e usá-los como orientação para tomar decisões de negócios
mais adequadas.

Figura 68 – Arquitetura de referência AWS Lake Formation.

Fonte: https://docs.aws.amazon.com.

176
Amazon Kinesis
O Amazon Kinesis facilita a coleta, o processamento e a análise de
dados de transmissão em tempo real para que você possa obter insights
oportunos e responder rapidamente. O Amazon Kinesis oferece recursos
essenciais para processar dados de transmissão de forma econômica em
qualquer escala, além da flexibilidade para escolher as ferramentas mais
adequadas aos requisitos de sua aplicação. Com o Amazon Kinesis, você
pode ingerir dados em tempo real, como vídeo, áudio, logs de aplicações,
fluxos de cliques dos sites e dados de telemetria de IoT para machine
learning, análise e outras aplicações.

No Amazon Kinesis, você pode processar e analisar os dados à


medida que eles chegam e responder instantaneamente, em vez de esperar
a coleta de todos eles para iniciar o processamento. No momento, o Amazon
Kinesis oferece quatro serviços: Kinesis Data Firehose (carrega), Kinesis
Data Analytics (analisa), Kinesis Data Streams (transmissão de dados) e
Kinesis Video Streams (transmissão de vídeos).

Figura 69 – Arquitetura de referência AWS Kinesis.

Fonte: https://docs.aws.amazon.com.

177
Amazon Managed Streaming for Apache Kafka (Amazon MSK)
É um serviço totalmente gerenciado que facilita a construção e a
execução de aplicações que usam o Apache Kafka para processar dados de
transmissão. O Apache Kafka é uma plataforma de código aberto para
construção de aplicações e pipelines de dados de transmissão em tempo
real. Com o Amazon MSK, você pode usar as APIs do Apache Kafka para
preencher data lakes, transmitir alterações de e para os bancos de dados, e
potencializar aplicações de análise e machine learning.

Figura 70 – Arquitetura de referência Amazon MSK.

Fonte: https://docs.aws.amazon.com.

Amazon QuickSight
É um serviço de Business Intelligence (BI) na nuvem que é rápido e
facilita o fornecimento de insights a todas as pessoas de sua organização. O
QuickSight permite que você crie e publique painéis interativos
(dashboards) que podem ser acessados em navegadores ou dispositivos
móveis. Você pode incorporar painéis nas aplicações e fornecer aos clientes
análises avançadas por autoatendimento. O QuickSight escala facilmente

178
para dezenas de milhares de usuários sem nenhum software para instalar,
servidores para implantar nem infraestrutura para gerenciar.

Figura 71 – Exemplo de dashboard do Amazon QuickSight.

Fonte: https://docs.aws.amazon.com.

À medida que mais e mais dados são gerados e coletados, a análise


de dados requer ferramentas escaláveis, flexíveis e de alto desempenho para
fornecer insights em tempo hábil. No entanto, as organizações estão
enfrentando um crescente ecossistema de big data, onde novas ferramentas
surgem e ficam desatualizadas muito rapidamente. Portanto, pode ser muito
difícil acompanhar o ritmo e escolher as ferramentas certas. A maioria das
soluções de arquitetura de big data usa várias ferramentas da AWS para
criar uma solução completa. Essa abordagem ajuda a atender aos rigorosos
requisitos de negócios da maneira mais otimizada em termos de custo,
desempenho e resiliência possível. O resultado é uma arquitetura de big
data flexível que pode ser dimensionada junto com seus negócios.

179
15
Capítulo 15. Introdução à IA e Machine Learning na AWS
15.1. Introdução à IA e Machine Learning na AWS
Inteligência Artificial (IA) se refere amplamente a qualquer
comportamento semelhante ao humano, apresentado por uma máquina ou
sistema. Na forma mais básica da IA, os computadores são programados
para “imitar” o comportamento humano usando dados extensivos de
exemplos anteriores de comportamento similar. Eles podem variar desde
reconhecer diferenças entre um gato e um pássaro até realizar atividades
complexas em uma fábrica.

Muitos pesquisadores hoje acreditam que IA é uma tecnologia chave


para o software do futuro. As pesquisas em IA estão relacionadas com áreas
de aplicação que envolvem o raciocínio humano, tentando imitá-lo e
realizando inferências.

O campo de IA tem como objetivo o contínuo aumento da


"inteligência" do computador, pesquisando, para isso, também os
fenômenos da inteligência natural. Para este fim, IA é definida aqui como
sendo uma coleção de técnicas suportadas por computador emulando
algumas capacidades dos seres humanos. Esta coleção inclui:

• Resolução de problemas.

• Compreensão de Linguagem Natural.

• Visão e Robótica.

• Sistemas Especialistas e Aquisição de Conhecimento.

• Metodologias de Representação de Conhecimento.

181
Em termos mais simples, a Inteligência Artificial (IA) refere-se a
sistemas ou máquinas que imitam a inteligência humana para executar
tarefas e podem se aprimorar iterativamente com base nas informações que
coletam. Exemplos: chatbots e o Watson (IBM).

Figura 72 – Diagrama Inteligência Artificial.

Fonte: https://www.oracle.com.

A IA está mais relacionada ao processo, à capacidade de


pensamento superpoderoso e à análise de dados do que a qualquer formato
ou função em particular. Embora a IA traga imagens de robôs parecidos com
os homens de alto funcionamento que dominam o mundo, a IA não pretende
substituir os seres humanos. Seu objetivo é melhorar significativamente as
habilidades e contribuições humanas. Isso faz dela um ativo de negócios
muito valioso.

A IA tornou-se um termo genérico para aplicativos que executam


tarefas complexas que antes exigiam informações do usuário, como a
comunicação com clientes on-line ou um jogo de xadrez. O termo é
frequentemente usado de forma intercambiável com seus subcampos, que

182
incluem machine learning e aprendizado profundo. No entanto, existem
diferenças. Por exemplo, o machine learning é centrado na criação de
sistemas que aprendam ou melhorem seu desempenho com base nos dados
que eles consomem. É importante notar que, embora todo machine learning
seja IA, nem toda IA é machine learning.

A Machine Learning (ML) pode ajudar a usar dados históricos para


tomar melhores decisões de negócios. Os algoritmos de ML detectam
padrões nos dados e criam modelos matemáticos usando essas
descobertas. Depois, você pode usar os modelos para fazer previsões sobre
dados futuros. Por exemplo, uma possível aplicação de um modelo de
Machine Learning é prever a probabilidade de um cliente comprar um
determinado produto com base no comportamento passado.

A Inteligência Artificial é a mudança tecnológica mais poderosa da


área da ciência da computação, conectando diversos ambientes da vida,
como casa, trabalho, lazer, viagens e muito mais, em uma única experiência.
A IA não vai ajudar somente quando solicitarmos, e sim nos acompanhar,
prever as necessidades, ajudar-nos a tomar decisões e lembrar-nos de
tarefas importantes. O fator é como estamos ensinando os computadores a
pensar.

O Amazon SageMaker é um serviço de Machine Learning totalmente


gerenciado que permite aos cientistas, engenheiros de dados e
desenvolvedores a construir, treinar e implantar modelos Machine Learning
para qualquer caso de uso. O serviço oferece uma instância de notebook de
autoria Jupyter integrado para facilitar o acesso a fontes de dados para fins
de exploração e análise, sem necessidade de gerenciar servidores. Oferece
algoritmos comuns de Machine Learning que são otimizados para execução
eficiente, com volumes de dados extremamente altos em um ambiente
distribuído.

183
O propósito dos avanços da Inteligência Artificial não é o de
substituir o ser humano. O objetivo é inverso a esse. A intenção é a de que o
homem atue junto à máquina, ganhando agilidade e escalabilidade. Assim,
podemos oferecer mais qualidade de vida e eficiência para a vida das
pessoas.

184
Referências
AHMED, Nemath. What’s A Data Platform Anyway? Towards Data Science,
[S. l.], 2021. Disponível em: https://towardsdatascience.com/whats-a-data-
platform-anyway-37773d9aef47. Acesso em: 14 mar. 2022.

ANÁLISES. Amazon Web Services, [S. l.], c2022. Disponível em:


https://docs.aws.amazon.com/pt_br/whitepapers/latest/aws-
overview/analytics.html. Acesso em: 14 mar. 2022.

AWS. Amazon Elastic Block Store (EBS). [S. l.], c2022. Disponível em:
https://aws.amazon.com/pt/ebs/?nc1=h_ls. Acesso em: 14 mar. 2022.

AWS. Amazon FSx Documentation. [S. l.], c2022. Disponível em:


https://docs.aws.amazon.com/pt_br/fsx/?id=docs_gateway. Acesso em: 14
mar. 2022.

AWS. Amazon FSx. [S. l.], c2022. Disponível em:


https://aws.amazon.com/pt/fsx/?nc1=h_ls. Acesso em: 14 mar. 2022.

AWS. Amazon Relational Database Service (RDS). [S. l.], c2022. Disponível
em: https://aws.amazon.com/pt/rds/. Acesso em: 14 mar. 2022.

AWS. Amazon S3. [S. l.], c2022. Disponível em:


https://aws.amazon.com/pt/s3/?nc1=h_ls. Acesso em: 14 mar. 2022.

AWS. Bancos de dados na nuvem da AWS. Amazon Web Services, [S. l.],
c2022. Disponível em: https://aws.amazon.com/pt/products/databases/.
Acesso em: 14 mar. 2022.

AWS. Documentação do Amazon EBS. [S. l.], c2022. Disponível em:


https://docs.aws.amazon.com/pt_br/ebs/?id=docs_gateway. Acesso em: 14
mar. 2022.

185
AWS. Documentação do Amazon Machine Learning. [S. l.], c2022.
Disponível em https://docs.aws.amazon.com/pt_br/machine-learning/.
Acesso em: 14 mar. 2022.

AWS. Documentação do AWS. [S. l.], c2022. Disponível em:


https://docs.aws.amazon.com/pt_br/index.html. Acesso em: 14 mar. 2022.

AWS. Machine Learning na AWS. [S. l.], c2022. Disponível em:


https://aws.amazon.com/pt/ai/. Acesso em: 14 mar. 2022.

AWS. Visão geral. [S. l.], c2022. Disponível em:


https://aws.amazon.com/pt/machine-learning/. Acesso em: 14 mar. 2022.

AWS. Whitepapers e guias da AWS. [S. l.], c2022. Disponível em:


https://aws.amazon.com/whitepapers. Acesso em: 14 mar. 2022.

BIG Data Analytics Options on AWS. Amazon Web Services, [S. l.], c2022.
Disponível em: https://docs.aws.amazon.com/pt_br/whitepapers/latest/big-
data-analytics-options/welcome.html. Acesso em: 14 mar. 2022.

CATEGORIAS de armazenamento do Amazon S3. Amazon Web Services, [S.


l.], c2022. Disponível em: https://aws.amazon.com/pt/s3/storage-
classes/?nc=sn&loc=3. Acesso em: 14 mar. 2022.

DATA lake. Amazon Web Services, [S. l.], c2022. Disponível em:
https://docs.aws.amazon.com/pt_br/wellarchitected/latest/analytics-
lens/data-lake.html. Acesso em: 14 mar. 2022.

DATA lakes e análises na AWS. Amazon Web Services, [S. l.], c2022.
Disponível em: https://aws.amazon.com/pt/big-data/datalakes-and-
analytics/?nc=sn&loc=0. Acesso em: 14 mar. 2022.

MARKO, Kurt. Amazon FSx vs. EFS: Compare the AWS file services.
TechTarget, [S. l.], 2019. Disponível em:

186
https://searchaws.techtarget.com/tip/Amazon-FSx-vs-EFS-Compare-the-
AWS-file-services. Acesso em: 14 mar. 2022.

O QUE é inteligência artificial – IA? Oracle, [S. l.], c2022. Disponível em:
https://www.oracle.com/br/artificial-intelligence/what-is-ai/. Acesso em: 14
mar. 2022.

O QUE é o Amazon Aurora? Amazon Web Services, [S. l.], c2022. Disponível
em:
https://docs.aws.amazon.com/pt_br/AmazonRDS/latest/AuroraUserGuide/C
HAP_AuroraOverview.html. Acesso em: 14 mar. 2022.

O QUE é o Amazon DocumentDB (compatível com MongoDB). Amazon Web


Services, [S. l.], c2022. Disponível em:
https://docs.aws.amazon.com/pt_br/documentdb/latest/developerguide/wh
at-is.html. Acesso em: 14 mar. 2022.

O QUE é o Amazon DynamoDB? Amazon Web Services, [S. l.], c2022.


Disponível em:
https://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developergui
de/Introduction.html. Acesso em: 14 mar. 2022.

O QUE é o Amazon ElastiCache for Memcached? Amazon Web Services, [S.


l.], c2022. Disponível em:
https://docs.aws.amazon.com/pt_br/AmazonElastiCache/latest/mem-
ug/WhatIs.html. Acesso em: 14 mar. 2022.

O QUE é o Amazon ElastiCache for Redis? Amazon Web Services, [S. l.],
c2022. Disponível em:
https://docs.aws.amazon.com/pt_br/AmazonElastiCache/latest/red-
ug/WhatIs.html. Acesso em: 14 mar. 2022.

187
O QUE é o Amazon Keyspaces (para Apache Cassandra)? Amazon Web
Services, [S. l.], c2022. Disponível em:
https://docs.aws.amazon.com/pt_br/keyspaces/latest/devguide/what-is-
keyspaces.html. Acesso em: 14 mar. 2022.

O QUE é o Amazon Neptune? Amazon Web Services, [S. l.], c2022. Disponível
em:
https://docs.aws.amazon.com/pt_br/neptune/latest/userguide/intro.html.
Acesso em: 14 mar. 2022.

O QUE é o Amazon OpenSearch Service? Amazon Web Services, [S. l.],


c2022. Disponível em: https://docs.aws.amazon.com/pt_br/opensearch-
service/latest/developerguide/what-is.html. Acesso em: 14 mar. 2022.

O QUE é o Amazon QLDB? Amazon Web Services, [S. l.], c2022. Disponível
em:

O QUE é o Amazon Relational Database Service (Amazon RDS)? Amazon


Web Services, [S. l.], c2022. Disponível em:
https://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/Welcom
e.html. Acesso em: 14 mar. 2022.

O QUE é o Amazon S3? Amazon Web Services, [S. l.], c2022. Disponível em:
https://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/Welcome.
html

RECURSOS do Amazon RDS. Amazon Web Services, [S. l.], c2022. Disponível
em: https://aws.amazon.com/pt/rds/resources/. Acesso em: 14 mar. 2022.

RECURSOS do Amazon S3. Amazon Web Services, [S. l.], c2022. Disponível
em: https://aws.amazon.com/pt/s3/features/. Acesso em: 14 mar. 2022.

188
SIMBORG, Mark. What is a Data Platform? Volt Active Data, Bedford, MA,
2021. Disponível em: https://www.voltdb.com/blog/2021/04/what-is-a-data-
platform/. Acesso em: 14 mar. 2022.

TIPOS de computação em nuvem. Amazon Web Services, [S. l.], c2022.


Disponível em: https://aws.amazon.com/pt/types-of-cloud-computing/.
Acesso em: 14 mar. 2022.

WHAT Is a Data Platform? MongoDB, [S. l.], c2021. Disponível em:


https://www.mongodb.com/what-is-a-data-platform. Acesso em: 14 mar.
2022.

WHAT is a Data Platform? Snowflake, San Mateo, CA, c2022. Disponível em:
https://www.snowflake.com/trending/data-platforms. Acesso em: 14 mar.
2022.

WHAT is a Data Platform? Splunk, [S. l.], c2022. Disponível em:


https://www.splunk.com/en_us/data-insider/what-is-a-data-platform.html.
Acesso em: 14 mar. 2022.

WHAT Is Amazon Timestream? Amazon Web Services, [S. l.], c2022.


Disponível em:
https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-
timestream.html. Acesso em: 14 mar. 2022.

189

Você também pode gostar