云计算基础知识——平台即服务 (PaaS)

作者:Mitesh Soni

通常,良好的编程被认为是艺术形式、工艺或学科的衡量应用,其目标是产生一个有能力且不断发展的业务解决方案。在传统环境中,计算机编程是一种具有多个阶段的实践,例如设计、开发、测试、调试和维护应用程序代码。我们程序员使用 C、C++、C#、Java、Python 和 Smalltalk 等编程语言来创建业务应用程序。编写代码的过程通常需要精通许多不同的学科,包括应用程序领域、运行时环境、特定算法、编程语言和适当逻辑的知识。

图 1. 编程

此外,开发和部署应用程序是一项复杂、昂贵且耗时的任务。业务应用程序需要硬件资源、操作系统、数据库、中间件、Web 服务器和其他软件。一旦技术堆栈和硬件资源可用,开发团队就需要导航 J2EE 和 .NET 等框架进行开发。专门的网络、数据库和 IT 管理专家团队负责保持资源和应用程序的可用性。

不可避免地,业务需求将需要更改应用程序,这会导致漫长的开发、测试和重新部署周期。此外,大型组织需要专门的设施来容纳其数据中心以及维护它们的团队。大量的电力被用来为服务器供电以及保持服务器冷却。

如果您认为复杂性到此为止,那就等等。故障转移站点对于镜像数据中心至关重要,以便在发生灾难时可以复制信息和资源。使用这些复杂性构建的应用程序难以扩展以满足使用高峰需求,更新起来很脆弱,并且难以随着业务需求的变化而实现移动化和社交化。

现代应用程序编程及其挑战

由于设备的爆炸式增长,现代编程以不同的方式发生了变化。不断扩展的数据和新的业务需求需要与以前时代不同的方法。无论是考虑传统方法还是现代方法,业务应用程序都必须满足一些基本属性,例如自动化、可靠性、稳健性、性能和可用性。不幸的是,即使在现代,许多组织中也不存在自动化构建和测试环境,最佳实践也没有在软件开发生命周期的所有地方得到应用。

重要的是要理解,应用程序的可靠性取决于算法的准确性、更少的编程错误、安全最佳实践的实施以及避免逻辑错误,例如除以零。预测错误,例如不正确或受损的数据以及资源不可用,可以提高稳健性。应用程序开发人员和 IT 团队如何管理稳健性对于实现应用程序的目标具有更重要的意义。应用程序的效率、性能、可维护性、可移植性和可用性在现代环境中同样重要。云计算是一种革命性的方法,为应对这些现代挑战的组织提供了一线希望。

PaaS 简介

云计算仍然是一个不断发展的范例,但它是过去几年中最具颠覆性的创新之一。根据 NIST 的定义,它是一种模型,可以方便地按需网络访问共享的可配置计算资源池,例如计算、存储和网络,这些资源可以快速配置并在最少管理工作量的情况下释放。

图 2. NIST 云计算定义

PaaS 提供商管理底层基础设施资源,例如操作系统、虚拟服务器、网络、Web 服务器、应用程序服务器、数据库、备份和灾难恢复。

云计算由三种服务模式组成:软件即服务 (SaaS)、平台即服务 (PaaS) 和基础设施即服务 (IaaS)。本文重点介绍 PaaS。

借助 PaaS,您可以使用支持的编程语言(如 Java、PHP、Ruby 和 .Net)和平台/工具(如 Web 服务器/应用程序服务器和数据库)将应用程序部署到云基础设施中。这使 PaaS 用户或组织能够专注于他们的业务和应用程序维护,而无需担心管理资源、平台和软件版本。

PaaS 位于 SaaS 和 IaaS 之间的空间内。IaaS 提供网络、存储和计算处理能力。IaaS 产品的示例包括 Amazon EC2、Windows Azure VM Role 和 RackSpace Cloud Servers。SaaS 提供业务软件功能,例如 CRM。

图 3. PaaS

PaaS 不仅包括部署环境,还包括存储库、构建环境、测试环境、性能管理、邮件服务、日志服务、数据库服务、大数据服务、搜索服务、企业消息服务以及用于现代应用程序架构和代码检查服务的应用程序性能管理。

