This document presents a reference architecture for building data processing applications with Scala and Spark. The architecture aims to make apps scalable, reliable, maintainable, testable, easily configurable, and portable. It uses abstractions like services, repositories, and immutable domain models to decouple business logic from Spark APIs. The sample app ingests data from Kafka, validates and enriches it, and persists to HBase. Services contain pure business logic, while the application coordinates Spark execution and dependencies.