Architecting a Scalable Software as a Service
This post can serve as a reference document that highlights some of the best practices in architecting your Software-as-a-Service (SaaS) web application.
Why Software as a service?
Software as a service (SaaS) is a flexible type of software distribution model that can be operated by an individual or a 1000~ people organization. The advent of Cloud services has made it possible for anyone to independently run their own Software as a service and build a freemium business on top of it.
It has a relatively simpler system design compared to other types of software services. But without a proper baseline architecture, SaaS can become a gargantuan mess if we are not thoughtful in designing it upfront. I’ve seen SaaS platforms that ended up becoming a huge but fragile monolithic web application with redundant functions lumped within.
The goal of this article is to provide you an architecture that will set up your SaaS for scalability and maintainability. This was written to be used as a high-level design reference.
Hopefully, by the end of this article, you won’t find building SaaS platforms so intimidating!