Complex deploys take many forms. Fundamentally code and assets have to make it from source control onto one or several servers, often with execution steps interspersed, often in a particular order (bad things happen if you apply database changes at the wrong time). You may be punching above the Elastic Beanstalk/Heroku weight class, but the rest of the scale ranges from having a multi-part continuous integration pipeline all the way to managing fleets of Kubernetes pods.
I meant "expose" as in "to users"; but that's only one possible reason to split architectures. I worked on a project back in the day where the frontend was farmed out to a Flash agency while we developed the backend, and splitting was the easiest way to ensure neither party had to wait more than necessary on the other. If whatever you're delivering is a self-contained whole and it's sufficiently simple that the need to break it up isn't obvious on its face, you probably have more important things to do than break it up!
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.