PaaS 正变得越来越流行,因为它消除了获取、安装、配置、评估、试验和管理运行业务应用程序所需的所有硬件和软件资源的成本和复杂性。PaaS 提供了开发和运行应用程序所需的基础设施和平台。通过使用 PaaS,组织可以利用预算来开发提供真正业务价值的应用程序。

PaaS 正在推动创新和业务敏捷性的新时代。开发和 IT 团队使用 PaaS 来设计、试验、构建、测试和交付定制的应用程序。因此,应用程序开发人员和 IT 团队可以专注于其业务的应用程序和领域专业知识,而不是管理复杂的硬件和软件资源。

PaaS 的优势

使用 PaaS 的两个显着优势是成本优势以及更快的开发和部署周期。PaaS 为开发、测试和部署周期提供敏捷性、灵活性和更快的上市时间,因此重点仍然放在应用程序上,而不是资源管理上。它确保可以从世界任何地方访问资源。通过使用 PaaS,用户满意度提高,同时资源利用率也得到提高。它在按需付费的计费模式下提供底层软件和硬件资源,因此减少了与大量服务器和存储空间、电力、冷却、软件更新和更改的管理和维护以及熟练人员相关的资本支出。几乎零资本支出,横向或纵向扩展功能可以提高应用程序的性能。它不涉及本地安装,因此采用速度通常很高。PaaS 平台确保消费者无需持续投资操作系统升级和维护。管理基础设施和平台资源是 PaaS 提供商的责任,因此组织无需担心许可证、软件版本、补丁管理等等。此外,资源的灵活性和可用性提高了开发和测试团队之间的协作。

图 4. PaaS 优势

考虑到大多数组织选择基于其内部环境中已标准化的环境的 PaaS 解决方案,PaaS 在部署和管理任务中提供了令人惊讶的好处。

如何在 PaaS 中部署应用程序

以下是基本步骤

  • 选择应用程序类型、用于开发应用程序的编程语言、运行应用程序的平台、构建环境等。

  • 使用 IDE(如 Eclipse、NetBeans 或任何其他 IDE)创建业务或 Web 应用程序。

  • 使用可用的数据库产品创建数据库。

  • 在应用程序中相应地更改数据库配置。

  • 创建存档文件——例如,WAR 或 EAR 文件。

  • 将存档文件上传到 PaaS 门户。

  • 配置日志、电子邮件、备份和扩展服务。

  • 访问您的应用程序。

云服务中的主要 PaaS 提供商和产品

PaaS 服务为增加客户、提高收入、为现有服务增加价值以及在业务客户中更广泛地采用云服务提供了机会。应用程序开发是一项核心能力,而附加能力通常有助于云提供商的品牌建设和优势。为了为 PaaS 做好准备,云提供商正在开发灵活的云平台,以支持云环境和流程的各种功能。PaaS 的示例包括但不限于 Force.com、Microsoft Azure、Engine Yard、Heroku、CloudBees 和 Google App Engine。

Red Hat OpenShift

Red Hat OpenShift 是一个采用 Apache License 2.0 的 PaaS。它内置支持 Java、Python、PHP、Perl、Node.js、Ruby 和可扩展功能以添加语言。OpenShift 支持 MySQL、PostgreSQL 和 MongoDB。它支持 Web 应用程序框架,例如用于 Ruby 的 Rack、用于 Python 的 WSGI 和用于 Perl 的 PSGI。对于 Java,它涵盖了对 Java EE6、CDI/Weld、Spring、Liferay、Scala/Play!、JBoss AS7、JBoss EAP6、Tomcat 6 和 7(JBoss EWS 1.0 和 2.0)、Glassfish as DIY、Jetty as DIY、Eclipse、JBoss Tools、Jenkins、Cloud9 IDE、Appcelerator Titanium、Git、SSH 访问、Maven 3 和 Ant 的端到端支持。提供三个版本:OpenShift Online、OpenShift Enterprise 和 OpenShift Origin。OpenShift Online 提供免费层,具有 512MB RAM 和 1GB 磁盘。OpenShift Enterprise 是 Red Hat 的私有云版本。

CloudBees

