We have around 100 websites that all run on the same simple Laravel-based CMS. Each site is a separate standalone instance with its own database. The websites are basic service business sites, averaging under 1,000 visitors/day each.
Current Setup:
- Sites are distributed across 3 VPS servers.
- Each has its own free SSL certificate, which requires manual renewal (a pain).
- Sites send notification emails via SendGrid.
- Weekly backups go to Amazon S3.
- Akamai serves static snapshots of pages if the server is down - our last-resort failover layer.
This setup has become difficult to maintain - instability, performance inconsistency and high costs are ongoing issues.
Goals:
I want to simplify the entire setup while keeping costs reasonable and minimizing DevOps work. I’m a software engineer but relatively new to managing infrastructure at this scale. Here’s my rough plan:
- Convert the CMS to support multi-tenancy with dynamic DB switching based on domain/subdomain.
- Run a small number of CMS instances behind a load balancer.
- Use a centralized Redis server for caching/session/queue.
- Host all tenant databases on a dedicated DB server (e.g., MySQL/RDS).
- Store media (logos, etc.) on S3 or similar.
- Automate SSL cert renewal
Where I Need Help:
The big question is how to best implement this in a way that’s low-maintenance and cost-effective.
I’ve looked into solutions like Heroku, Laravel Vapor, AWS Elastic Beanstalk, Kubernetes, etc., but none seem super clear or easy to adopt without a steep DevOps learning curve.
I’ve used ploi.io with DigitalOcean for personal projects and really like the simplicity. I noticed Ploi now offers features like Redis, load balancers and managed DBs.
Is there a plug-and-play platform or combination of tools you’d recommend for this kind of Laravel multi-tenant deployment - ideally with built-in support for SSL, backups and scaling without requiring a full-time DevOps engineer?
Thanks in advance!