Get Your AEM Together: AEM Compose, the Ultimate DevEx Tool

AEM Compose is the next generation of tooling built to manage the full lifecycle of AEM instances. It’s our third iteration on adaptTo() over this topic – previously we brought to you GAP (Gradle AEM Plugin) tooling in 2018 and then in 2021. We treat Developer Experience (DevEx) as a vital part of every project delivery. Over those 5 years, we learned a lot, and gathered a massive amount of feedback from the community. AEM Compose is our bold response to these insights. It’s blazing fast, feature-rich, and built from the ground up as a native application (written in Go).

We have taken industry best practices:

and brought them together into a single, complete solution that allows you to manage your AEM instances in every scenario (local, remote machine). All with no need to install any extra software.

First and foremost, we wanted to address the needs of developers working with AEM locally (be it AEM 6.x or AEMaaCS SDK). Our aim was to reduce the setup time of every developer to minutes, irrespective of the complexity of the project and the skills of the engineer (or even non-technical person) setting up the environment. AEMC was designed in a way where it can be seamlessly added to not only new but also existing projects. Over the years everyone has built their own bespoke solutions to automate environment setup. AEM Compose is not supposed to supersede all of them, but rather complement them, by providing a robust way to manage AEM itself. Since it’s an OS native binary package, it can be integrated with Docker, Vagrant, Chef, Ansible, Packer, and any other automation tooling you could be using today.

As part of the first release, we have prepared sample integrations with Ansible & Docker that can be used as a starting point for anyone who wants to integrate AEM Compose with their existing tooling. For local development needs it can be used as a standalone tool as well, straight from your favourite command line or directly from IDE.

During the presentation, we would like to focus on key features & functionalities that AEM Compose provides out of the box. We would also like to show you a quick demonstration of how easy it is to add to an existing project and take immediate advantage of local environment setup automation. We will prove that setting up AEM locally can be simple, quick and fun! We want everyone to say goodbye to getting started guides and replace them with fully automated environment setup.

Andres Bott

feature request: debian package :D

Tomasz S

Sounds like a great plan. Added to internal to do list. If you wanna track progress feel free to raise it as an issue in GitHub (if you don't I will do it soon) https://github.com/wttech/aemc/issues

Piotr

Do you think such a tool is really needed, after Adobe providing us with Rapid Development Environments?

Tomasz S

AEMC will not be needed any more when: 1. All clients move to onPrem 2. RDEs become free to use 3. Adobe removes AEM sdk zip concept completely since it will be no longer needed due to point no 2

Cognifide/WTT has a rather long track record of creating great tools but not keeping them updated over time (think SonarQube AEM rules). How long will this be supported and kept updated?

Tomasz S

Sorry that we let you down there. We had a very long debate what to do with SQ. As a developer community in WTT we have stopped actively using Sonarqube, also we saw less and less value add in these rules over the years. Today we favour static code analysis rules that run on your local machine in build time. It is a case where there was a much better, more sustainable solution to the same problem and we switched to that. In the same way we have closed AETs and Bobcat projects in the past.

Tomasz S

I am still around for the lightning talks - if you want to talk about the sonarqube stuff - ping me - unfortunately you didn't leave your name here :)

dzenisiy

Is this tool Vagrant based?

Tomasz S

No, works on native file system directly for maximum performance (AEM does not run well inside virtualization tools especially when you want to have for example 3 instances (author, publish, preview). Mostof the OS compatibility issues are addressed by Go automatically

Anian Weber

Is there a support to automatically install Addons like the CIF Addon?

Tomasz S

Yes, you can install packages automatically, add configs etc - the possibilities are pretty much endless

Can configure / preserve IMS/Cloudconfigs?

Tomasz S

Yes you can use it to setup configs which reside in repo (like cloud configs), you can do osgi configs as well, we deal with crypto support as well so that you don't need to keep keys in plain text

Krystian

More precisely just create a task / bash script which will run "sh aemw repo node save" with proper input to create these cloud config nodes.

Henry Kuijpers

What is the "reset"-task doing? Throwing away everything and starting over? Or is there actual intelligence in there?

Tomasz S

It throws everything away, but before you run Reset you can first run a backup command to back your the stuff from your instance (and then you can reapply that back after Reset). Of course you can also restart the whole thing with another command if that's what you need to do

Henry Kuijpers

How did you guarantee that AEM was started properly? Also after a service pack install? Did you use the system ready framework? Or do you have other checks in place?

Simon

Don't know how wttech is doing it, but I use the following checks: https://medium.com/vrt-digital-studio/13-steps-to-rock-stable-aem-package-installs-d9bbba1f7b15

Georg Henzler

I think they use the system ready health checks as presented some years ago: https://adapt.to/2019/schedule/felix-health-checks - this is also used for the K8s probes in AEMaaCS these days (https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/)

Henry Kuijpers

I was hoping they would do that indeed, but it looks like they were checking active bundle count etc manually.

Jörg Hoh

How do I update my local SDK instance to a newer version?

Chanchalesh Joshi

+1 , Can the answer be related to RDE? curious!

Tomasz S

Great question! I would first write myself a small task for that which will: 1.do a backup of content (using cli) 2. Destroy everything 3. Setup the env again 4. Deploy the content package backup (from step 1) How I would use it: 1.update aem.yml config to point to the new sdk zip 2. Run my new task 3. Sit back, relax and wait until aemc does everything for me

dzenisiy

Since most of FE don’t like Java related tools like maven. Does your tool installing the maven?

Tomasz S

No it doesn't. If you want to automate it I would suggest to just write a small task for that in the task file, which will (using bash commands) : 1. Download maven in correct version that you need for your project 2. Unpack it 3. Add it to system paths

Yegor Kozlov

can I use the taskw CLI instead of the AEM REST endpoints, for example, to create/manage users, install/manage packages, etc.. ?

Tomasz S

Yes you can manage packages right now. With regards to groups / users - you can in theory through content api

Krystian

Dedicated AEMC commands for Auth/user/group management are planned / will be developed soon

Anian Weber

How would you handle the SDK/quickstart files for CI automation? Manually copying them isn‘t feasable there.

Tomasz S

Download them from a know location using a task file for example. We intentionally did not add this bit, since there is no official publicly available registry from which you can download aem jar or aem sdk. Unfortunately that is something that is in Adobe hands. In our projects well usually deploy it to an s3 bucket or some other cheap and performant blob Storage.

Henry Kuijpers

What will happen after the 5 years of support?

Roy Teeuwen

then you upgrade to AEM cloud ;)

Tomasz S

There are 3 options : 1. There will be something better on the market and we will all happily move to that 2. There willl nothing better than this and we will be still all happily using it 3. Everyone will be in the AEM Cloud already This is a 3 version of this tooling and to be honest from cli perspective we envisage it to be pretty much feature complete for most use cases. The apis we use from AEM have been very stable over the years as well. The OS madness is dealt with by GoLang

Krystian

AEMC will be supported as long as devs will work with AEM locally in a way they work now. If for each dev in the project sth like RDE will be easily accessible and enough flexible then the future of AEMC might be unclear. But still, there are so many cliens using on-prem AEM these days so it will not happen soon.

Krystian

Additional response to Henry and Simon regarding stability checks: AEMC incorporated all these checks described in medium blog post about rock solid deployments. Beside that also there is e.g login page check which turned out to be very valuable after extensive tests.