如何使用您的无头应用程序

AEM Headless开发人员历程,了解如何在Git中获取本地代码并将其移至Cloud Manager Git以用于CI/CD管道,从而实时部署无头应用程序。

迄今为止的故事

在AEM无头历程的上一个文档中, 如何通过AEM Assets API更新您的内容 您学习了如何通过API在AEM中更新现有无头内容,现在应该:

  • 了解AEM Assets HTTP API。

本文基于这些基础知识,以便您了解如何准备自己的AEM无头项目以投入使用。

目标

本文档可帮助您了解AEM无头发布管道以及在使用应用程序之前需要注意的性能注意事项。

  • 了解AEM SDK和所需的开发工具
  • 设置本地开发运行时以在上线之前模拟内容
  • 了解AEM内容复制和缓存基础知识
  • 在启动之前保护并扩展您的应用程序
  • 监视性能和调试问题

AEM SDK

AEM SDK用于构建和部署自定义代码。 它是您开发和测试无头应用程序之前所需的主要工具。 它包含以下工件:

  • 快速入门jar — 一个可执行的jar文件,可用于设置创作实例和发布实例
  • 调度程序工具 — Dispatcher模块及其对基于Windows和UNIX的系统的依赖项
  • Java API Jar - Java Jar/Maven依赖项,它公开了可用于针对AEM进行开发的所有允许的Java API
  • Javadoc jar - Java API Jar的javadoc

其他开发工具

除了AEM SDK之外,您还需要其他工具,以便在本地开发和测试代码和内容:

  • Java
  • Git
  • 阿帕奇·马文
  • Node.js库
  • 您选择的IDE

由于AEM是一个Java应用程序,因此您需要安装Java和Java SDK才能支持AEMas a Cloud Service的开发。

您将使用Git来管理源控件,以及将更改签入到Cloud Manager中,然后将其部署到生产实例。

AEM使用Apache Maven来构建从AEM Maven项目原型生成的项目。 所有主要IDE都为Maven提供集成支持。

Node.js是一个JavaScript运行时环境,用于处理AEM项目的前端资产 ui.frontend 子项目。 Node.js与npm一起分发,npm是事实上的Node.js包管理器,用于管理JavaScript依赖项。

AEM系统组件概览

接下来,让我们看一下AEM环境的组成部分。

完整的AEM环境由创作、发布和调度程序组成。 这些相同的组件将在本地开发运行时中提供,以便您在上线之前更轻松地预览代码和内容。

  • Author 服务​是内部用户创建、管理和预览内容的地方。

  • Publish 服务​被视为“实时”环境,通常是最终用户与之交互的对象。在 Author 服务上编辑和审批之后的内容,分发到 Publish 服务。AEM Headless 应用程序最常见的部署模式是将应用程序的生产版本连接到 AEM Publish 服务。

  • Dispatcher 是一个通过 AEM Dispatcher 模块增强的静态 Web 服务器。它会缓存由发布实例生成的网页,以提高性能。

本地开发工作流

本地开发项目是基于Apache Maven构建的,并且使用Git进行源代码管理。 为了更新项目,开发人员可以使用他们首选的集成开发环境,例如Eclipse、Visual Studio代码或IntelliJ等。

要测试将由您的无头应用程序摄取的代码或内容更新,您需要将更新部署到本地AEM运行时,其中包括AEM创作和发布服务的本地实例。

请务必注意本地AEM运行时中每个组件之间的差异,因为在最重要的位置测试更新非常重要。 例如,在创作时测试内容更新或在发布实例中测试新代码。

在生产系统中,调度程序和http Apache服务器将始终位于AEM发布实例之前。 它们为AEM系统提供缓存和安全服务,因此测试针对调度程序的代码和内容更新至关重要。

使用本地开发环境在本地预览代码和内容

要为启动您的AEM无头项目做好准备,您需要确保项目的所有组成部分都正常运行。

为此,您需要将所有内容整合在一起:代码、内容和配置,并在本地开发环境中测试它,以便进行上线准备。

地方发展环境由三个主要领域组成:

  1. AEM项目 — 其中将包含AEM开发人员将要处理的所有自定义代码、配置和内容
  2. 本地AEM运行时 — AEM创作和发布服务的本地版本,将用于从AEM项目部署代码
  3. 本地Dispatcher运行时 — Apache httpd Web服务器的本地版本,其中包含Dispatcher模块

设置本地开发环境后,您可以通过在本地部署静态节点服务器来模拟向React应用程序提供内容的过程。

为了更深入地了解如何设置本地开发环境以及内容预览所需的所有依赖关系,请参阅 生产部署文档.

准备AEM Headless应用程序上线

