AEM aacs multi site
Hi everyone,
I’m looking for some guidance on an architectural decision for a multi-site setup on AEM as a Cloud Service.
I need to create additional websites on the same AEM Cloud program. Some of these new sites will share part of the existing platform (authoring model, utilities, or components), while others may require different structures, custom components, or even different frontend approaches. In short, it’s a mix of shared and site‑specific functionality.
On AEM on‑prem, my usual approach would have been:
- One **common multi‑module project** containing shared utilities, services, and reusable components.
- One **separate multi‑module project per site**, each deployable independently (its own pipeline, its own release cycle).
- The shared project consumed as a dependency by each site.
### With AEM as a Cloud Service, I’m trying to understand the best practice for this scenario.
From what I know, AACS encourages a **single Git repository** and a **single pipeline** per program, but at the same time multi‑site architectures often require clear separation and modularity.
So I’d love to hear from the community:
1. **How do you usually structure multi‑site solutions on AEM as a Cloud Service** when:
- some components are shared across sites,
- but other features, templates, or frontend frameworks differ?
2. **Is a single Git repository with a multi‑module structure** the recommended approach (e.g. `core-common`, `core-siteA`, `core-siteB`, `ui.apps.common`, `ui.apps.siteA`, …)?
Any naming or packaging patterns you found effective?
3. **How do you handle deploy independence** in a Cloud environment where you cannot deploy each module separately?
Any governance or branching strategies that help isolate work for different sites?
4. **Are there use cases where you would actually split multiple Git repositories** within the same Cloud Manager program (e.g. drastically different tech stacks or teams)?
I’m not looking for guidance on a specific number of sites — more for a general best practice on how to scale the codebase cleanly while avoiding regressions and keeping the architecture maintainable over time.
Any experience, reference architecture, or real‑world lessons learned would be greatly appreciated.
Thanks a lot!