Backend Development — overview
Purpose: Index of backend reference pages and the standard shape of AEM backend code.
Who this page is for
| Audience | Why it matters to you |
|---|---|
| Backend engineers | Your home section |
| Frontend engineers | Read Sling Models at minimum |
The backend surface of AEM
Almost all AEM backend code is one of six shapes:
| Shape | Job | Page |
|---|---|---|
| Sling Model | Adapt content for a view/JSON | Sling Models deep dive |
| Servlet | Custom HTTP endpoint | Sling servlets |
| OSGi service | Shared business logic/config | OSGi services & DS |
| Scheduler / Job | Background & async work | Schedulers & jobs |
| Event/resource listener | React to repository changes | Events & listeners |
| Workflow process | A step in a content process | Custom workflow processes |
Supporting skills: querying content, unit testing, logging, and the project structure it all lives in.
House rules (generic best practice)
- No admin sessions; use service users via ResourceResolverFactory (service users).
- Close what you open (resolvers/sessions) — try-with-resources.
- Everything unit-testable without a running AEM (wcm.io mocks).
- Log at the right level; error.log is a shared resource.