现在,是时候按照下面概述的最佳实践,为启动您的AEM无头应用程序做好准备了。

在启动之前保护和扩展您的无头应用程序

  1. 配置 基于令牌的身份验证 使用GraphQL请求
  2. 配置 缓存.

模型结构与GraphQL输出

  • 避免创建输出超过15kb JSON(gzip压缩)的查询。 较长的JSON文件是需要大量资源才能解析客户端应用程序。
  • 避免片段层级的嵌套级别超过5个。 其他级别使内容作者很难考虑其更改的影响。
  • 使用多对象查询,而不是在模型内使用依赖关系层次结构建模查询。 这样,在重构JSON输出方面就具有了更大的长期灵活性,而无需进行大量内容更改。

最大化CDN缓存点击率

  • 除非您从表面请求实时内容,否则请勿使用直接GraphQL查询。
    • 尽可能使用持久查询。
    • 为CDN提供超过600秒的CDN TTL,以便CDN进行缓存。
    • AEM可以计算模型更改对现有查询的影响。
  • 在低内容更改率和高内容更改率之间拆分JSON文件/GraphQL查询,以减少客户端对CDN的流量并分配更高的TTL。 这样可以最大限度地减少CDN使用源服务器重新验证JSON的情况。
  • 要主动使来自CDN的内容失效,请使用软清除。 这样,CDN便可重新下载内容,而不会导致缓存丢失。

缩短下载无头内容的时间

  • 确保HTTP客户端使用HTTP/2。
  • 确保HTTP客户端接受gzip的标头请求。
  • 最大限度地减少用于托管JSON和引用对象的域数。
  • 利用 Last-modified-since 刷新资源。
  • 使用 _reference JSON文件中的输出,以便开始下载资产,而无需解析完整的JSON文件。

部署到生产环境

确保所有内容均已测试并正常运行后,即可将代码更新推送到 Cloud Manager中的集中式Git存储库.

将更新上传到Cloud Manager后,可以使用将这些更新部署到AEMas a Cloud Service Cloud Manager的CI/CD管道.

您可以利用Cloud Manager CI/CD管道来开始部署代码,该管道已得到广泛介绍 此处.

性能监控

为了让用户在使用AEM无头应用程序时获得最佳体验,您务必要监控关键性能量度,如下所述:

  • 验证应用程序的预览和生产版本
  • 验证AEM状态页面以了解当前服务可用性状态
  • 访问性能报告
    • 交付性能
      • CDN(快速)性能 — 检查调用数、缓存率、错误率和有效负载流量
      • 源服务器 — 调用数、错误率、CPU负载、负载流量
    • 创作性能
      • 检查用户数、请求数和加载数
  • 访问特定于应用程序和空间的性能报表
    • 服务器启动后,检查常规量度是否为绿色/橙色/红色,然后确定特定的应用程序问题
    • 打开上面按应用程序或空间过滤的相同报表(例如Photoshop桌面版、付费专区)
    • 使用Splunk日志API访问服务和应用程序性能
    • 如果存在其他问题,请联系客户支持。

疑难解答

调试

按照以下最佳实践作为调试的一般方法:

  • 使用应用程序的预览版本验证功能和性能
  • 使用应用程序的生产版本验证功能和性能
  • 使用内容片段编辑器的JSON预览进行验证
  • Inspect客户端应用程序中的JSON,以检查客户端应用程序或交付问题是否存在
  • Inspect使用GraphQL检查是否存在与缓存内容或AEM相关的问题

记录支持的错误

为了在您需要进一步帮助时,通过支持部门高效地记录错误,请执行以下步骤:

  • 如有必要,请拍摄问题的屏幕截图
  • 记录重现问题的方法
  • 记录问题所重现的内容
  • 通过具有相应优先级的AEM支持门户记录问题

历程结束了?

恭喜! 您已完成AEM Headless开发人员历程! 您现在应该了解:

  • 无头内容和有头内容交付之间的区别。
  • AEM无头功能。
  • 如何组织和AEM Headless项目。
  • 如何在AEM中创建无标题内容。
  • 如何在AEM中检索和更新无标题内容。
  • 如何使用AEM Headless项目进行实时。
  • 上线后怎么办。

您已经启动了您的第一个AEM Headless项目,或者现在掌握了执行此操作所需的所有知识。 干得好!

浏览单页应用程序

不过,AEM中的无头店不需要停在这里。 您可能记得 入门指南部分 我们简要讨论了AEM如何不仅支持无头交付和传统的全栈模型,而且还支持结合两者优点的混合模型。

如果您的项目需要这种灵活性,请继续进行历程的可选附加部分, 如何使用AEM创建单页应用程序(SPA)。

其他资源

在此页面上