CloudBees 支持 Java SE 和 Java EE。它还在其堆栈中包括 Tomcat、MySQL、商业关系数据库、大数据——MongoDB 和 CouchDB。CloudBees 为 Java PaaS 领域带来了许多独特的功能,特别是持续集成——云中的整个开发/测试/部署管理。应用程序部署不需要特殊的框架,并且可以轻松地将应用程序移入或移出 CloudBees 以及在 CloudBees 之间迁移。开发人员可以使用 Jenkins 服务让 CloudBees 自动且持续地构建、测试、签入和签出存储库中的代码。CloudBees 支持命令行工具、IDE 工具(如 Eclipse)、基于 Web 的控制台、Web 访问日志、第三方开发人员/测试服务和 API 访问。New Relic 监控是 CloudBees 生态系统的一部分。用户只需点击几下即可为任何应用程序启用监控。在 CloudBees 中,New Relic 监控代理在部署时自动部署到您的应用程序中。CloudBees 还支持使用 SendGrid Service for RUN@cloud 从应用程序发送邮件。

Google App Engine

Google App Engine (GAE) 旨在在 Google 基础设施上运行 Java、Python、Go 或 PHP 应用程序。在 GAE 中,应用程序在安全的环境中运行,对底层操作系统的访问受到限制;因此,现有应用程序可能需要进行重大更改——例如,应用程序无法写入文件系统。它为 Google Cloud SQL 和 Google Cloud Storage 提供原生支持。它支持自动扩展和负载均衡。适用于 Java、Python、PHP 和 Go 的 Google App Engine SDK 可用。用户可以使用适用于 Eclipse 的 Google 插件来开发和部署应用程序。App Engine Datastore 提供了一个 NoSQL 数据存储,具有查询引擎和原子事务。Google Cloud SQL 提供了一个基于 MySQL RDBMS 的关系数据库服务,而 Google Cloud Storage 提供了一个用于对象和文件的存储服务。对于免费使用,应用程序可以使用高达 1GB 的存储空间以及足够的 CPU 和带宽来支持功能强大的应用程序,该应用程序每月可以处理大约 500 万个请求。它还提供在您的计算机上模拟 Google App Engine 的功能。

Cloud Foundry

Cloud Foundry 是一个由 VMware 开发并根据 Apache License 2.0 发布的开源 PaaS。它是用 Ruby 编写的。Cloud Foundry 支持 Java、Ruby、Node.js 和 Scala 语言,运行时环境包括 Java 6、Java 7、Ruby 1.8、Ruby 1.9、Node.js、Spring Framework 3.1、Rails 和 Sinatra。Cloud Foundry 支持 MySQL 和 vFabric Postgres 关系数据库以及 MongoDB 文档数据库。用户可以使用 RabbitMQ,这是一个可靠、可扩展且可移植的应用程序消息传递系统。Micro Cloud Foundry 是 Cloud Foundry 的可下载版本,可以在开发人员的机器上运行。

Heroku

Heroku 是一个多语言云应用程序平台,支持 Clojure、Facebook、Java、Spring、Play、Node.js、Python、Django、Ruby on Rails 和 Scala。它分别支持 PostgreSQL 和 MongoDB 作为 SQL 和 NoSQL 数据库。Heroku 聚合了三类日志:应用程序日志、系统日志和 API 日志。它在美国和欧盟均可用。用户可以使用维护模式来禁用对其应用程序的访问一段时间,在此期间它将向所有用户提供静态页面。用户可以启用 SSL 以确保所有信息都安全传输。其生产检查功能对于根据推荐的标准验证应用程序配置以确保最长运行时间非常有用。

Windows Azure

Windows Azure 是 Microsoft 提供的 PaaS 产品。微软于 2010 年 2 月发布了它。应用程序开发人员可以使用不同的编程语言为其编写代码;微软为 Java、Python、Node.js 和 .NET 启动了明确的 SDK。微软在 GitHub 上发布了客户端库的源代码。对于数据存储,SQL Azure 是一个基于 SQL Server 构建的基于云的可扩展且高度可用的数据库服务。Windows Azure Blobs 为非结构化二进制数据提供存储。AppFabric 简化了与云服务和本地应用程序的连接。对于排队消息传递,队列和服务总线功能可用。通过使用缓存和内容交付网络,可以提高应用程序性能。广播公司成功地使用 Windows Azure 媒体服务来流式传输 2012 年伦敦奥运会。Windows Azure Active Directory 管理类似于 Windows Server Active Directory 的用户信息。

