Monday, November 23, 2020

Beginners Tutorial: What is Cloud Manager for Adobe Experience Manager(AEM)?

What is Cloud Manager for AEM?

  • Cloud Manager is a Cloud service that allows customers to build, test, and deploy AEM applications hosted by Adobe Managed Services. 
  • Enables customers to manage their custom code deployments on their AEM-managed cloud environments with manageable pipeline automation and complete flexibility for their deployment timing or frequency.
  • Each customer gets its own Git Repository and their code is secure and not shared with any other Organizations.
  • Cloud Manager is only available to Adobe Managed Services customers using AEM 6.4 or above
  • Restructure the code with the latest arch type to support the Dispatcher deployment
  • Address the quality issues and adhere to the best practices for onboarding into Cloud Manager
  • Define application-specific Key Performance Indicators (KPIs)

Key Features

Self Service interface:

  • Enables customers to easily access and manage the cloud environment and CI/CD pipeline for their Experience Manager applications. 
  • Helps to define application-specific KPI's like peak page views per minute and expected response time for a page load,
  • Helps to define Roles and permissions for different team members.

CI/CD pipeline:

  • Setup optimized CI/CD pipeline to speed the delivery of custom code or updates such as adding new components on the website. 
  • Allows AEM project teams to quickly, safely, and consistently deploy code to all AEM environments hosted in AMS 
  • A thorough code scan is executed to ensure that only high-quality applications pass through to the production environment.
  • Quality checks include, code inspection, security testing, and performance testing are always performed as part of the CI/CD pipeline execution

Flexible Deployment Modes:

  • Cloud Manager offers customers flexible and configurable deployment modes so they can deliver experiences according to changing business demands
  • In automatic trigger mode, the code is automatically deployed to an environment based on specific events such as code commit. 
  • You can also schedule code deployments during specified time frames, even outside business hours.
  • Manual – trigger the deployment manually

Auto Scaling:

Cloud Manager detects the need for additional capacity when the production environment is subject to unusually high load and automatically brings additional capacity online via autoscaling feature.

The autoscaling feature will apply only to the Dispatcher/Publish tier, and will always be executed using a horizontal scaling method, with a minimum of one additional segment of a Dispatcher/Publish pair, and up to a maximum of ten segments.

Cloud Manager Benefits:

  • Enables organizations to self-manage Experience Manager in the cloud
  • Continuous Integration / Continuous Delivery of code to reduce time to market from months/weeks to days/hours
  • Cloud Manager provides continuous delivery and continuous integration for updates with zero downtime.
  • Code Inspection, performance testing, and security validation based on best practices before pushing to production to minimize production disruptions.
  • Automatic, scheduled or manual deployment even outside of business hours for maximum flexibility and control.
  • Autoscaling feature intelligently detects the need for increased capacity and automatically brings online additional Dispatcher/Publish segment(s).
  • Reduce the dependency with Adobe CSE for production deployment
  • Configure a set of content paths which will either be invalidated or flushed from the AEM Dispatcher cache for publish instances
  • Development on your local git repositories ate integrate with CM Git repository
  • API/Events/Webhooks for external tool integration through Adobe I/O

CI/CD Pipeline:

Define a set of deployment steps which are executed in sequence, the Cloud manager provides the below two major pipelines

  • Non-Prod Pipeline
  • Production Pipeline
Two types of Non-Prod pipeline
  • Code Quality Pipeline
  • Deployment Pipeline

Non-Prod - Code Quality Pipeline

  • Code Quality pipelines execute a series of steps on a code from a Git branch to build and be evaluated against Cloud Manager’s code quality scan
  • Helps to identify and fix the quality issues before planning for production deployment.
  • Code quality pipeline can be used before provisioning the environments
  • Quality report for review

Non-Prod - Deployment Pipeline

Deployment pipelines support the automated deployment of code from the Git repository to any Non-production environment, meaning any provisioned AEM environment that is not Stage or Production.

Production Pipeline

The CI/CD Production Pipeline is used to build and deploy code through Stage to the Production environment, decreasing time to value.

Build Triggers:
  • manually, 
  • with a Git commit 
  • based on a recurring schedule

The Production Deployment:
  • Application for Approval (if enabled)
  • Schedule Production Deployment (if enabled)
  • CSE Support (if enabled)

