平台即服务能够快速、轻松地创建网络应用，而无需购买和维护其下的软件和基础设施。本文解释了它为什么有用。 平台即服务 PaaS （以下简称 PaaS）指的是云计算服务，它为客户提供了开发、运行和管理应用程序的平台，而免去了建立和维护与开发和启动应用程序相关的基础设施的复杂工作。这是云原生应用和支持系统所依托的核心平台。PaaS 通常包括不同的应用基础功能，包括应用平台、集成平台、业务分析平台、事件流服务和移动后端服务。此外，它还包括一套与监控、管理、部署相关的功能。开发人员希望他们的开发环境不需要等待，而运营团队则更关心性能和稳定性。这经常引起两方间的冲突。PaaS 为这两方创造了和平的环境。一个作为服务交付的应用平台被称作 PaaS，它被用于部署用户代码。Cloud Foundry、Cloudify 和 OpenShift 这些开源环境都可用作 PaaS。PaaS 的采用模式云计算必须满足五个基本特征：按需服务、接入网络、资源池化、弹性和可度量的服务。为此，云计算提供了三种服务模式： 软件即服务 Software as a Service （SaaS）、 平台即服务 Platform as a Service （PaaS）、 基础设施即服务 Infrastructure as a Service （IaaS）。业务选用 PaaS 的关键驱动力：减少提供业务的资本支出和运营费用通过减少应用程序的交付时间和提高开发和交付质量，最大限度地降低 IT 成本增加中间件之间的灵活性和集成度简单 PaaS：踏入 PaaS 领域的入口。它可以提供应用程序服务，并将它们暴露在自助服务的目录中；自动部署和计量服务使用的资源。管理 PaaS：管理已配置应用程序的 服务级别协议 SLA 和 服务质量 QoS ，例如弹性、应用程序性能、安全性等。编程 PaaS：允许应用程序与外部应用程序或公共云集成，并实现自动扩展和云爆发场景。面向流程 PaaS：允许通过创建持续交付流程来实现 开发运维 DevOps 流程，该流程可以自动构建、测试应用程序并将其交付到云环境中。除了这些采用模式之外，还有其他的 PaaS 变体如下，这些变化可能与上文的模式有一定重合：集成平台即服务（iPaaS）：一套能够开发、执行和管理集成流的云服务。集成流可以是个人内部或跨多个组织连接的，可以包含任何企业内部或基于云的流程、服务、应用和数据。这些组合变化可能也符合上述的模式之一，例如 MuleSoft CloudHub 和 BizTalk。移动平台即服务（mPaaS）：为开发移动应用提供的集成开发环境（IDE），并且支持多种移动平台。数据库平台即服务（dbPaas）：一种按需的、安全且可扩展的自助式数据库平台，可自动配置和管理数据库。dbPaaS 使扩展数据库变得更加容易，并使它们更加可靠。物联网平台即服务（IoTPaaS）：提供了实现异构物联网拓扑所需的通信、安全、分析和管理的通用基础架构。它为构建物联网解决方案提供了更简单、更敏捷的模型。业务流程管理平台即服务（bpmPaaS）：一个完整的预集成业务流程管理平台，托管在云端并作为服务交付。它被用于开发和执行整个企业的业务流程和以工作流程为中心的应用程序。例如 Pega cloud 和 OpenText Cordys cloud。PaaS 的一些基本特征：在同一集成开发环境中开发、测试、部署、托管和维护应用程序的服务多租户架构，即多个并发用户使用同样的开发程序部署软件的内置可扩展性，包括负载平衡和故障转移与异构平台和系统的集成支持开发团队的协作包含处理帐单和管理订阅的工具主要的开源 PaaS在选择 PaaS 之前，企业主要考虑关注以下几点：部署灵活性操作简便性应用堆栈的选择语言、数据库和框架支持规模的可扩展性服务质量（QoS）开发和运营的工具它有多适合你的业务现在让我们快速浏览下流行的开源 PaaS。Cloud Foundry：提供了多种云的选择、开发者框架和应用服务。Cloud Foundry 使构建、测试、部署和扩展应用程序变得更快、更容易。它有不同的发行版本，其中比较流行的是 Pivotal 和 IBM。它包含应用 运行时 runtime 和容器运行时。在 Pivotal 上包含有应用服务和容器服务。OpenShift：红帽的云计算 PaaS 产品。这是一个云端的应用平台，应用开发者和团队可以在这里构建、测试、部署和运行他们的应用程序。Cloudify：在开放的原则下开发和设计，用以推动 IT 转型革命。它使组织能够在其上设计、建立和提供各种商业应用和网络服务。Cloudify 的最新版本为 4.3，它包含了先进的安全、控制和 真自服务 true self-service 等增强功能。Cloudify 4.3 还为 Kubernetes 容器编排引入了全新的概念。功能Cloud FoundryCloudifyOpenShift核心功能Cloud controllerManagerBroker提供第三方数据库服务Service brokerAgentCartridge传入流量的路由RouterManagerREST API查询应用程序的状态Cloud controllerCLI clientBroker消息传递Message busManagerBroker应用实例管理Droplet execution agentAgentNode应用程序状态管理Health managerManagerBrokerBrokerWardenAgentGear用户请求的负载平衡Droplet execution agentManagerBroker框架提供者Blob storeAgentCartridge技术 语言Java, Ruby, Scala, Node.js, Groovy, Grails, PHP, Go, PythonJava, PHP, RubyJava, Ruby, Node.js, PHP, Python, Perl, JavaScript数据库MongoDB，MySQL MongoDB、MySQL、PostgreSQLMySQL、MongoDBMongoDB、MySQL、PostgreSQL 框架Spring, Rails, Grails, Play SinatraJavaScript, Node.jsRails, Flask, Django, Drupal, Vertx水平扩展是是是垂直扩展是否是弹性伸缩是是是表 1 列出了 Cloud Foundry、Cloudify 和 OpenShift 的基本功能及其对应的架构组件。以上完全基于个人观点，所支持的功能的真实需求应与云供应商进行验证。从行业统计数据中，我们可以清楚地看出 PaaS 的使用率正在迅速上升。PaaS 使企业应用程序可以是 云无关 cloud-agnostic 的，它们可以在任何云平台上运行——无论是公共的还是私有的。这意味着一个在亚马逊的 AWS 上开发的应用可以很容易地移植到微软 Azure、VMWare vSphere、Red Hat RHEV 等等其他平台。当多个开发人员共同参与一个开发项目，或外部用户需要与开发过程协作时，PaaS 是很有用的。因此，PaaS 尤其适合于敏捷开发，因为它降低了围绕软件快速开发和迭代的难度。鸣谢作者感谢 Kiran M.R. 和 Wipro 有限公司的数字架构实践 Raju Alluri 为本文提供的支持。via: https://www.opensourceforu.com/2022/09/why-enterprises-should-opt-for-platform-as-a-service/作者：Gopala Krishna Behara 选题：lkxed 译者：onionstalgia 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在开发和部署云原生应用程序时，运行容器化负载的 Kubernetes 平台起到了重大作用。自然而然的，开发和部署云原生应用程序已经变得非常受欢迎。对于一个允许快速部署和连续交付的 bug 修复和新功能的流程来说，它有明显的优势，但是没有人会谈到鸡和鸡蛋问题：怎样才能达成这样的目的呢？从头开始构建基础设施和开发流程来开发和维护云原生应用程序是个不简单的、耗时的任务。Kubernetes 是一个相对较新的运行容器化负载的平台，它解决了这些问题。它原本是 Google 内部的一个项目，Kubernetes 在 2015 年被捐赠给了云原生计算基金会，并吸引了来自世界各地开源社区的开发人员。 Kubernetes 的设计基于 Google 15 年的在生产和开发环境运维的经验。由于它是开源的，任何人都可以下载并使用它，并实现其带来的优势。那么为什么 Kubernetes 会有这么大的惊喜呢？我认为它在像 OpenStack 这样的基础架构即服务（IaaS）和完整的平台即服务 （PaaS）的资源之间达到了最佳平衡，它的底层运行时实现完全由供应商控制。Kubernetes 提供了两个优势：对管理基础设施的抽象，以及深入裸机进行故障排除的工具和功能。IaaS 与 PaaSOpenStack 被大多数人归类为 IaaS 解决方案，其中物理资源池（如处理器、网络和存储）在不同用户之间分配和共享。它使用传统的基于硬件的虚拟化实现用户之间的隔离。OpenStack 的 REST API 允许使用代码自动创建基础架构，但是这就是问题所在。IaaS 产品输出的也是基础设施。其创建后，支持和管理那些更多的基础设施的服务方式并不多。在一定程度上，OpenStack 生产的底层基础架构（如服务器和 IP 地址）成为管理工作的重中之重。一个众所周知的结果是虚拟机（VM）的无序蔓延，而同样的情况也出现于网络、加密密钥和存储卷方面。这样，开发人员建立和维护应用程序的时间就更少了。像其它基于集群的解决方案一样，Kubernetes 以单个服务器级别的方式运行，以实现水平缩放。它可以轻松添加新的服务器，并立即在新硬件上安排负载。类似地，当服务器没有被有效利用或需要维护时，可以从集群中删除服务器。其它 Kubernetes 可以自动处理的其他任务是编排活动，如工作调度、健康监测和维护高可用性。网络是另一个可能难以在 IaaS 环境中可靠编排的领域。微服务之间通过 IP 地址通信可能是很棘手的。Kubernetes 实现了 IP 地址管理、负载均衡、服务发现和 DNS 名称注册，以在集群内提供无痛、透明的网络环境。专为部署而设计一旦创建了运行应用程序的环境，部署就是一件小事了。可靠地部署一个应用程序是说起来容易做起来难的任务 —— 它并不是最简单的。Kubernetes 相对其他环境的巨大优势是，部署是一等公民。使用一个单独的 Kubernetes 命令行界面（CLI）的命令，可以描述应用程序并将其安装在群集上。Kubernetes 从初始部署、推出新版本以及（当一个关键功能出现问题时）进行回滚，实现了应用程序的整个生命周期。运行中的部署也可以暂停和恢复。拥有现成的、内置的工具和支持应用程序部署，而不用自己构建部署系统，这是不容小觑的优点。Kubernetes 用户既不必重新发明应用程序部署的轮子，也不会发现这是一项艰巨的任务。Kubernetes 还可以监控运行中的部署的状态。虽然你可以在 IaaS 环境中像编写部署过程一样编写这个功能，但这是一个非常困难的任务，而这样的情况还比比皆是。专为 DevOps 而设计随着你在开发和部署 Kubernetes 应用程序方面获得更多经验，你将沿着与 Google 和其他前行者相同的路径前行。你将发现有几种 Kubernetes 功能对于多服务应用程序的有效开发和故障排除是非常重要的。首先，Kubernetes 能够通过日志或 SSH（安全 shell）轻松检查正在运行的服务的能力非常重要。通过一条命令行调用，管理员可以检查在 Kubernetes 下运行的服务的日志。这可能听起来像一个简单的任务，但在 IaaS 环境中，除非你已经做了一些工作，否则这并不容易。大型应用程序通常具有专门用于日志收集和分析的硬件和人员。在Kubernetes 中的日志可能不能替代完整功能的日志和指标解决方案，但它足以提供基本的故障排除。第二，Kubernetes 提供内置的密钥管理。从头开发过自己的部署系统的团队知道的另一个问题是，将敏感数据（如密码和 API 令牌）安全地部署到虚拟机上很困难。通过将密钥管理变成一等公民，Kubernetes 可以避免你的团队发明自己的不安全的、错误的密钥分发系统或在部署脚本中硬编码凭据。最后，Kubernetes 有一些用于自动进行缩放、负载均衡和重新启动应用程序的功能。同样，这些功能是开发人员在使用 IaaS 或裸机时要自己编写的。你的 Kubernetes 应用程序的缩放和运行状况检查在服务定义中进行声明，而 Kubernetes 会确保正确数量的实例健康运行。总结IaaS 和 PaaS 系统之间的差异是巨大的，包括 PaaS 可以节省大量的开发和调试时间。作为一种 PaaS，Kubernetes 实现了强大而有效的功能，可帮助你开发、部署和调试云原生应用程序。它的架构和设计代表了数十年的难得的经验，而你的团队能够免费获得该优势。（题图：squarespace.com）作者简介：Tim Potter - Tim 是 Hewlett Packard Enterprise 的高级软件工程师。近二十年来，他一直致力于自由和开源软件的开发工作，其中包括 Samba、Wireshark、OpenPegasus 和 Docker 等多个项目。Tim 博客在 https://elegantinfrastructure.com/ ，关于 Docker、Kubernetes 和其他基础设施相关主题。via: https://opensource.com/article/17/6/introducing-kubernetes作者：Tim Potter 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出