Amazon Elastic Beanstalk

Elastic Beanstalk 是 AWS 提供的 PaaS 产品,用于在 AWS 云中快速部署和管理应用程序。Elastic Beanstalk 管理自动扩展、负载均衡和应用程序监控。AWS Elastic Beanstalk 分别支持 Java、PHP、Python、Node.js、Ruby 和 .NET Web 应用程序,以及 Apache Tomcat、Apache HTTP Server、Nginx、Passenger 和 Microsoft IIS 7.5 开发堆栈。它在 Amazon Linux AMI、Windows Server 2008 R2 AMI 和 Windows Server 2012 AMI 上运行。消费者可以创建 25 个应用程序和 500 个应用程序版本。应用程序大小最大可达 512MB。用户可以使用 Eclipse 和 Visual Studio 将应用程序部署到 AWS Elastic Beanstalk。用户可以分别利用适用于 Eclipse 的 AWS Toolkit 和适用于 Visual Studio 的 AWS Toolkit 来开发 Java 应用程序和 .NET 应用程序。应用程序文件和可选的服务器日志文件存储在 Amazon S3 中。Amazon RDS、DynamoDB 和 SimpleDB 可以用作数据存储,或者用户可以使用 Oracle、Microsoft SQL Server 或任何其他在 Amazon EC2 上运行的关系数据库。

PaaS 中的安全性

应用程序开发人员必须精通应用程序安全最佳实践,这一点至关重要。这可以包括首选语言的安全编码实践以及安全设计原则。与传统的应用程序开发不同,PaaS 提供共享的开发环境,因此可以结合身份验证、授权和访问控制来确保消费者的数据和应用程序安全。扫描 Web 应用程序以查找常见的安全问题(如跨站点脚本 (XSS) 和 SQL 注入)也很重要。为了改进开发工作以生成安全且稳健的应用程序,应用程序威胁建模至关重要。OWASP 威胁建模可用于创建安全的应用程序。

PaaS 的未来

许多 IaaS 提供商正在服务模型堆栈中向上移动。AWS 就是其中一个例子。如今,PaaS 市场可能占整个公有云的最小比例。但是,它将对应用程序开发人员的角色和职责产生巨大影响。在 2013 年 TechTarget Cloud Pulse 调查中,近一半的受访者 (49.6%) 表示,他们选择 PaaS 是因为它已经是他们正在使用的云生态系统的一部分。同样,43% 的受访者表示,他们基于 PaaS 与现有架构的集成程度做出决定。现在,PaaS 提供商已经意识到,从市场和竞争的角度来看,跨多个 IaaS 提供商的架构运行服务将更有利。一些提供商正在提供其 PaaS 产品的私有版本,因此组织可以在其现有设施中使用相同的服务,以更好地利用现有资源。

根据 451 Research 的数据,PaaS 是云计算领域增长最快的领域,预计到 2016 年将实现 41% 的复合年增长率 (CAGR)——占云总收入的 24%。

资源

NIST 云计算定义,版本 15:http://www.nist.gov/itl/cloud/upload/cloud-def-v15.pdf

剖析平台即服务市场:http://searchcloudcomputing.techtarget.com/tip/Peeling-back-the-layers-of-the-Platform-as-a-Service-market

451 Research:平台即服务是云计算领域增长最快的领域:http://www.cloudcomputing-news.net/blog-hub/2013/aug/23/451-research-platform-as-a-service-paas-fastest-growing-area-of-cloud-computing/?utm_medium=referral&utm_source=t.co

OpenShift:https://www.openshift.com

AppEngine:https://developers.google.com/appengine/docs

Heroku:https://www.heroku.com

Windows Azure:http://www.windowsazure.com

Amazon Elastic Beanstalk:http://aws.amazon.com/elasticbeanstalk

Cloud Foundry:http://www.cloudfoundry.com

CloudBees:http://www.cloudbees.com

Mitesh Soni 过去三年一直与 Cloud Services Team 合作,该团队是 iGATE Research and Innovation Group 的一部分。目前,他在那里担任技术主管。他喜欢撰写技术和社会主题的文章,并且他还喜欢摄影。

加载 Disqus 评论