I work on the reporting service of a large SaaS application where we offer analytics-as-a-service. One of the biggest challenge in this type of application is that reporting is extremely customizable.
The simplest feature I could think of to kickstart this series is user-controlled page size. When working with reporting-as-a-service, I noticed that there are usually 2 types of report and 1 derivative: Aggregate
Let's start by defining a Service Provider where we'll standarize how we receive the information about the page size.