This document discusses patterns for building software applications using a Software as a Service (SaaS) model. It identifies 7 key challenges in architecting software to be delivered as a service:
1. Using a single database for multiple tenants while ensuring performance, extensibility, security and customization.
2. Enforcing data security at the architecture level to prevent unauthorized access to tenant data.
3. Handling configuration/metadata for tenants while minimizing data storage and enabling simplicity.
4. Orchestrating tenant workflows and navigation by integrating with metadata services.
5. Guaranteeing high scalability and availability while supporting tenant-specific requirements.
The document provides solutions to each challenge through