在 SAP BTP Cloud Foundry 运行时中设计和运行应用程序

学习目标

  • 在 SAP BTP Cloud Foundry 运行时中开发应用程序。

SAP BTP Cloud Foundry 运行时中的应用程序开发

简介

贵公司决定通过过渡到云原生解决方案来革新其应用程序开发流程。作为该计划的一部分,您负责了解 SAP Business Technology Platform (BTP) 中的开发生态系统,特别是关注 Cloud Foundry 运行时。借助这些知识,您可以在云原生环境中制定有关应用程序体系结构和开发方法的明智决策。

概览

SAP BTP Cloud Foundry 运行时提供了专为云本机应用程序开发和协作定制的强大平台即服务 (PaaS) 解决方案。利用开放标准,开发人员可以在多语言环境中高效构建、部署和扩展应用程序。

开发选项概览

Cloud Foundry 运行时为开发人员提供了选择开发路径的灵活性。无论是利用基于 SAP Cloud Application Programming Model (CAP) 的推荐方法还是选择自定义解决方案,开发人员都可以从各种编程语言和开发工具中进行选择。

选择您自己的路径

在 Cloud Foundry 运行时的多语言性质中,开发人员不仅限于特定的编程语言或工具。他们可以灵活地选择首选的开发和部署工具。SAP 支持的三种语言是 Java、Node.js 和 Python。但是,存在适用于许多其他编程语言的 buildpack,包括 Golang、ASP.NET、PHP 等。根据应用程序需求选择相应的 buildpack。

使用以下链接查找有关 SAP 支持的三种语言的详细信息:

  • 在 Cloud Foundry 运行时中开发 Java

  • 在 Cloud Foundry 运行时中开发 Node.js

  • 在 Cloud Foundry 运行时中开发 Python

注意

Java、Node.js 和 Python 拥有 SAP 的企业支持。请注意,必须自行解决不支持的 buildpack 的问题。您还必须确保提供者和 buildpack 都值得信任。

推荐路径

SAP 建议遵循基于 SAP Cloud Application Programming Model (CAP) 的结构化开发方法。通过使用 Java 和 Node.js,开发人员可以从为云原生应用程序开发定制的广泛工具支持和最佳实践中受益。但是,开发步骤的顺序是灵活的,允许适应特定用例。

在 Cloud Foundry 运行时中开发多租户应用程序

在 SAP BTP 的 Cloud Foundry 运行时中,您可以通过专用 URL 开发和运行多个使用者访问的多租户应用程序。

推荐多重租赁模型是什么?

多重租赁允许应用程序提供者为多个使用者拥有、部署和运行租户感知应用程序,通过一步共享资源和更新应用程序来降低成本。在 Cloud Foundry 中,首选多重租赁概念利用每个使用者通过专用 URL 访问应用程序,从而确保数据分离和安全。您可以在 此处 的 SAP 文档中找到有关多重租赁、角色及其工作原理的详细信息。

开发指南

开发租户感知应用程序时,请遵循以下指导原则:

  • 避免共享内存数据(例如,Java 静态字段)。

  • 阻止用户执行自定义代码或访问文件系统。

  • 实施 Subscription 回调以使用 SAP SaaS Provisioning 服务的租户登录 ( saas-registry )。

过程

您可以在此处的 SAP 文档中找到详细的实施过程。

相关信息

  • SAP BTP 上的多租户 SaaS 应用程序是否使用 CAP?已尝试并正确!

  • 在 CF 运行时中开发多租户应用程序 [SAP Help Portal]

Cloud Foundry 运行时中的多目标应用程序

多目标应用程序 (MTA) 本质上是由多个部分组成的单个应用程序。这些部分是使用各种技术创建的,并共享相同的生命周期。

MTA 开发人员使用 MTA 模型概述预期结果。此模型由 MTA 模块、MTA 资源及其之间的相互依赖性组成。之后,SAP Cloud Deployment 服务对其进行验证、协调必要的操作并自动化 MTA 部署。结果是 Cloud Foundry 应用程序、服务的构成以及 SAP 特定内容的生成。SAP BTP Cloud Foundry 运行时专门用于支持此类应用程序的部署。有关多目标应用程序模型的详细信息,请参阅官方规范文档:多目标应用程序模型 v.2 和多目标应用程序模型 v.3

注意

请注意,MTA 与 Cloud Foundry 无关。这是在 Cloud Foundry 中未知的概念,由 SAP 单独创建。这就是客户在 CF CLI 中未找到"cf deploy"命令的原因。要使用 "cf deploy",必须安装相应的 CF CLI 插件。

关键概念和术语

  • MTA 描述符 (mta.yaml) 列出 MTA 的所有组件(例如模块、资源、属性及其相互依赖性)的 YAML 文件。此文件是定义如何构建和部署 MTA 的核心。此处提供了 MTA 描述符的示例

  • 模块 MTA 的每个独立部分(例如 Java 或 HTML5 模块),表示应用程序的不同层或组件。

  • 资源 模块在运行时所需的外部服务或属性,不属于模块本身。

  • 属性 部署或运行时用于配置模块或资源的键值对。

  • 相关性 模块和资源之间的链接,对于解决运行时和部署相关性至关重要。

创建多目标应用程序的不同方法

