Entendendo o AWS Kinesis Data Platform - Full Cycle FullCycle

Voltar

Wesley Willians

Entendendo o AWS Kinesis Data Platform

15 min de leitura

O AWS Kinesis é uma plataforma voltada para processar e consumir dados, que podem ser coletados de diversas fontes e analisados em tempo real, além de serem compatíveis com streaming de dados e vídeos.

O que é o AWS Kinesis?

Existem quatro serviços que compõem o ecossistema dessa plataforma:

  • Data Streams

O serviço Data Streams é responsável por receber e distribuir as informações.

  • Video Stream

O Kinesis Video Stream é próprio para trabalhar com streaming de vídeos.

Vale destacar que atualmente há uma alta demanda no mercado em relação a vídeos, seja em sistemas de alarmes, pedágio, verificação de placas, vídeos de segurança e contador de entradas e saídas de lojas. No geral, é tudo o que envolve computação visual.

  • Data Firehose

Esse componente tem a função de receber, processar e carregar os dados em diversos outros serviços.

  • Data Analytics

Na parte de Analytics ele consegue converter os dados em diversos padrões, principalmente para quem trabalha com Big Data. Nesse esquema também não é preciso passar por diversas pipelines de processamento, já que a quebra de dados é feita automaticamente e em tempo real para todos receberem.

Kinesis Data Streams

Vamos estender um pouco mais o raciocínio sobre esse recurso, que concentra e retém todos os dados que chegam.

O Kinesis Data Stream foi criado pensando especificamente em trabalhar como um banco de dados, que recebe e consegue manter esses dados em disco, utilizando as informações de uma forma muito rápida.

Geralmente um banco de dados recebe informações que se tornam um log binário, e partir disso é possível criar tabelas, indexar, manipular, alterar, etc. Porém, a camada que existe acima do banco de dados é o que praticamente deixa todo esse processo um pouco mais lento.

Mas se nós não tivéssemos que trabalhar com modificações de dados, basicamente seria possível pegar o dado bruto e armazená-lo em disco de uma forma muito rápida, como se estivéssemos trabalhando e gravando esses dados em memória.

O Kinesis Data Streams faz praticamente isso, e ao receber a informação ela é gravada de forma síncrona em diversas zonas de disponibilidade para garantir, inclusive, resiliência nas informações.

Nesse caso o stream é o canal de comunicação responsável por receber e disponibilizar os dados enviados para o Kinesis, funcionando de uma forma muito semelhante a um tópico do Apache Kafka. Você cria um novo stream, que recebe e distribui as informações. E assim como qualquer dado, você tem basicamente um produtor que pode ter diversos consumidores. Então a informação é enviada ao stream, que armazena no Kinesis e depois o consumidor faz a leitura, mas de uma forma muito mais rápida devido ao padrão sequencial, como um log. E ler logs é muito mais rápido do que fazer diversas consultas com banco de dados.

Shards

Os Shards são uma outra categoria utilizada no Kinesis, sendo muito semelhantes às partições do Apache Kafka.

Se você tem um stream de vendas no qual você pretende armazenar informações, por exemplo, conforme as informações chegam você pode enviá-las em algum momento para um determinado shard.

Essa divisão é feita porque ao adicionarmos dados em algum lugar, a máquina que irá recebê-los tem uma capacidade computacional limitada. Então você não consegue pegar terabytes de dados, por exemplo, e enviar tudo isso para o mesmo ponto porque a máquina não vai suportar.

Além disso, se além de utilizarmos essa forma de envio, nós tivéssemos que ler os dados de uma forma muito mais pesada, o que seria mais complicado. E pensando também em termos de resiliência, é por isso que as informações coletadas do stream são subdivididas.

Organizar informações separadas é muito mais simples, já que você pode dividir essas tarefas com pessoas diferentes e sem gerar problemas de performance.

Stream Provisionada x On Demand

O Kinesis normalmente oferece serviços de stream de forma provisionada ou on demand.

  • Shards: Provisionados

Criando o seu stream de forma provisionada você define a quantidade de shards que você pretende utilizar. E então ele cria, por exemplo, 200 shards e você paga esse serviço.

Com mais controle sobre esses detalhes, caso você queira aumentar ou diminuir os seus shards, os merges também são feitos automaticamente.

  • Shards: On Demand

Trabalhar de forma on demand, ou sob demanda, não é preciso especificar a sua quantia de shards; pois conforme os dados chegam e são lidos, ele continua criando shards de forma automática, de acordo como ele prefere subdividi-los.

A vantagem disso é que você tira das suas costas a responsabilidade de fazer contas para trabalhar com esses shards.

Em contrapartida, nesse formato há uma limitação de quantos streams precisamos criar. E se precisarmos de mais, podemos entrar em contato com a AWS e solicitar um aumento justificando o motivo.

Log

Como já foi mencionado, conforme os dados chegam os streams trabalham como um log. É exatamente um banco de dados, que é imutável e recebe os dados sempre em ordem. E como o Kafka, ele funciona em tópicos.

Conforme recebemos os dados, nós temos os registros, ou records; que possuem um número sequencial. E ao gravar os dados é possível ter diversas aplicações lendo os dados e registros diferentes porque eles possuem offsets.

Anatomia do Registro

Cada registro tem uma estrutura básica, então a sua anatomia é composta por: uma key que nós escolhemos; os dados que nós passamos; e o número sequencial gerado pelo próprio Kinesis.

  • Key

Com o dado recebido, o registro é separado por uma key. E sempre que você adiciona uma key semelhante, ela sempre vai para o mesmo shard. Dessa forma você garante a sua organização na ordem de leitura para determinados tipos e grupos de informações.

Se você dispõe as informações de venda no mesmo shard, por exemplo, você consegue ter a ordem de como as vendas foram realizadas. Sem isso as informações ficam espalhadas, sem garantia de ordenação.

  • Payload Data (Blob)

Se a informação é formada por bytes, independente do que seja, o Kinesis recebe a informação e coloca esses dados no registro.

  • Seq Number

Esse é basicamente o ID do registro que o Kinesis está trabalhando.

Veja também: Saiba quando utilizar a comunicação assíncrona.

Se você curtiu esse conteúdo e quer aprender mais como AWS Kinesis Data Platform pode transformar a sua arquitetura de dados, solicite contato clicando aqui e nós te ajudamos.

Quer mais conteúdo? Assista o nosso canal do youtube.