AEM Multi-Tenancy Approach + RDE, Dispatcher
In a AEM AMS to AEM as a Cloud Service Migration engagement, we are dealing with 40 applications (100+ AEM Templates, 4K AEM Components) each having its own repository. We are planning to follow AEM Multi-Tenancy Best Practices to have each application tenant as a submodule to the parent aggregator using Git submodule approach. From aggregator sync mechanism will sync the code artefacts into Adobe Cloud Git. These applications share resources in terms of assets, configurations (mutable) and baseline AEM components (immutable). These are currently hosted on different 6.* versions of AEM (6.4, 6.5) and couple of them use different Java versions to compile (Java 17). Other applications use Java 11. Applications come from different Business Units and have different release cycles.
We did think of taking this opportunity a reverse way - First optimize AEM Applications, increase reusability, align to same standards and then Migrate to Cloud. But there are other business constraints that leads us to go for Cloud Migration first.
On Cloud Migration we have thought about -
1. Grouping of applications by related Business Units into multiple (3 or 4) aggregators (multiple aggregators -> multiple Adobe Cloud Programs)
2. Mono Repo (each application -> 1 Adobe Cloud Program)
3. Single Aggregator which would have ALL the 40 applications (Git doesn't have an upper cap we believe on number of submodules that an aggregator can have, but concern is the deployment time which is more than 1 hour per deployment).
Queries -
Looking at resource sharing, more reusability of AEM Templates, Components, integrations gateway, cost for maintainability, Which one would you propose and why ?
How would AIO CLI Deployment work for each application team with feature development on RDEs ? We need that to be simple, quick-n-fast. If we plan for CLI to be executed on the aggregator then the whole purpose of RDE and quicker feature development is lost. There can be grouped aggregators but we are looking for something really quick and easy for developers daily dev activities so that the speed of delivery doesn't get affected significantly. Please share your thoughts.
Dispatcher. There can be only 1 dispatcher archive package which can be deployed on Cloud. We are thinking of a Common Repository with a Single Dispatcher Module on Client Aggregator Repository and Adobe Cloud Git where all dispatchers will need to be "merged" or "classified" as far as possible. Please recommend if this sounds fine, or if you have other ideas and Best Practices.
What will be your recommendations for Production Rollback approach ?
It's a tricky solution to harvest, but an interesting one for sure. Thank You so much in advance for all your views, advises, recommendations. These will only enrich us more and more.
Best Regards.