Visão geral
A transmissão de dados é o fluxo contínuo de informações em tempo real e a base do modelo de software da arquitetura orientada a eventos. Aplicações modernas podem usar transmissão de dados para viabilizar o processamento, o armazenamento e a análise de dados.
Uma forma de pensar na transmissão de dados é um log de alterações ou de eventos que ocorreram em um conjunto de dados que muda extremamente rápido.
Os grandes conjuntos de dados altamente dinâmicos que podem ser fontes de transmissão de dados é muito variado e podem incluir elementos como transações financeiras, dados de sensores da Internet das Coisas (IoT),operações logísticas, pedidos de varejo ou monitoramento de pacientes em hospitais. A transmissão de dados é como uma próxima geração de sistema de mensageria e se adéqua a situações que exigem respostas em tempo real a eventos.
Um exemplo de transmissão de dados são os eventos de dados, que formam a base da arquitetura orientada a eventos. A arquitetura orientada a eventos integra microsserviços levemente acoplados como parte do desenvolvimento ágil.
Por que transmissão de dados é importante?
Os usuários de aplicações esperam experiências digitais em tempo real. Aplicações capazes de consumir e processar transmissão de dados melhoram desempenho e a satisfação dos clientes.
Tradicionalmente, aplicações que precisavam de respostas a eventos em tempo real dependiam de bancos de dados e sistemas de processamento de mensagens. O problema é que esses sistemas não conseguem acompanhar a imensa quantidade de dados produzida atualmente. Por exemplo, sistemas tradicionais orientados a solicitações têm dificuldade para reagir rapidamente a solicitações de dados altamente dinâmicas de várias fontes.
No modelo de transmissão, os eventos são gravados em um log em vez de armazenados em um banco de dados. Os consumidores de eventos podem ler o log a partir de qualquer parte do fluxo e ingressar nele a qualquer momento.
O processamento de fluxo de eventos pode ser usado para detectar padrões. Ele usa uma plataforma de transmissão de dados para ingerir eventos e processar ou transformar o fluxo deles.
Quais são casos de uso comuns de transmissão de dados?
Ao pensar em transmissão de dados, pense em aplicações em tempo real. Alguns casos de uso comuns incluem:
- Experiências digitais que dependem de acesso imediato às informações.
- Aplicações demicrosserviços compatíveis com o desenvolvimento ágil de software.
- Cenários de transmissão que modernizam aplicações orientadas a bancos de dados anteriormente orientadas ao processamento em lotes.
- Análises de dados em tempo real, especialmente aquelas que ingerem informações de várias fontes.
- Edge computing que une dados de dispositivos e sistemas diversos e divergentes.
Aplicações criadas com base em dados de sistemas de mensageria, localização geográfica, negociação de ações, detecção de fraudes, gerenciamento de inventário, análise de marketing, monitoramento de sistemas de TI e IoT industrial são usos bastante comuns para transmissão de dados.
O Apache Kafka funciona com transmissão de dados?
O Apache Kafka, uma plataforma distribuída de mensageria, tornou-se uma das formas mais conhecidas de trabalhar com grandes volume de transmissão de dados em tempo real.
Os desenvolvedores de software usam o Kafka para criar pipelines de dados e aplicações de transmissão. O Kafka possibilita às aplicações:
- Publicar e se inscrever em fluxos de registros.
- Armazenar fluxos de registros.
- Processar registros à medida que eles ocorrem.
O Kafka foi projetado para gerenciar a transmissão de dados. Ele é rápido, escalável horizontalmente e tolerante a falhas. Como o Kafka minimiza a necessidade de integrações point-to-point para o compartilhamento de dados em determinadas aplicações, ele é capaz de reduzir a latência a milésimos de segundos. Isso significa que os dados são disponibilizados mais rapidamente aos usuários, o que é uma vantagem para os casos de uso que exigem que a informação esteja disponível em tempo real, como operações de TI e comércio eletrônico, entre outros.
O Apache Kafka é capaz de processar milhões de pontos de dados por segundo, o que torna essa solução ideal para desafios que envolvem big data. Em muitos casos de uso de processamento de dados, como IoT e mídias sociais, o volume de informações vem aumentando exponencialmente e, em pouco tempo, pode sobrecarregar aplicações que se baseiam na quantidade de dados atual.
Quais são alguns desafios da transmissão de dados?
Por definição, os fluxos de dados precisam entregar informações sequenciadas em tempo real. Aplicações de transmissão de dados dependem de fluxos consistentes e altamente disponíveis, mesmo em momentos de grande atividade. Entregar e/ou consumir um fluxo de dados que atenda a essas qualidades pode ser desafiador.
A quantidade de dados brutos em um fluxo pode aumentar rapidamente. Considere o crescimento exponencial repentino de novos dados criados por negociações de ações durante uma liquidação de mercado, posts em mídias sociais durante um grande evento esportivo ou atividade de logs durante uma falha do sistema. Os fluxos de dados precisam ser escaláveis por padrão. Mesmo em momentos de alta atividade, eles precisam priorizar o sequenciamento adequado, a consistência e a disponibilidade dos dados. Eles também devem ser projetados para durabilidade, no caso de uma falha parcial do sistema.
Em um ambiente distribuído de nuvem híbrida, um cluster de transmissão de dados tem requisitos especiais. Os brokers de transmissão de dados típicos são stateful e devem ser preservados no caso de um reinício. A escalabilidade requer uma orquestração cuidadosa para garantir que os serviços de mensageria se comportem como esperado e que nenhum registro seja perdido.
Por que usar um serviço de transmissão de dados?
O desafio de entregar uma plataforma de transmissão de dados complexa, altamente disponível e em tempo real pode consumir muitos recursos. Isso geralmente vai além do know-how e da capacidade de hardware de uma organização interna de TI.
É por isso que muitos usuários de transmissão de dados optam por um serviço de nuvem gerenciado, no qual a infraestrutura e o gerenciamento do sistema são transferidos para um provedor externo. Com essa opção, as organizações conseguem se concentrar nas suas competências principais e não no gerenciamento e na administração de uma solução complexa de transmissão de dados.