您可以通过从以下概述的方法中进行选择,在 Cloud Foundry 运行时中创建和部署多目标应用程序,每个方法都可以实现相同的结果:

  • 开发多目标应用程序中所述使用 SAP Web IDE 全栈 - 开发描述符 mta.yaml 和部署描述符 mtad.yaml 将自动创建。mta.yaml 在创建应用程序项目时生成,mtad.yaml 文件在构建项目时创建。

注意

可能需要编辑开发描述符。 开发描述符用于生成 MTA 部署描述符,这些描述符定义了所需的部署数据。即,MTA 开发描述符数据指定要构建的内容以及如何构建,而部署描述符数据指定部署描述符数据的部署内容和方式。

  • 使用 SAP Business Application Studio - 流类似于 WebIDE,但开发从 SAP Business Application Studio 完成,如此处所述。

  • 使用 Cloud MTA 构建工具。然后,使用 Cloud Foundry 命令行接口部署 MTA。

注意

需要 MTA 开发描述符 mta.yaml。您必须手动创建。

  • 手动 - 手动创建所需文件,并使用 Cloud Foundry 命令行接口对其进行部署。

注意

不明确需要 MTA 开发描述符 mta.yaml。在这种情况下,将改为维护部署描述符。

  1. 使用所选 IDE 创建所需文件。

  2. 要生成自定义部件,请使用所选的构建技术。

  3. 维护部署描述符文档 ( mtad.yaml )。

  4. (可选)如果要拥有 MTA 归档包,请使用 mbt assemble 。

  5. 否则,通过单独推送文件直接部署 mtad.yaml 。

为 SAP BTP Cloud Foundry 运行时开发现代应用的最佳实践

Cloud Foundry 支持最佳云原生应用程序。12 因子应用方法中概述了构建云原生应用程序的最佳原则。鼓励开发人员查阅这些原则,以获取在 Cloud Foundry 运行时中开发强大且可扩展的应用程序的指南。

避免写入本地文件系统

在 Cloud Foundry 上运行的应用必须避免由于文件短期、非持久性以及实例之间缺少文件共享而将文件写入本地文件系统。相反, 利用云存储服务(例如 SAP HANA Cloud)或其他关系数据库或超大型云服务供应商解决方案进行持久数据存储。

端口注意事项

客户端通过与应用相关联的 URL 连接到 Cloud Foundry 应用。在端口 80 和 443 上允许 HTTP 请求,并支持 WebSocket 连接。

高可用性

为避免暂时不可用,您必须运行应用的多个实例。Cloud Foundry 使用称为"撤离"的流程来重新分配应用实例,这种情况经常发生,并且是一种通用的内部系统操作。

它会在另一虚拟机 (VM) 上重新创建实例,然后关闭旧实例。如果新实例在疏散超时内无法正常运行(默认值为 12 分钟),则单例模式应用实例可能暂时不可用。此外,短时间内,您的单元集可能有两个实例,如果未正确管理,可能会导致问题。

要最小化停机时间,运行应用的多个实例至关重要。选择此处查找有关:平台和应用程序级别的高可用性以及 Diego 体系结构上的应用程序容器生命周期的详细信息。

推送时忽略不必要的文件

缺省情况下,应用的项目目录中的所有文件都会在部署期间上传到 Cloud Foundry。使用 .cfignore 文件排除不必要的文件以提高部署效率。

应用程序超时:关键注意事项

在 SAP BTP Cloud Foundry 中,您的应用必须遵守严格的时间限制:

  • 上载 :在 15 分钟内 完成。

  • 备货 :必须在 15 分钟后 完成。

  • 启动 :应用必须在 60 分钟内 启动(可配置)。

关键关闭超时

当应用收到关闭信号 (SIGTERM) 时,它有 60 秒的时间可以正常关闭,然后被 SIGKILL 强制终止。无法正确关闭可能会导致数据损坏或其他问题,尤其是在持久性情况下。必须确保您的应用可以在 60 秒的窗口中进行处理。

应用自动扩缩程序

设置 SAP BTP Cloud Foundry 运行时 App Autoscaler 服务,允许您根据已定义的策略自动增加或减少应用程序实例的数量。然后,该服务将根据当前负载自动调整应用实例的数量,从而确保应用程序更具弹性和可扩展性。

云日志记录

利用 SAP BTP 的日志记录功能提高可观察性。使用集中日志记录服务(例如云日志记录)监控和分析应用性能和行为。

警报通知服务

设置 SAP BTP Cloud Foundry 运行时警报通知服务以接收有关关键事件的实时通知,从而提高及时响应问题的能力。

摘要

在本课中,您已了解 SAP BTP Cloud Foundry 运行时中应用程序开发的关键方面。您已了解灵活的开发路径,包括在 SAP 支持的 Java、Node.js 和 Python 中使用云应用程序编程模型 (CAP) 和选项。本课还将详细介绍开发多租户应用程序和多目标应用程序模型。此外,还讨论了云原生开发的迁移策略和最佳实践。这些知识将帮助您有效地设计和开发云原生应用程序。

进一步阅读

  • Cloud MTA 构建工具文档

  • 从 Neo 运行时迁移到面向 SAP BTP 的多云基础(Cloud Foundry 和 Kyma)