Designing Batch Data Pipelines End-to-End