Data Engineer, Patterns & Architecture The future — Portugues

Igor De Souza
Data Hackers
Published in
6 min readJun 18, 2020

Deep-dive into Microservices Patterns with Stream Process

Image created by me http://www.igfasouza.com/

Bao ou nao?

TL;DR

Na quarta fase da revolução industrial várias tecnologias são usadas para se ter a análise dos dados em tempo real, manter, organizar e construir isso por outro lado é um trabalho complexo e complicado. Nos últimos 30 anos várias ideias de centralizar o banco de dados em um único lugar como a fonte unida e verdadeiras dos dados vem sendo implementado nas empresas, como por exemplo: Data wareHouse, NoSQL, Data Lake, Lambda & Kappa Architecture.

Por outro lado a Engenharia de Software vem aplicando ideias para separação das aplicações com o objetivo de facilitar e melhorar o desempenho das aplicações, como por exemplo microservices.

A ideia é usar os patterns do MicroService em data e dividir o modelo em vários menores. E uma boa maneira de dividir é usar o modelo é usando os princípios do DDD. E é assim que eu tento explicar e definir DataMesh & Data Fabric.

Vale ressaltar aqui que eu simplifiquei o conceito ou ideia do Data Mesh & Data Fabric assim como eu simplifiquei a ideia ou conceito de Streaming & Kafka.

Ideia

Eu fui convidado para palestrar no meetup de Engenharia de dados e eu tive a ideia de criar essa apresentação, onde eu mostro a minha interpretação, visão e opinião sobre DataMesh.

https://www.meetup.com/engenharia-de-dados/events/271280539/

Industry 4.0

Image inspired by https://aethon.com/mobile-robots-and-industry4-0/

Nos últimos anos as ideias e as arquitecturas na área de dados como Data wareHouse, NoSQL, Data Lake, Lambda & Kappa Architecture, Big Data e outros, apresentam a ideia de que os dados devem ser consolidados e agrupados em um único local, uma ideia de um único lugar como a fonte unida e verdadeiras dos dados.

Image created by me

A imagem ilustra o conceito de agrupar os dados em um banco de dados como destino final.

Mas já na área de desenvolvimento nos últimos ano as ideias e as arquiteturas apresentam que as aplicações devem ser isoladas com o objetivo de facilitar e melhorar o desempenho das aplicações e facilitar a manutenção. Uma das ideias apresentadas para a divisão seria o uso do DDD e Microservices.

Image created by me

Se compararmos a área de dados com a área de desenvolvimento vemos que as duas estão falando justamente o oposto, uma quer unificar e a outra quer dividir.

E é exatamente essa a ideia que o DataMesh apresenta, ele apresenta a ideia de que devemos separar os dados usando as ideias do DDD e do Microservices para gerar aplicações menores e mais simples, onde a manutenção e desempenho são melhores.

Jeffrey T. Pollock — Webinar future data integration datamesh and Golden Gate Kafka
Image from https://martinfowler.com/articles/data-monolith-to-mesh.html

Olhando para os Patterns de Microservice vemos que existem alguns Patterns voltados a dados. E se analisarmos eles com mais detalhes, vemos que todos eles usam ou estão ligados a Stream Processing.

A idea dessa imagem veio do livro Microservice Architecture: aligning principles, practices, and culture. Mas o livro nao contem essa imagem e eu crie ela basedo nesso blog post: https://medium.com/@madhukaudantha/microservice-architecture-and-design-patterns-for-microservices-e0e5013fd58a

A ideia aqui é que em todos os Designer Pattern relacionados a Data o Streaming pode ser aplicado, e que ferramentas como Apache Spark, Apache Flink e Apache Kafka são as que estão mais em uso na atualidade. Existe um eco system em torno disso com várias outras tecnologias também.

Image created by me

Eu criei uma tabela de comparação entre as 3 principais opções de streaming no mercado, mas a ideia aqui é de que é mais minha visão e não deve ser usada como uma bala de prata.

Image created by me

Lista dos Livros que usei para compor a ideia. (Vale lembrar aqui que existem vários artigos nessa minha linha de raciocínio.)

  • Domain Drive Designer — Eric Evans
  • MicroService Architecture: aligning principles, practices, and culture — Irakli Nadareishvili, Ronnie Mitra, Matt McLarty & Mike Amundsen
  • Kubernetes Patterns: Reusable elements for designing Cloud Native applications — Bilgin Ibryam & Rolanb Hub
  • Designing Data Intensive Applications — Martin Kleppmann
  • The Fourth Industrial Revolution — Klas Schwab
  • The Inevitable — Kevin Kelly
