Background
One of 27Global’s clients is a SaaS provider serving local governments – cities, counties, and public agencies – with software that manages essential community services like permitting, licensing, inspections, and code enforcement. Their platform sits at the center of how a local government tracks everything that happens on a piece of property over time: a permit application, a fire/safety inspection, a code enforcement case, a fee assessment, etc.
The platform had grown to support roughly 180 municipal customers across the country. What they needed was a way to onboard new clients quickly and seamlessly as they continued to expand, and have the infrastructure to actually support that growth.
The Problem
The legacy platform was a PHP monolith running on a single EC2 instance, with a separate folder for each client living inside that same instance. Onboarding a new municipality meant provisioning and configuring infrastructure for that specific client, one at a time, by hand. There was no shared, horizontally scalable foundation underneath the application – just an increasingly large number of per-client folders on a server that was never designed to host hundreds of tenants.
This wasn’t just a performance problem. It was a growth problem. Every new customer added operational overhead and infrastructure management effort. They needed a platform that could:
-
- Onboard new customers quickly, with minimal manual setup
-
- Scale to hundreds of tenants without re-architecting again
-
- Stay performant as usage and customer count both grew
-
- Do all of this while their existing customers kept using the legacy system in production. Modernization couldn’t mean downtime or disruption for the customers who were already live
The Solution
27Global led a greenfield rebuild of the platform’s foundation, moving to a cloud-native, service-based architecture on AWS designed around true multi-tenancy.
From folders to a tenant-aware data layer. Instead of isolating clients by file system structure on a single server, we restructured the platform around an RDS-based data layer that distributes client data across databases while presenting a single, unified access point to the application layer. The front end interacts with one consistent interface regardless of how the underlying tenant data is physically distributed, and the complexity of where a given customer’s data lives is abstracted away from the application logic that serves it.
From monolith to services. 27Global redesigned the application using a service-oriented architecture, replacing a tightly coupled monolithic deployment model with discrete, independently scalable services. This is what let the new platform take advantage of AWS-native scaling rather than being bottlenecked by the capacity of one server.
Automated tenant onboarding. In addition to the new architecture, 27Global built an internal tenant administration tool that automated the creation of new application instances. This included provisioning, configuration, and AWS resource setup for onboarding a customer, replacing the need to manually stand up infrastructure per client. This turned customer onboarding from a manual infrastructure task into a repeatable, largely automated workflow.
Timeline
The first phase involved establishing the architecture and integration requirements, followed by an infrastructure phase in which we used Infrastructure as Code (IaC) to build out the underlying AWS environment ahead of application development. From there, the team moved into an iterative build phase, delivering the platform in phased releases. Each release brought additional modules onto the new multi-tenant architecture, with the Tenant Admin tool becoming the primary mechanism for provisioning and onboarding new customer instances without manual setup.
Outcome
The new AWS-based architecture now supports a growing subset of customers as they continue to onboard additional municipalities. The shift from a single EC2/Apache instance with per-client folders to a service-based, RDS-backed multi-tenant model gives the platform a foundation that scales by configuration rather than by manual provisioning.
Results
Under the legacy model, standing up a new customer instance meant manually provisioning and configuring infrastructure on a per-client basis. With the automated tenant administration tooling layered on top of the new AWS architecture, that same onboarding process now takes a matter of minutes with a click of a button..
That difference isn’t just a convenience win, it changes the underlying economics of the platform. Onboarding no longer competes with engineering capacity for new feature work, and the client can take on new customers at a pace that scales with sales rather than being dependent on how fast infrastructure can be built by hand.