Case study · 2025
Scaling enterprise data infrastructure: a 300+ source ingestion framework
A global pharmaceutical company had more than 300 data sources and over 70 TB of data. We built one framework that brings every source in the same way, on AWS, so a new source takes days instead of weeks.
- Client
- Global pharmaceutical
- Status
- Shipped
- Services
- Empes Synthesis, Empes Infrastructure
- Scope
- Data engineering, cloud infrastructure, automation
Problem
The company’s data lived in more than 300 different systems, among them Veeva, SAP, Salesforce, Oracle and PubMed. Bringing that data in was a manual job, and the manual processes could not scale. Data sat in silos, it did not always agree from one system to the next, and it was growing faster than traditional ETL methods could handle.
What the company needed was one central platform: automated, able to grow, and able to take in, process and serve more than 70 TB of data while keeping strict governance and a clear audit trail.
Approach
We did not start with 300 connectors. We started with a framework. Each source is described in metadata (how to reach it, what to take, how often, where it goes), and the framework does the rest the same way for every source.
The work came in two phases:
- Bring the data in. One standard way in for every source, whether it speaks API, SFTP or JDBC, landing in an AWS S3 data lake.
- Shape the data. Version-controlled transformations, written in dbt and run in Amazon Redshift, so every change to a number is reviewed and can be traced.
Read the diagram as text
- One pipeline per source: Source 1: its own pipeline, then Source 2: its own pipeline, then And so on, 300+ times. Every fix has to be made in every pipeline.
- framework first
- One framework: One metadata record per source, then Shared loaders: API, SFTP, JDBC, then One lake and one way of working for every source. Adding a source is a new record, not a new project.
The method is written up in full in the guide Data ingestion at scale: a metadata-driven framework for hundreds of sources.
Implementation
Read the diagram as text
- 300+ sources: Veeva, SAP, Salesforce, Oracle, PubMed and others, reached by API, SFTP or JDBC
- Metadata: a description of each source, read by the framework
- Ingestion framework: one engine that onboards every source with minimal manual configuration
- S3 data lake: raw, then curated, then integrated, so the lineage of the data is clear
- dbt models in Redshift: modular, testable SQL transformations
- Analytics: Tableau, ThoughtSpot and Google Sheets, reading one source of truth
- Underneath every stage: Argo Workflows on Kubernetes: orchestration: scalable, containerised processing
- Underneath every stage: AWS CDK: infrastructure as code: repeatable, version-controlled environments
- Underneath every stage: GitLab CI/CD with AI bots: automated deployments; bots for merge-request review, releases and incident handling
What we built, and what each part gives the client:
- A custom ingestion framework. A metadata-driven engine that onboards 300+ sources with minimal manual configuration.
- A multi-tier data lake on AWS. Raw, curated and integrated layers in S3, so it is clear where the data came from.
- Orchestration and compute. Argo Workflows and Kubernetes, for containerised processing that scales.
- A transformation layer. dbt Cloud for modular, testable SQL inside Amazon Redshift.
- Infrastructure as code. AWS CDK, so infrastructure is repeatable and every change is versioned.
- CI/CD. GitLab for code and automated deployments, with AI bots for merge-request review, the release process and proactive incident handling.
Outcome
- data sources onboarded and managed
- 300+
- of enterprise data, with high availability
- 70+ TB
- the time it takes to onboard a source
- Weeks to days
- Scale. More than 300 different data sources onboarded and managed.
- Volume. A platform that handles more than 70 TB of enterprise data with high availability.
- Speed. Onboarding a source went from weeks to days, because of the dedicated framework.
- Trust. One source of truth for global analytics, used by teams in Tableau, ThoughtSpot and Google Sheets.
What this shows
Scale comes from better abstractions, not bigger servers. A dedicated ingestion framework, rather than individual pipelines, turned a 300-source bottleneck into a repeatable, automated system.
If you have more sources than your team can keep up with, book a call and we will look at whether a framework would pay for itself.
- Stack
- AWS, CDK, Python, dbt, Redshift, Argo Workflows, Kubernetes, GitLab CI/CD
- Type
- Strategy + implementation
- data-engineering
- aws
- redshift
- dbt
- kubernetes
- automation
- enterprise-data
- ingestion-framework