A second service is a second deploy, a second log, and a network call where a function call used to be. That is worth it when a boundary must ship and fail on its own. It is not worth it because a diagram called the boxes “scalable.”
Martin Fowler’s Monolith First is still the useful argument: get a well-structured single application running, and split only when you know which boundary hurts. We use that as a design rule, not as a fashion note.
What we mean by modular
One Laravel application. Modules with their own folders and their own tables. Bookings does not query billing’s tables because it was faster on a Friday. Notifications does not import a controller from either module. The deployable is still one.
How we build scalable web applications says you can add a module later without demolition. This article is the boundary that makes “later” possible. Why we model the domain before writing controllers is where that line should come from: the domain, not an org-chart slide.
When a second service is justified
Split a process out when at least one of these is true:
- A team is actually on call for that part, and it must ship on a different cadence from the rest
- A workload will knock over the app if it shares a process — a huge export, a noisy integration, a CPU spike you have already seen
- The boundary has been stable for long enough that you are tired of deploying it with unrelated changes
“We might need scale someday” is not on the list. More clients are not a split either. API-first backends are still one backend with several faces. A Nuxt site and a phone app do not require two business-logic services.
What we will not build
- Three services sharing one database, called microservices. You kept the coupling and added the network.
- A new repository for a feature one person maintains, plus a queue and a cache, because a slide had those icons.
- A rewrite of a working modular app because a conference talk used Kubernetes.
If the modules are a mess, fix the boundaries inside the app. A network boundary will not clarify a domain you have not named.
Straight next step
If someone has proposed a service per feature, tell us which workflow would move and who would operate it. If nobody is on call for the second service, the answer is a module, not a platform.



