O que é o AWS Kinesis? Padrão de design, casos de uso e comparação
Publicados: 2022-07-01Estamos vivendo na era das integrações entre aplicativos, notificações instantâneas e atualizações instantâneas de dados. Nesse cenário, torna-se mais importante criar, manter e modificar sistemas em tempo real.
Ao longo dos anos, várias ferramentas úteis foram desenvolvidas para ajudar na construção e manutenção desses sistemas multiplataforma. RabbitMQ, Kafka e AWS Kinesis são três dessas ferramentas que ajudaram desenvolvedores e engenheiros a trabalhar perfeitamente com dados em tempo real. Estes sistemas foram todos criados e mantidos, tendo em mente diferentes objetivos. Portanto, eles vêm com seus benefícios e limitações distintos com base no trabalho em questão.
Este artigo falará em detalhes sobre o AWS Kinesis e como ele funciona.
O Kinesis é um serviço de streaming criado com base na AWS. Ele pode ser usado para processar todos os tipos de dados – desde logs, dados de IoT, dados de vídeo, basicamente qualquer formato de dados. Isso permite que você execute diferentes modelos e processos de aprendizado de máquina nos dados em tempo real à medida que eles fluem pelo sistema. Assim, reduz o incômodo de passar por bancos de dados tradicionais, aumentando a eficiência geral.
Explore nossos cursos populares de MBA
Mestre em Administração de Empresas pela Golden Gate University | Master of Business Administration (MBA) Liverpool Business School | MBA pela Deakin Business School |
MBA em Marketing Digital pela Dekin University | MBA Executivo pela SSBM | Veja todos os cursos de MBA |
O padrão de design do Pub/Sub
Antes de nos aprofundarmos em como o Kinesis pode ser usado, é essencial saber um pouco mais sobre o modelo de design que ele usa. Nesse caso, estamos falando do design do editor e do assinante, que geralmente é chamado de padrão de design pub/sub. Esse padrão de design foi desenvolvido para ter o Publicador – o remetente da mensagem, que envia eventos para o Kinesis – um barramento de eventos. Então, este barramento de eventos distribui com sucesso os dados de entrada para todos os assinantes.
Um elemento-chave a ter em mente aqui é que os editores essencialmente não têm ideia de que existem assinantes. Todas as mensagens e o transporte de mensagens são gerenciados inteiramente pelo AWS Kinesis.
Em outras palavras, o padrão de design pub/sub é usado para comunicação eficiente de mensagens sem criar um design muito acoplado. Em vez disso, o Kinesis se concentra na utilização de componentes independentes e na criação de um fluxo de trabalho distribuído geral a partir disso.
Em essência, o AWS Kinesis é uma poderosa ferramenta de streaming que oferece vantagens distintas, especialmente em comparação com outras ferramentas de streaming em tempo real. Um desses benefícios é que é um serviço gerenciado, portanto, os desenvolvedores não precisam lidar com a administração do sistema. Isso permite que os desenvolvedores se concentrem mais em seus códigos e sistemas e menos em tarefas administrativas.
Agora, vamos ver alguns casos de uso do Kinesis.
Caso de uso do AWS Kinesis – dados de streaming
O AWS Kinesis é útil para grandes e pequenas empresas que desejam gerenciar e integrar seus dados em diferentes plataformas. O Kinesis é benéfico em cenários de grande e pequeno porte para organizações que desejam gerenciar e integrar seus dados entre plataformas.
Vejamos dois grandes casos de uso em que as empresas usaram o AWS Kinesis para gerenciar perfeitamente grandes quantidades de dados em tempo real.
Netflix
A Netflix usa o AWS Kinesis para processar vários TBs de dados de log todos os dias. A Netflix precisa de um aplicativo centralizado que registre todos os dados em tempo real. Ao usar o Kinesis, a Netflix desenvolveu o Dredge, que enriquece o conteúdo com metadados em tempo real. Dessa forma, os dados são processados instantaneamente à medida que passam pelo Kinesis. Isso elimina uma etapa tediosa de carregar dados em um banco de dados para processamento futuro.
Veritone
A Veriton fornece serviços de IA e aprendizado de máquina. Ele usa streams de vídeo do AWS Kinesis para processar dados do cliente. A Veriton também aplica modelos de ML e IA ao conteúdo em tempo real para melhorá-lo com métricas e metadados. Usando essas informações adicionais, a Veritone facilita a pesquisa de streams de vídeo do Kinesis analisando áudio, reconhecimento facial, dados marcados etc.
Esses são apenas dois dos inúmeros exemplos de como as empresas hoje aproveitam o AWS Kinesis para trabalhar com dados de streaming em tempo real com mais eficiência.
Vamos passar para os aspectos técnicos e componentes essenciais do fluxo do AWS Kinesis.
Aprenda cursos de IA e ML das melhores universidades do mundo. Ganhe Masters, Executive PGP ou Advanced Certificate Programs para acelerar sua carreira.
Streams vs Firehose
O AWS Kinesis oferece aos desenvolvedores dois produtos principais – Kinetic Streams e Kinesis Firehose.
Para trabalhar com o Kinesis Stream, você precisará usar a Kinesis Producer Library. Ele permitirá que você coloque todos os dados em tempo real em seu fluxo. Além disso, você pode conectar essa biblioteca a praticamente qualquer aplicativo ou processo. No entanto, o Kinesis Streams não é um serviço 100% gerenciado. Portanto, a equipe de desenvolvedores precisará dimensioná-lo manualmente quando necessário. Além disso, os dados alimentados no fluxo permanecerão lá por sete dias.
O Kinesis Firehose é um pouco mais simples de implementar. Os dados alimentados ao Kinesis Firehose são enviados ao Amazon Redshift, Amazon S3 e até Elasticsearch – todos usando o mecanismo AWS Kinesis. Depois disso, você pode processá-lo de acordo com suas necessidades. Se os dados estiverem armazenados no Amazon S3 ou em qualquer outro sistema de armazenamento da AWS, você poderá deixá-los lá pelo tempo que desejar.
Como configurar um stream no Kinesis
Antes de começar a acessar o Kinesis, você deve configurar um stream acessando a AWS CLI. No shell de comando, digite o seguinte comando para criar um fluxo chamado DataProcessingStream
–stream-name DataProcessingStream \
–shard-count 1 \
–região eu-oeste-1
Criando um pipeline de streaming com Python
Depois de configurar um stream no Kinesis, você deve começar a criar o produtor e o consumidor. Os componentes principais do Kinesis ajudam você a criar uma camada de acesso para integrar outros sistemas, softwares e aplicativos.
Neste tutorial, trabalharemos com a biblioteca boto3 Python para conectar-se ao Kinesis.
Criando o produtor
Use o código mencionado abaixo para criar o produtor usando a linguagem de programação Python:
importar boto3
importar json
log de importação
logging.basicConfig(level = logging.INFO)
session = boto3.Session(region_name='eu-west-1′)
cliente = session.client('kinesis')
test_data = {'data_tag': 'DataOne', 'score': '10', 'char': 'Database Warrior'}
resposta = client.put_record(
StreamName='DataProcessingStream',
Data=json.dumps({
“data_tag”: test_data['data_tag'],
“pontuação”: test_data['pontuação'],
“char”: test_data['char']
}),
PartitionKey='a01′
)
logging.info(“Input New Data Score: %s”, test_data)
Para extrair os dados, você precisa de outro script para ouvir os dados que estão sendo fornecidos aos produtores. Para isso, você pode usar o ShardIterator para obter acesso a todos os dados que estão sendo alimentados no Kinesis. Dessa forma, você pode acessar os registros em tempo real e futuros no Kinesis.
Criando o consumidor
Use o código abaixo mencionado para criar um consumidor Python:
importar boto3
importar json
sistema de importação
log de importação
logging.basicConfig(level = logging.INFO)
session = boto3.Session(region_name='eu-west-1′)
cliente = session.client('kinesis')
aws_kinesis_stream = client.describe_stream(StreamName='DataProcessingStream)
shard_id = aws_kinesis_stream['StreamDescription']['Shards'][0]['ShardId']
stream_response = client.get_shard_iterator(
StreamName='DataProcessingStream',
ShardId=shard_id,
ShardIteratorType='TRIM_HORIZON'
)
iterador = stream_response['ShardIterator']
enquanto Verdadeiro:
tentar:
aws_kinesis_response = client.get_records(ShardIterator=iterator, Limit=5)
iterador = aws_kinesis_response['NextShardIterator']
para registro em aws_kinesis_response['Records']:
if 'Data' no registro e len(record['Data']) > 0:
logging.info(“Nova pontuação de dados recebida: %s”, json.loads(record['Data'])))
exceto KeyboardInterrupt:
sys.exit()
No exemplo acima, estamos apenas imprimindo os dados.
Problemas com o Kinesis Pipelines
Kinesis é genuinamente benéfico, mas não vem sem desafios e deficiências. Um dos desafios significativos que você enfrentará ao trabalhar com o Kinesis pode ser chamado de 'observabilidade'.
À medida que você trabalha com vários componentes da AWS, o sistema que você cria se tornará cada vez mais complexo. Por exemplo, se você usar as funções do Lambda como produtor e consumidor e conectá-lo a diferentes sistemas de armazenamento da AWS, ficará muito difícil gerenciar e rastrear dependências e erros.
Leia nossos artigos populares relacionados ao MBA
Salário de Analista Financeiro - Recém-formados e Experientes | Principais perguntas e respostas da entrevista para RH | Opções de carreira de MBA em Marketing nos EUA |
Melhores opções de carreira nos EUA após MBA em recursos humanos | As 7 principais opções de carreira em vendas | Os empregos financeiros mais bem pagos nos EUA: da média para a mais alta |
As 7 principais opções de carreira em finanças nos EUA: leitura obrigatória | As 5 principais tendências de marketing em 2022 | Salário do MBA nos EUA em 2022 [Todas as Especializações] |
Para concluir
Não há dúvida de que transmitir dados e trabalhar com dados em tempo real é a necessidade do momento, e só vai aumentar à medida que nosso mundo produz mais e mais dados. Portanto, se você estiver interessado em dominar os truques do Kinesis, um curso profissional pode ajudar.
O Master of Science in Machine Learning and AI da upGrad , oferecido com a colaboração do IIIT-B e LJMU, é um curso abrangente de 18 meses projetado para ajudá-lo a começar com os fundamentos da exploração de dados e alcançar todos os conceitos críticos de PNL, Deep Aprendizagem, Aprendizagem por Reforço e muito mais. Além disso, você pode trabalhar em projetos do setor, suporte de carreira de 360 graus, orientação personalizada, oportunidades de networking entre colegas e muito mais para ajudá-lo a dominar Machine Learning e IA.
1. O AWS Kinesis pode extrair dados?
O Amazon Kinesis é uma solução de streaming de dados em tempo real escalável e durável que funciona capturando continuamente GBs de dados em tempo real de milhares de fontes.
2. Um stream do Kinesis pode ter vários consumidores?
Sim, usando iteradores de estilhaços, você pode fornecer vários consumidores em um stream do Kinesis.
3. Com que tipo de fila o AWS Kinesis trabalha?
O AWS Kinesis é FIFO - First In First Out - em suas operações e processos de dados.