No mundo atual, dominado pelas informações, as empresas precisam adaptar-se à rápidas mudanças no modo como os dados são gerenciados, analisados e utilizados. Sistemas centrais tradicionais e arquiteturas monolíticas, enquanto suficientes historicamente, já não são adequados para atender às demandas crescentes de organizações que precisam de acesso rápido e em tempo real a insights de dados. Uma revolução na área é a arquitetura baseada em eventos de rede de dados, e quando combinada com serviços da AWS, torna-se uma solução robusta para atacar desafios complexos de gerenciamento de dados.
O dilema dos Dados
Muitas organizações enfrentam desafios significativos quando dependem de arquiteturas de dados obsoletas. Esses desafios incluem:
Lago de Dados Centralizado, Monolítico e Agnóstico de Domínio
the centralized data lake is a single storage location for all your data, making it easy to manage and access but potentially causing performance issues if not scaled properly. A monolithic data lake combines all data handling processes into one integrated system, which simplifies setup but can be hard to scale and maintain. A domain-agnostic data lake is designed to store data from any industry or source, offering flexibility and broad applicability but may be complex to manage and less optimized for specific uses.
Pontos de Pressão de Falhas na Arquitetura Tradicional
Em sistemas de dados tradicionais, podem ocorrer vários problemas. Os produtores de dados podem enviar grandes volumes de dados ou dados com erros, o que cria problemas na parte inferior do fluxo. Com a complexidade dos dados aumentando e fontes mais diversas contribuindo para o sistema, a plataforma de dados centralizada pode ter dificuldade em lidar com a carga crescente, levando a colapsos e desempenho lento. A demanda aumentada por experiências rápidas pode sobrecarregar o sistema, dificultando a adaptação rápida e a testação de novas ideias. As respostas dos dados podem tornar-se um desafio, causando atrasos na acessibilidade e uso dos dados, o que afeta a tomada de decisões e a eficiência global.
Divergência Entre os Paisagens de Dados Operacionais e Analíticos
Na arquitetura de software, problemas como posse isolada, utilização de dados não clara, pipeline de dados altamente acoplados e limitações inerentes podem causar problemas significativos. A posse isolada ocorre quando equipes diferentes trabalham em isolamento, levando a problemas de coordenação e ineficiências. A falta de entendimento claro de como os dados devem ser usados ou compartilhados pode resultar em esforços duplicados e resultados inconsistentes. Os pipelines de dados acoplados, onde componentes são muito dependentes um dos outros, dificultam a adaptação ou escalonamento do sistema, levando a atrasos. Finalmente, as limitações inerentes ao sistema podem abrandar a entrega de novas funcionalidades e atualizações, impedindo o progresso global. Solucionar estes pontos de pressão é crucial para um processo de desenvolvimento mais eficiente e responsivo.
Desafios com o Big Data
Sistemas de Processamento Online Analítico (OLAP) organizam dados de uma maneira que facilita para os分析师 explorar diferentes aspectos dos dados. Para responder a consultas, esses sistemas devem transformar dados operacionais em um formato adequado à análise e lidar com grandes volumes de dados. As técnicas tradicionais de data warehouses usam processos de ETL (Extrair, Transformar, Carregar) para gerenciar isso. Tecnologias de big data, como o Apache Hadoop, melhoraram os data warehouses resolvendo problemas de escalabilidade e sendo de código aberto, o que permitiu que qualquer empresa o usasse desde que pudesse gerenciar a infraestrutura. O Hadoop apresentou uma nova abordagem permitindo dados não estruturados ou semi-estruturados em vez de impor um esquema rígido de antemão. esta flexibilidade, onde os dados podiam ser escritos sem um esquema predefinido e estruturados mais tarde durante as consultas, tornou mais fácil para os engenheiros de dados lidar e integrar dados. Ao adotar o Hadoop, muitas vezes significava formar um time de dados separado: engenheiros de dados lidavam com a extração de dados, cientistas de dados gerenciavam a limpeza e a reestruturação, e分析师 realizavam análises. Estesetup às vezes levou a problemas devido à limitada comunicação entre o time de dados e os desenvolvedores de aplicações, frequentemente para evitar impactar os sistemas de produção.
Problema 1: Issues With Data Model Boundaries
Os dados usados para análise estão fortemente ligados à sua estrutura original, o que pode ser problemático com modelos complexos e atualizados frequentemente. As mudanças no modelo de dados afetam todos os usuários, fazendo deles vulneráveis a essas mudanças, especialmente quando o modelo envolve muitas tabelas.
Problema 2: Dados ruins, os custos de ignorar o problema
Os dados ruins frequentemente passam despercebidos até causarem problemas em um esquema, levando a problemas como tipos de dados incorretos. Visto que a validação frequentemente é adiada até o fim do processo, os dados ruins podem disseminar-se através de pipelines, resultando em correções caras e soluções inconsistentes. Dados ruins podem levar a perdas significativas para as empresas, como erros de cobrança que custam milhões. Pesquisas indicam que os dados ruins custam às empresas trilhões anualmente, gastando substancial tempo para trabalhadores de conhecimento e cientistas de dados.
Problema 3: Falta de Propriedade Única
Desenvolvedores de aplicações, que são especialistas no modelo de dados fonte, normalmente não comunicam esta informação para outras equipes. Suas responsabilidades frequentemente terminam nas suas aplicações e bordas de banco de dados. Engenheiros de dados, que gerenciam a extração e o movimento de dados, frequentemente trabalham de forma reativa e têm controle limitado sobre as fontes de dados. Analistas de dados, longe dos desenvolvedores, enfrentam desafios com os dados que recebem, levando a problemas de coordenação e à necessidade de soluções separadas.
Problema 4: Conexões de Dados Personalizadas
Em grandes organizações, vários times podem usar os mesmos dados, mas criar seus próprios processos para gerenciá-los. Isto resulta em várias cópias dos dados, cada uma gerenciada independentemente, criando um caos enredado. Fica difícil rastrear os trabalhos ETL e garantir a qualidade dos dados, levando a erros devido a fatores como problemas de sincronização e fontes de dados menos seguras. Este approach disperso desperdiça tempo, dinheiro e oportunidades.
Data mesh resolve estes problemas tratando os dados como um produto com esquemas claros, documentação e acesso padronizado, reduzindo o risco de dados ruins e melhorando a precisão e eficiência dos dados.
Data Mesh: Uma Abordagem Moderna
Arquitetura de Data Mesh
A arquitetura de data mesh redefine o gerenciamento de dados através da descentralização deownership e do tratamento dos dados como um produto, apoiado por infraestrutura de auto-serviço. Este shift permite que times tenham controle total sobre seus dados enquanto governança federal garante qualidade, cumprimento de regras e escalabilidade na organização.
Em termos simples, é um framework de arquitetura que é projetado para resolver desafios complexos de dados usando ownership descentralizado e métodos distribuídos. É usado para integrar dados de vários domínios de negócios para análises de dados abrangentes. Também é construído com base em políticas fortes de divulgação e governança de dados.
Objetivos do Data Mesh
A rede de dados auxilia diferentes organizações a obter insights valiosos em escala no que diz respeito aos dados; em resumo, lidar com um cenário de dados em constante mudança, o crescimento do número de fontes de dados e usuários, a variedade de transformações de dados necessárias, e a necessidade de se adaptar rapidamente a mudanças.
A rede de dados resolve todos os problemas mencionados acima através da descentralização do controle, permitindo que equipes gerem seus próprios dados sem que estes sejam isolados em departamentos separados. Essa abordagem melhora a escalabilidade distribuindo o processamento e o armazenamento de dados, evitando o encalhe em um único sistema central. Ela acelera insights permitindo que equipes trabalhem diretamente com seus próprios dados, reduzindo atrasos causados pela espera por equipes centrais. Cada equipe é responsável por seus próprios dados, o que aumenta a qualidade e a consistência. Utilizando produtos de dados fáceis de entender e ferramentas de autosserviço, a rede de dados garante que todas as equipes possam acessar e gerenciar seus dados rapidamente, levando a operações mais rápidas, eficientes e melhores alinhadas com as necessidades do negócio.
Princípios Chave da Rede de Dados
- Proprietário de dados descentralizado: As equipes possuem e gerem seus produtos de dados, fazendo-as responsáveis pela sua qualidade e disponibilidade.
- Dados como um produto: Os dados são tratados como um produto com acesso padrão, versão e definições de esquema, garantindo consistência e facilidade de uso entre departamentos.
- Governança federalizada: As políticas são estabelecidas para manter a integridade dos dados, a segurança e a conformidade, enquanto ainda permite a propriedade descentralizada.
- Infraestrutura de autosserviço: Equipes têm acesso a infraestruturas escaláveis que auxiliam no processo de ingestão, processamento e consulta de dados sem estrangulamentos ou dependências de equipes de dados centralizadas.
Como as Eventos Ajudam o Data Mesh?
As eventos ajudam o data mesh permitindo que diferentes partes do sistema compartilhem e atualizem dados em tempo real. Quando algo muda em uma área, um evento notifica outras áreas, mantendo todos atualizados sem precisar de conexões diretas. Isto torna o sistema mais flexível e escalável, pois consegue lidar com muitos dados e adaptar-se às mudanças facilmente. As eventos também tornam mais fácil rastrear o uso e gerenciamento dos dados e deixam cada time responsabilizar-se pelos seus próprios dados sem depender de outros.
Por fim, vamos olhar para a arquitetura de data mesh com base em eventos.
Este método baseado em eventos permite separar os produtores de dados dos consumidores, tornando o sistema mais escalável conforme os domínios evoluem ao longo do tempo sem necessidade de grandes mudanças na arquitetura. Os produtores são responsáveis pela geração de eventos, que são então enviados para um sistema de dados em trânsito. A plataforma de streaming garante que esses eventos sejam entregues de forma confiável. Quando um microserviço de produtor ou armazenamento de dados publica um novo evento, ele é armazenado em um tópico específico. Isto dispara ouvintes do lado do consumidor, como funções Lambda ou Kinesis, para processar o evento e usá-lo conforme necessário.
Aproveitando o AWS para a Arquitetura de Data Mesh com base em Eventos
AWS oferece uma suite de serviços que complementam perfeitamente o modelo de malha de dados baseado em eventos, permitindo que organizações scalem sua infraestrutura de dados, garantem a entrega de dados em tempo real e mantenham altos níveis de governança e segurança.
Veja como diferentes serviços da AWS se encaixam nesta arquitetura:
AWS Kinesis para Streaming de Eventos em Tempo Real
Em um modelo de malha de dados baseado em eventos, o streaming de eventos em tempo real é um elemento crucial. O AWS Kinesis fornece a capacidade de coletar, processar e analisar dados de streaming em tempo real em escala.
O Kinesis oferece vários componentes:
- Kinesis Data Streams: Ingere eventos em tempo real e processue-os concorrentemente com múltiplos consumidores.
- Kinesis Data Firehose: Entrega fluxos de eventos diretamente para o S3, Redshift ou Elastic search para processamento e análise adicionais.
- Kinesis Data Analytics: Processa dados em tempo real para obter insights em tempo real, permitindo loops de retorno imediatos em pipelines de processamento de dados.
AWS Lambda para Processamento de Eventos
O AWS Lambda é a infraestrutura de processamento de eventos sem servidor no modelo de malha de dados. Com a capacidade de dimensionar automaticamente e processar fluxos de dados de entrada sem a necessidade de gerenciamento de servidores,
Lambda é a escolha ideal para:
- Processar fluxos de Kinesis em tempo real
- Chamar solicitações do Gateway da API em resposta a eventos específicos
- Interagir com DynamoDB, S3 ou outros serviços da AWS para armazenar, processar ou analisar dados
AWS SNS e SQS para Distribuição de Eventos
Amazon Web ServicesServiço de Notificação Simples (SNS) atua como o sistema primário de transmissão de eventos, enviando notificações em tempo real através de sistemas distribuídos.O Serviço Simples de Fila (SQS) garante que as mensagens entre serviços desacoplados são entregues de forma confiável, mesmo na ocorrência de falhas parciais no sistema. Esses serviços permitem que microserviços desacoplados interajam sem dependências diretas, garantindo que o sistema permaneça escalável e resistente a falhas.
DynamoDB do AWS para Gerenciamento de Dados em Tempo Real
Em arquiteturas descentralizadas, DynamoDB fornece uma base de dados NoSQL escalável e de baixo latência que pode armazenar dados de eventos em tempo real, tornando-se ideal para armazenar os resultados dos pipelines de processamento de dados. Ela suporta o padrão Outbox, onde eventos gerados pela aplicação são armazenados
em DynamoDB e consumidos pelo serviço de streaming (por exemplo, Kinesis ou Kafka).
AWS Glue para Catálogo de Dados Federados e ETL
O AWS Glue oferece um catálogo de dados e serviço de ETL totalmente gerenciados, essenciais para o governo de dados federados no data mesh. O Glue ajuda a catalogar, preparar e transformar dados em domínios distribuídos, garantindo a descoberta, governança e integração organizacionais.
AWS Lake Formation e S3 para Data Lakes
Enquanto a arquitetura de data mesh se move away de data lakes centralizados, o S3 e a AWS Lake Formation desempenham um papel crucial em armazenar, segurar e catalogar dados que fluem entre vários domínios, garantindo armazenamento de longo prazo, governança e cumprimento de regras.
Event-Driven Data Mesh em Ação Com AWS e Python
Event Producer: AWS Kinesis + Python
Neste exemplo, usamos o AWS Kinesis para transmitir eventos quando um novo cliente é criado:
import boto3
import json
kinesis = boto3.client('kinesis')
def send_event(event):
kinesis.put_record(
StreamName="CustomerStream",
Data=json.dumps(event),
PartitionKey=event['customer_id']
)
def create_customer_event(customer_id, name):
event = {
'event_type': 'CustomerCreated',
'customer_id': customer_id,
'name': name
}
send_event(event)
# Simulate a new customer creation
create_customer_event('123', 'ABC XYZ')
Event Processing: AWS Lambda + Python
Esta função Lambda consome eventos de Kinesis e os processa em tempo real.
import json
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('CustomerData')
def lambda_handler(event, context):
for record in event['Records']:
payload = json.loads(record['kinesis']['data'])
if payload['event_type'] == 'CustomerCreated':
process_customer_created(payload)
def process_customer_created(event):
table.put_item(
Item={
'customer_id': event['customer_id'],
'name': event['name']
}
)
print(f"Stored customer data: {event['customer_id']} - {event['name']}")
Conclusão
Ao aproveitar serviços AWS, como Kinesis, Lambda, DynamoDB e Glue, as organizações podem realizar totalmente o potencial da arquitetura de data mesh baseada em eventos. Esta arquitetura oferece agilidade, escalabilidade e insights em tempo real, garantindo que as organizações se mantenham competitivas no cenário de dados que está evoluindo rapidamente. A adopção de uma arquitetura de data mesh baseada em eventos não é apenas uma melhoria técnica, mas um imperativo estratégico para as empresas que querem thrivin no era de big data e sistemas distribuídos.
Source:
https://dzone.com/articles/event-driven-data-mesh-architecture-with-aws