[{"data":1,"prerenderedAt":70},["ShallowReactive",2],{"\u002Fcase-study\u002Fmm-high-availability":3},{"id":4,"title":5,"body":6,"cover":48,"date":49,"description":50,"excerpt":48,"extension":51,"meta":52,"navigation":54,"path":55,"portfolio_link":56,"portfolio_name":57,"seo":58,"stem":59,"technology":60,"__hash__":69},"caseStudies\u002Fcase-study\u002Fmm-high-availability.md","High Availability",{"type":7,"value":8,"toc":42},"minimark",[9,13,18,21,24,27,31],[10,11,12],"p",{},"With the sucess of our products and effective marketing, we achieved multiple waves of new customers. Each one proved the importance of monitoring and redundant systems.",[14,15,17],"h2",{"id":16},"overview","Overview",[10,19,20],{},"The first step into a distributed system was to create a VPN for the production environment. This connected all production systems, exposing only an Nginx Load Balancer to the public internet. Behind the load balancer, multiple php-fpm application servers handled synchronous traffic, while a separate collection of worker servers handled queued\u002Fasync workloads. Additional servers provided Redis caches, and a MariaDB cluster.",[10,22,23],{},"The goal was to be able to provision new servers and remove as needed, with minimal configuration changes required. Most successfully, we were able to scale app servers and workers multiple times without disruption.",[10,25,26],{},"Eventually this would expand to include many other resources, including LLM microservices, Typesense, Soketi, and RabbitMQ.",[14,28,30],{"id":29},"orchestration","Orchestration",[10,32,33,34,41],{},"Orchestration was a mix of manual management in AWS \u002F DigitalOcean \u002F Forge, and eventually utilizing Terraform with ",[35,36,40],"a",{"href":37,"rel":38},"https:\u002F\u002Fgithub.com\u002Fmadewithlove\u002Fterraform-provider-laravelforge",[39],"nofollow","madewithlove\u002Fterraform-provider-laravelforge"," to move towards an Infrastructure as Code paradigm.",{"title":43,"searchDepth":44,"depth":44,"links":45},"",2,[46,47],{"id":16,"depth":44,"text":17},{"id":29,"depth":44,"text":30},null,"2024-12-31","High Availability architecture for a multi-tenant SaaS","md",{"client":53},"MarketMuscles, LLC",true,"\u002Fcase-study\u002Fmm-high-availability","\u002Fportfolio\u002Fmarket-muscles","MarketMuscles",{"title":5,"description":50},"case-study\u002Fmm-high-availability",[61,62,63,64,65,66,67,68],"Laravel","Forge","Envoyer","Pulse","Sentry","Flare by Spatie","RabbitMQ","Soketi","Dxwn5blhOlpGMnAn_rPpEao5PV99jjS3fqq1BlcDLPc",1790357551950]