Data Engineer, Patterns & Architecture The future — Portugues
Deep-dive into Microservices Patterns with Stream Process
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.
Industry 4.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.
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.
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.
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 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.
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.
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
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/
- 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:
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
- 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