Data pipeline for analytics
Hi everyone, I need some advice on implementing data pipeline for the analytics application in healthcare
Our current tech stack / architecture is as below
- Microservices architecture
- Backend services are written in .NET Core and most of the front end is in react
- Part of the system is still legacy and it is in asp.net and MsSQL
- Databases used are MySQL, MongoDB, MSSql
- Kafka is used for pub/sub
- Applications in production running on GKE
Now we need to implement data pipeline for analytics and I am mostly leaning towards medallion architecture and what I have thought so far is
- A analytics worker service sitting in same GKE and listening to Kafka topic
- Periodically push the data to GCS bucket (bronze layer)
- Cloud scheduler triggers the cloud function at fixed interval and takes the not processed files and batch loads into BigQuery (silver layer)
- Data farm takes from BigQuery silver layer and create one BigQuery dataset per tenant (gold layer)
Suggestions I need from community
- Is this is right architecture or any better approach is there?
- Worker service when it reads from Kafka should use a temporary database to store the data and on batch full send it to GCS or should I consider Kafka itself as a storage and do not commit offset until batch is full and uploaded to GCS
- Some Kafka events may require enrichment by calling other service APIs, and bulk apis may not be available so how I can effectively handle enrichment + batch upload
- In case if I also need to connect to legacy database to poll and get the changed data how I can make sure both processes creates the correct order batches (mostly this use case should not come since CDC is enabled in legacy DBs and it publishes the changes to Kafka using a tool similar to Debezium )
u/VillageDisastrous230 — 4 days ago