Image created by me

Links para artigos que usei para compor a idea:

  • Streaming as a Database

https://yokota.blog/2019/09/23/building-a-relational-database-using-kafka/

https://yokota.blog/2020/01/13/building-a-graph-database-using-kafka/

https://www.kai-waehner.de/blog/2020/03/12/can-apache-kafka-replace-database-acid-storage-transactions-sql-nosql-data-lake/

  • Event Driven & Data Mesh

http://jacekmajchrzak.com/event-driven-data-mesh-introduction/

  • Serverless era

https://blogs.oracle.com/cloud-infrastructure/serverless-big-data-pipelines-architecture

  • Martin Kleppmann | Kafka Summit SF 2018 Keynote (Is Kafka a Database?)

https://www.youtube.com/watch?v=v2RJQELoM6Y

  • The Kubernete native

https://medium.com/@graemecolman/the-new-kubernetes-native-d19dd4ae75a0

https://developers.redhat.com/blog/2020/05/11/top-10-must-know-kubernetes-design-patterns/

  • Microservices Patterns with GoldenGate

https://www.slideshare.net/jtpollock/microservices-patterns-with-goldengate

  • Webinar future dataintegration-datamesh-and-goldengatekafka

https://www.slideshare.net/jtpollock/webinar-future-dataintegrationdatameshandgoldengatekafka

  • Pondering Distributed Data Lakes Idea

https://www.youtube.com/watch?v=mnvxeU3oDyQ

  • What is a service mesh?

https://www.youtube.com/watch?v=QiXK0B9FhO0

Twitter a serem seguidos:

@KaiWaehner
@bibryam
@gschmutz

Conclusões

  • Dividir para conquistar é uma boa maneira de começar e alcançar melhores resultados em menor tempo e custo
  • Várias empresas falham na implementação de Big Data, Data Lake e Data warehouse porque elas tentam fazer um projeto grande e complexo
  • Streaming esta em todo lugar
  • Nos estamos na area do multi-cloud and hybrid-cloud
  • Arquitetura serverless está cada vez mais popular
  • E não devemos nos preocupar com o nome e sim com o objetivo
  • Eu simplifiquei de uma forma que eu passei a idea de que
    Sim, já estamos na era Serverless;
    Sim, já estamos na era do Kubernetes nativo;
    Sim, Streaming é um banco de dados;
    Sim, o Streaming está em todos os lugares;
    Sim, dividir para conquistar;
    Sim, Microservice patterns;
    Sim, Kubernetes Patterns é o plus;

Link para o slide usando na apresentacao:

https://www.slideshare.net/IgorSouza137/data-engineer-patterns-architecture-the-future-deepdive-into-microservices-patterns-with-stream-process

Link para o video gravado no youtube:

https://www.youtube.com/watch?v=iLLduZS5UGw&feature=youtu.be

Append:

  • Big Data

http://www.igfasouza.com/blog/what-is-big-data/

  • Apache Spark

http://www.igfasouza.com/blog/what-is-apache-spark/

  • Apache Kafka

http://www.igfasouza.com/blog/what-is-kafka/

  • Stream processing

http://www.igfasouza.com/blog/what-is-stream-processing/

  • Data warehouse

https://www.oracle.com/ie/database/what-is-a-data-warehouse/

  • Data lake

http://www.igfasouza.com/blog/what-is-data-lake/

  • Data lakehouse

https://databricks.com/blog/2020/01/30/what-is-a-data-lakehouse.html

  • Industry 4.0

https://www.kai-waehner.de/blog/2020/04/21/apache-kafka-as-data-historian-an-iiot-industry-4-0-real-time-data-lake/

https://www.forbes.com/sites/bernardmarr/2018/09/02/what-is-industry-4-0-heres-a-super-easy-explanation-for-anyone/#166bad289788

  • Data Fabric

https://www.forrester.com/report/Now+Tech+Enterprise+Data+Fabric+Q2+2020/-/E-RES157315#

  • DataMesh

https://martinfowler.com/articles/data-monolith-to-mesh.html

  • Microservice

https://microservices.io/

--

--

Igor De Souza
Data Hackers

Developer Advocate, Big Data Evangelist. #BigData #DataLake #IoT #AppDev Hadoop & Spark Developer