AEM as a Cloud Service
Understand what AEM as a Cloud Service is, how it differs from AEM 6.5, and what you need to know to develop and deploy on the cloud platform.
Last reviewed: December 2024
🔍 What Is It?
AEM as a Cloud Service is Adobe's fully managed, cloud-native version of AEM. Key characteristics:
- →Always up-to-date — Adobe pushes updates automatically, no manual upgrades
- →Auto-scaling — scales up and down based on traffic automatically
- →Containerized — runs on Kubernetes, with separate Author, Publish, and Dispatcher pods
- →CI/CD native — code is deployed through Cloud Manager pipelines, not manual package installs
- →CDN included — Fastly CDN is built in, in front of every AEMaaCS environment
- →Separated storage — content is stored in a cloud-based Oak repository, not a local disk
AEMaaCS is not just "AEM in the cloud" — it's a re-architected platform with different deployment models, different APIs, and different constraints than AEM 6.5.
🎯 Why Do We Need It?
The Problems with AEM 6.x (on-premise):
- →Manual upgrades every 1–2 years — expensive, risky, time-consuming
- →Infrastructure management — servers, OS, JVM, networking
- →Manual scaling — traffic spikes require pre-provisioning
- →Slow deployments — package installs could take 30+ minutes
AEMaaCS Solves This:
- →Zero-downtime updates — Adobe updates AEM automatically, no manual effort
- →Elastic scaling — handles Black Friday traffic automatically
- →Fast deployments — Cloud Manager pipelines deploy in minutes
- →Global CDN — built-in Fastly CDN reduces latency worldwide
- →Security — Adobe manages patches, security updates, and compliance
🏗️ What Happens in Real Projects?
How a Typical AEMaaCS Project Works:
- Development — Developers work locally using the AEM SDK (a downloadable JAR that mimics AEMaaCS)
- Code Review — Code goes through Git (usually GitHub/GitLab/Azure DevOps)
- Pipeline — Cloud Manager detects the commit and runs the CI/CD pipeline
- Testing — Automated tests run (unit tests, integration tests, UI tests)
- Deployment — Code deploys to Dev → Stage → Production environments
- Content — Content authors work in the cloud Author environment
- Delivery — Users get content via CDN → Dispatcher → Publish
Environments in AEMaaCS:
- →Development — For developer testing
- →Stage — For QA and UAT
- →Production — Live site
Each environment has Author, Publish, and Dispatcher tiers.
⚙️ How It Works
Architecture Differences from AEM 6.5:
| Feature | AEM 6.5 | AEMaaCS |
|---|---|---|
| Deployment | Package Manager | Cloud Manager Pipeline |
| Scaling | Manual | Automatic |
| Updates | Manual upgrades | Automatic |
| Storage | Local filesystem | Cloud Oak |
| CDN | Optional | Built-in (Fastly) |
| Dispatcher | Self-managed | Managed by Adobe |
| Mutable content | /apps is writable | /apps is immutable |
Immutable vs Mutable Content:
This is the biggest conceptual shift from AEM 6.5:
- →
/apps,/libs,/oak:index— Immutable — only deployable via Cloud Manager pipeline - →
/content,/conf,/var— Mutable — manageable through AEM UI and replication
Implications:
- →You can't install packages directly to
/appsin production - →All code changes go through the pipeline
- →OSGi configurations are deployed as code, with secrets and environment-specific values supplied by Cloud Manager
- →Content changes are published through the managed AEM publication flow; cache invalidation is handled by AEM, Dispatcher, and CDN rules
Cloud Manager:
Cloud Manager is Adobe's CI/CD platform for AEMaaCS. It:
- →Connects to your Git repository
- →Runs build pipelines (Maven build + quality checks)
- →Deploys to AEMaaCS environments
- →Manages environment variables (for OSGi config)
- →Runs code quality, security, and performance checks
- →Provides access to deployment history, build logs, and environment status for production support
AEM as a Cloud Service — Architecture Overview
Cloud Manager
CI/CD Pipeline
Git → Build → Deploy
CDN (Fastly)
Global Edge Cache
Built-in SSL
AEM Author
Content Authoring
Template Editor
AEM Publish
Content Delivery
Auto-scaling
Dispatcher
Caching Layer
Security Filter
Cloud Storage
Oak Repository
Asset Storage
💻 Example
AEMaaCS Development Setup — Key differences and configurations for developing on AEM as a Cloud Service.
🤔 Common Confusions
❓ Can I still use package manager to install code in AEMaaCS?
For content (pages, assets, configurations in /content and /conf), yes. For code (/apps), no — /apps is immutable in production and stage. You must use Cloud Manager pipelines to deploy code changes. This is the biggest workflow change from AEM 6.5.
❓ What is the AEM SDK and why do I need it?
The AEM SDK is a downloadable JAR file that runs a local AEMaaCS-compatible instance on your machine. It's how developers work locally without needing a cloud environment for every code change. Download it from Adobe Software Distribution portal.
❓ How do I manage secrets (API keys, passwords) in AEMaaCS?
Use Cloud Manager's "Secret" environment variables. In your OSGi config, reference them as $[secret:MY_SECRET]. Never hardcode secrets in code or configuration files. Cloud Manager injects them at runtime.
❓ Is AEMaaCS backward compatible with AEM 6.5 code?
Mostly, but not 100%. The APIs are the same, but some things that worked in 6.5 don't work in AEMaaCS — especially anything that writes to /apps at runtime, uses deprecated APIs, or relies on specific filesystem paths. Adobe provides the AEM Analyzer Maven plugin to check compatibility.
🚨 Common Production Issues
Pipeline fails at code quality step
check the code quality report in Cloud Manager. Common issues: low test coverage, critical SonarQube violations, deprecated API usage.
Content published in Author not visible on Publish
check publication status, content distribution queues, referenced assets/fragments, and whether CDN or Dispatcher cache is still serving the old response.
OSGi config not loading
in AEMaaCS, custom OSGi configs should use .cfg.json naming and valid JSON types. Confirm the PID, run mode folder, and Cloud Manager environment variable names.
Dispatcher or CDN cache not refreshing
republish the affected content, verify the vhost catches invalidation requests for localhost and Adobe cloud host aliases, and confirm Cache-Control headers match the intended TTL.
Build succeeds but deployment fails
check the deployment logs in Cloud Manager. Often caused by content package validation errors or missing dependencies.
External integration works locally but fails in cloud
check outbound allow lists, secret variables, service-specific environment variable scope, and timeout handling in the OSGi service.
✅ Best Practices
Use the AEM Analyzer Maven plugin in your build to catch AEMaaCS compatibility issues early.
Never write to /apps at runtime
all code changes must go through the pipeline.
Store stable non-secret configuration in Git and use Cloud Manager variables only for secrets or values that genuinely vary by environment.
Set up automated tests (unit, integration, UI)
Cloud Manager runs them on every pipeline execution.
Use the Dispatcher SDK for local Dispatcher testing before pushing to Cloud Manager.
Monitor pipeline execution times
slow builds indicate code quality or dependency issues.
Use persisted GraphQL queries instead of ad-hoc queries
they're cacheable by the CDN.
Create support runbooks for pipeline failures, stuck content publication, cache issues, and integration outages before go-live.
🏛️ Architect's Note
AEM as a Cloud Service represents a paradigm shift in AEM architecture. The key principles to internalize:
Immutability: Code is immutable in production. This forces better engineering practices — no more "quick fixes" via package manager in production.
Cloud-Native Patterns: Design your application for horizontal scaling. Avoid in-memory state, use distributed caching, and design services to be stateless.
CDN-First: With Fastly CDN built in, design your caching strategy from day one. Use Cache-Control headers, persisted GraphQL queries, and Dispatcher rules to maximize CDN hit rates.
Observability: AEMaaCS integrates with Adobe Experience Platform and provides built-in logging and monitoring. Invest in proper logging from the start — you'll need it when debugging production issues.
For architects evaluating AEMaaCS vs AEM 6.5: If you're starting a new project, choose AEMaaCS. The operational benefits (auto-updates, auto-scaling, managed infrastructure) outweigh the migration effort for new projects.
💬 Frequently Asked Questions
🎯 Key Takeaways
🔗 Related Topics
🎯 Practice this topic in interviews
↗ Where this topic fits
AEM Technology Guide
Return to the AEM learning hub.
AEM Developer Career Path
This AEM developer career path explains how to become an AEM developer through JCR, Sling, HTL, client libraries, Dispatcher, Cloud Service delivery, project depth, and interview-ready enterprise implementation skills.
Drupal Developer Career Path
A practical route through Drupal content modeling, site building, theming, modules, configuration management, APIs, performance, deployment discipline, and interview preparation.
Sources
Sources / References
Use these AEM references to verify the concept in official docs and continue into the most relevant SplashRide pages.
Official documentation
Related SplashRide pages
SplashRide AEM learning path
Browse the full AEM topic collection and learning order on SplashRide.
AEM Interview Prep
Practice AEM interview questions and scenario-based answers.
AEM Developer Career Path
This AEM developer career path explains how to become an AEM developer through JCR, Sling, HTL, client libraries, Dispatcher, Cloud Service delivery, project depth, and interview-ready enterprise implementation skills.
Drupal Developer Career Path
A practical route through Drupal content modeling, site building, theming, modules, configuration management, APIs, performance, deployment discipline, and interview preparation.
AEM Dispatcher
Understand the AEM Dispatcher — the caching and security layer that sits in front of your publish instance. Learn how it works, how to configure it, and why it breaks in production.
Content Fragments
Learn what Content Fragments are, how they differ from regular page content, and why they're the foundation of headless AEM delivery.