I'm a solo Laravel developer moving a production application away from a Forge-managed VPS because that setup doesn't support signing a HIPAA Business Associate Agreement. My main goal is minimizing server and DevOps maintenance rather than maximizing flexibility or scalability.
The application uses Laravel with Inertia and React, MySQL, the Laravel scheduler, one queue worker, Stripe, GitHub Actions deployments, and external services for email, storage, and video. Database queues are acceptable at the current scale. I need to run it on infrastructure where the necessary HIPAA BAA can be signed.
For Azure, I'm considering App Service, Azure Database for MySQL, a continuous WebJob for queue:work, and a scheduled WebJob for schedule:run. On AWS, I'm considering Elastic Beanstalk with RDS MySQL, but I'm unsure what the simplest reliable equivalent would be for the Laravel worker and scheduler without introducing a lot of extra infrastructure.
For developers who have used both platforms, which would you choose for a solo developer who values a hands-off operational experience? If you recommend AWS, what specific setup would you use for queue:work and schedule:run? I'm looking for a reliable managed deployment, not an elaborate architecture designed for hypothetical future scale.
3 Answers
If you choose AWS, keep the design small and explicit: use a managed web environment with RDS, run queue:work in a separate worker process or environment, and trigger schedule:run from one scheduled job. Avoid running the scheduler on every web instance, since that can cause duplicate scheduled tasks. Give the worker a least-privilege role and configure job timeouts and retries so a failing job cannot run forever or consume the web capacity.
Make sure the database and application services are not unnecessarily public, secrets are stored in a proper secrets manager, and logs, sessions, uploads, and queue payloads cannot accidentally place PHI on local disks or unapproved external services. The BAA is only the beginning; the application and operating procedures still have to meet the compliance requirements.
A more container-oriented AWS setup would be ECS Fargate with a separate service or task for the web process and worker, SQS for queues, and RDS or Aurora for MySQL. It can run reliably for a long time with relatively little routine work, but it introduces more moving parts than the managed WebJob approach. For the workload described, I would avoid adding containers and SQS unless the existing queue volume or deployment requirements justify them.
Either cloud can run Laravel, but HIPAA compliance involves much more than simply signing a BAA. Start by verifying that every service you select is HIPAA-eligible, then configure encryption, private networking, least-privilege access, backups, deployment controls, and comprehensive audit logging. You also need to track administrative access to systems containing protected health information and document why access occurred, even if you are the only operator. A managed security information and event management service can help with retention and review of those logs.
For a solo developer, I’d lean toward Azure in this particular comparison because WebJobs provide a relatively direct fit for a long-running queue worker and scheduled Laravel commands. The simpler operational model may be more valuable than AWS’s broader range of options.

That’s helpful. If you were optimizing primarily for minimal maintenance as a solo developer, would you still choose Azure over AWS?