Cloud Manager Quality:

Quality checks including code inspection, performance testing, and security validation are conducted as part of the pipeline.

Code quality testing:

Cloud Manager uses SonarQube and OakPAL Content Rules to statically analyze the code and the content. It tests security, reliability, maintainability, coverage, skipped unit tests, open issues, and duplicated lines of code. Unfortunately, there is no way to add your custom rule, but you can mark some of the detected issues as false-positives.

Security testing:

Cloud Manager runs the existing AEM Security Heath Checks on stage following the deployment and reports the status through the UI. The results are aggregated from all AEM instances in the environment. If any of the Instances report a failure for a given health check, the entire Environment fails that health check.

Performance testing:

It tests both: page rendering and asset performance. After 30 minutes, it provides a report outlining i.e., CPU utilization, Disk IO Wait Time, and Page Error Rate. 

For each of the above mentioned Quality Gates, Adobe introduced the concept of the three-tier result:

Critical – these are issues identified by the gate which cause an immediate failure of the pipeline
Important – these are issues identified by the gate which cause the pipeline to enter a paused state. A deployment manager, project manager, or business owner can either override the issues, in which case the pipeline proceeds or they can accept the issues, in which case the pipeline stops with a failure
Info – these are issues identified by the gate which are provided purely for informational purposes and have no impact on the pipeline execution.

The performance and security testing are minimal you should execute some external performance and security tests if required.

Cloud Manager Roles

Business Owner - Primary user who completes the initial Cloud Manager setup. Responsible for defining KPIs, approving production deployments, and overriding important 3-tier failures.

Program Manager - Uses Cloud Manager to perform team setup, review status, and view KPIs. May approve important 3-tier failures.

Deployment Manager - Manages the deployment operations. Uses Cloud Manager to execute stage and production deployments. May approve important 3-tier failures. Has access to Git repository.

Cloud Manager API

  • The Cloud Manager API enables Cloud Manager customers to interact with the same underlying capabilities exposed through the web UI in a fully programmatic fashion
  • This allows for the integration of the Cloud Manager Continuous Integration / Continuous Delivery pipeline with other systems.
  • The API’s are managed through Adobe I/O 
  • By using Adobe I/O Events, Cloud Manager can send external applications notifications when key events occur

Sample Use Cases

  • Starting the Cloud Manager CI/CD pipeline from an external system.
  • Executing additional tests between the standard Cloud Manager performance tests and the ultimate production deployment.
  • Triggering additional activities after the pipeline execution is complete or a specific step has been completed, for example
  • CDN cache invalidation once the production deployment is finished.
  • Deploying related applications to non-managed Services systems.
  • Notifying on other channels (e.g. Slack, Microsoft Teams).
  • Creating issue reports in bug tracking systems (e.g. Atlassian JIRA) on pipeline failures

Reference -!AdobeDocs/cloudmanager-api-docs/master/swagger-specs/api.yaml

Cloud Manager Notifications

Cloud Manager allows the user to receive notifications when the production pipeline starts and completes (successfully or unsuccessfully), at the start of a production deployment, as well as when the Go-Live Approval and Scheduled steps are reached.

The notifications appear in a sidebar in Cloud Manager UI

Email Notifications:

By default, notifications are available in the web user interface across Adobe Experience Cloud solutions. Individual users can also opt for these notifications to be sent through email, either on an immediate or digest basis.

External Tool Notification:

Notifying on other channels (e.g. Slack, Microsoft Teams) though CM API and Events

Cloud Manager Environment Flow

Environment specific Cloud Manager Git branches for non-stage and prod environments i.e. Dev and UAT

Non-Prod Deployment pipeline for  non-stage and prod environments i.e. Dev and UAT

Production pipeline for stage and Prod deployment through master branch

The development will happen in the customer-specific git repository and merged with the Cloud Manager git repository whenever required.

Cloud Manager now supports building customer projects with both Java 8 and Java 11. By default, projects are built using Java 8. Customers who intend to use Java 11 in their projects can do so using the Apache Maven Toolchains plugin.

You can build the End to End CI/CD pipeline with your local git repository and if required external Ci?CD tools e.g. Jenkins and the CM APIs.

1 comment: