Os desafios técnicos do processamento de dados em tempo real.

upload nuvem 1
Enquanto isso, os dados financeiros e contábeis também estão dentre os principais tipos de dados beneficiados pelo processamento em tempo real, trazendo redução dos erros nestes setores e evitando prejuízos e multas.

Compartilhe

Os custos de armazenamento e recursos de computação estão cada vez mais acessíveis e a evolução das tecnologias presentes nos dias atuais mostram que os modelos de processamento em lotes D+1 estão ficando no passado.

Além disso, a necessidade por dados em tempo real não é apenas um anseio de negócios para guiar as decisões estratégicas de uma organização, pois os dados em tempo real reduzem os erros e os riscos de diversos setores. Enquanto isso, os dados financeiros e contábeis também estão dentre os principais tipos de dados beneficiados pelo processamento em tempo real, trazendo redução dos erros nestes setores e evitando prejuízos e multas.

Neste sentido, nós aqui na Dattos – que sempre evoluímos nossas soluções comercializadas – iniciamos a revitalização de nossa plataforma através de uma arquitetura moderna e vamos entregar soluções que facilitarão cada vez mais a implantação do continuous accounting.

Atendendo então a necessidade de aquisição de dados atuais em tempo real (mas sem afetar a operação normal das soluções já desenvolvidas), iniciamos o desenvolvimento da nova versão da plataforma Dattos integrando um pipeline de dados de streaming onde os dados podem ser processados, fundidos e calculados em tempo real.

flow management concept lkbu3k2

Mas o que é um pipeline de dados de streaming?

Um pipeline de dados é um software que permite o fluxo uniforme e automatizado de informações de um ponto a outro. Esse software evita muitos dos problemas comuns que a empresa enfrenta: corrupção de informações, gargalos, conflito entre fontes de dados e geração de entradas duplicadas.

O streaming de pipelines de dados, por extensão, é uma arquitetura que lida com milhões de eventos em escala e em tempo real. Como resultado, você pode coletar, analisar e armazenar grandes quantidades de informações. Esse recurso permite aplicativos, análises e relatórios em tempo real.

Mas existem alguns desafios a serem vencidos e podemos descrever alguns dos principais desafios na construção de aplicativos em tempo real.

Com a implementação do processamento de dados em tempo real nossa plataforma recebe atualizações para ser facilmente escalável, ter a capacidade de processamento ordenado, contínuo e consistente e o mais importante ser tolerante a falhas sejam elas no momento da captação dos dados ou no processamento destes dados. 

Desafio da escalabilidade
Quando ocorrem falhas no sistema, os dados recebidos provenientes de cada fonte podem aumentar de uma taxa de envio de kilobits por segundo para megabits por segundo e, quando somamos as outras fontes, chegamos a gigabits por segundo. 

Por isso, a capacidade deve ser elástica onde recursos e servidores são adicionados à medida que ocorrem os gargalos. Isso deve acontecer preferencialmente de forma automática e instantânea, aumentando exponencialmente a quantidade de dados brutos recepcionados e processados. Projetar aplicativos em escala é crucial para trabalhar com dados de streaming.

Desafio da ordenação
Não é trivial determinar a sequência de dados no fluxo de dados e isso pode ser muito importante em algumas aplicações. Quando os desenvolvedores depuram um problema observando um estado uma foto do que foi recebido, é crucial que cada linha esteja em ordem. 

Frequentemente, há discrepâncias entre a ordem do pacote de dados gerado e a ordem em que ele chega ao destino. Constantemente, também há diferenças nos carimbos de data/hora pois os relógios das fontes que geram dados podem estar com pequenos atrasos ou adiantados. 

Ao analisar fluxos de dados, nossos aplicativos estão cientes de suas suposições sobre as transações. Utilizamos em nossa arquitetura o padrão SAGA de processamento de eventos onde garantimos a Atomicidade: ou todas as transações são executadas, ou todas são descartadas, a Consistência: a integridade referencial é dada por todos os bancos de dados locais e pelo código da aplicação e a Durabilidade: é garantida por mensagem brokers e bancos de dados.

Quando à consistência e durabilidade
Outra dificuldade enfrentada é a consistência e o acesso aos dados. Estes são sempre um problema no processamento do fluxo de dados. Os dados lidos a qualquer momento já podem ter sido modificados e por sua vez estão obsoletos na fonte, o que faz com que exista em nossa arquitetura o processamento de eventos, atualizando e informando o descarte ou não de um dado já processado. A durabilidade dos dados também é um desafio ao trabalhar com fluxos de dados na nuvem, pois estes estão também distribuídos em mais de um banco de dados atendendo às partes distribuídas que formam a solução. 

Desafio da tolerância à falhas e garantias dos dados
Como o processo é contínuo, a tolerância à falhas é por sua vez a garantia da persistência. A persistência dos dados é uma consideração importante ao trabalhar com processamento de fluxo ou qualquer sistema distribuído.

Com dados provenientes de várias fontes e locais, em diversos formatos e volumes, nossa plataforma precisa responder a duas perguntas: como evitar interrupções de um único ponto de falha? Podemos armazenar fluxos de dados com alta disponibilidade e durabilidade?

Ou seja, nossa solução precisa ter escalabilidade para que o fluxo de eventos de dados não seja um gargalo problemático caso ocorra uma falha nos pipelines de entrada e processamento. E ainda sim, se isso ocorrer estar preparado para receber um alto volume de dados.

Finalmente, por meio de várias regras predefinidas e da alta tolerância a falhas de nossa  arquitetura distribuída, a operação estável e normal de todo o sistema é garantida.

t91c1hzc5 u01t2gucvr9 53983b30fcfe 512

Artigo criado por:

Leonardo Norbiato

Arquiteto de Software da Dattos com mais de 20 anos de experiência em desenvolvimento de softwares e criação de soluções empresariais, passando por diversas áreas e empresas que criam softwares seja como produto ou como suporte a seus negócios, atuando desde desenvolvedor à arquiteto de softwares, onde nos últimos anos além de projetar a arquitetura de software atua na gestão de pessoas coordenando e criando times de alto rendimento.