Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstalliTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
One Go repository can produce several independent service processes without splitting shared code into separate repositories. In Antonio Towami’s commerce-platform implementation, four long-running binaries—site, shops, admin, and worker—share an internal/ package tree while retaining separate responsibilities. The result is a modular monolith: process-level separation with shared code and data contracts, rather than four independently developed microservices.
What the four services do
Each executable has its own entry point under cmd/. The split follows application responsibilities, not a rule that every feature must become its own service.
| Binary | Responsibility | HTTP server |
|---|---|---|
site |
Marketplace portal and country catalogs, served on the main domain and country subdomains | Yes |
shops |
Merchant storefronts on platform subdomains and custom domains | Yes |
admin |
Back-office panel | Yes |
worker |
Background jobs through Redis queues, including email, Telegram, and imports | No |
The repository also contains an importer command. Towami describes it as a CLI utility, not a fifth long-running service.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Scan for outdated or missing drivers - takes under a minute3Repair Windows errors before they cause bigger problemsHow the code stays shared without merging the applications
The four binaries draw from one internal/ package tree. The article sketches a familiar request path—router and middleware, handler, service, repository, then model and database—with templates and DTOs alongside those layers. Application-specific paths such as handler/site/, handler/shops/, and handler/admin/ keep the web applications distinct. Each binary imports only the packages it needs; notably, the worker does not import HTTP handlers or templates.
#1 Best Overall
There are two different kinds of boundary here. Go enforces the import restriction for internal/: code outside the relevant parent tree cannot import those packages. The proposed layer order is not enforced by that directory convention. In Towami’s account, keeping dependencies flowing in the intended order relies on review and tests.
Why keep one repository?
Towami gives three reasons for keeping the applications together. They use shared product, shop, and user models; a change such as adding a database column can be carried across affected layers in one commit; and the separate binaries can be deployed as independent service units without requiring an orchestration platform, service mesh, or versioned APIs between these cooperating applications.
Those are the author’s reasons for this implementation, not measured savings or a claim that every team should choose the same layout. As he puts it: “A Go monorepo with one cmd/ entry point per service gives us process-level separation while keeping atomic refactors and one go.mod.”
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Separate processes alone do not make the system microservices. Shared code and data contracts leave these executables closely coordinated; “modular monolith” is the more useful description of the design in the article.
Builds and local development
The article says the four builds use CGO_ENABLED=0 and produce self-contained binaries, managed as independent service units. During development, each service runs in Docker with Air hot reload. A broad file watch can cause a change to shared code to rebuild services that do not need the affected packages.
Scope each Air watcher to its service
The described fix is to give each service its own watch configuration and exclude directories irrelevant to that process. For example, the worker excludes templates, handlers, routers, assets, and storage; the admin watcher excludes the site and shops handlers. The point is to keep unrelated application files from triggering that service’s rebuild, while still watching the shared code it actually uses.
Rank #4
This is a workflow detail, not evidence of a quantified speedup. The account does not establish build-time reductions or document production infrastructure beyond independent service units.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →When this boundary fits—and when to revisit it
Towami describes the setup as a good fit while applications share a schema and one team maintains them. His account flags independent ownership or a need for more independent deployment as reasons to reconsider the boundary, but it gives no numeric threshold for making that decision.
Best Value
For a team weighing the same choice, the relevant axes are the degree of shared-schema coupling, how often changes need atomic edits across applications, whether teams need independent ownership, how independently services must be deployed, and the operational burden of separating them. These are decision questions inferred from the rationale, not results of a tested comparison between architectures.
Source and scope
This account is based on Antonio Towami’s implementation article, published September 24, 2026: DEV Community. It describes one team’s architecture and workflow; it is not an independent review or a benchmark.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

