N-tier applications separate an application into logical layers or tiers for increased maintainability and scalability. This includes a presentation tier for user interfaces, a middle tier for business logic and data access, and a data tier for data storage. Separating an application into tiers allows individual tiers to be updated or scaled independently without redesigning the entire application. A typical n-tier application implementation uses separate projects or services for each tier.