PaaS和云服务器的区别。

Difference between PAAS and cloud server.

我正在开发一个需要 Scalability.Website 使用 RoR 的网站。我对 Ninefold 和 DigitalOcean 主机感到困惑。我的网站将类似于社交网站,我需要在其中存储大量用户数据和媒体。

正如一位伟大的开发人员所建议的,medigital ocean 是一个云服务器(配置您自己的数据库、web 服务器 ssh 等),但 ninefold 是一个平台即服务,您 git 将您的代码推送到。

我想知道这个的确切含义

在 Digital Ocean 上,您通常会得到一个带有您选择的 linux 操作系统的空虚拟框。您通过 ssh 进入该服务器,安装 rvm,安装 ruby,安装 nginx,安装 passenger 或 unicorn,安装 postgresql,在本地机器上设置 capistrano 以部署到您在该服务器上拥有的生产环境...

如果 Ninefold 与 Heroku 类似,它已经为您配置好了。您只需推送您的代码并拥有您的网站 运行.

安德烈亚佐夫

这些只是出于不同目的的不同东西。

云服务器只是一台机器。它可以做任何你强迫它做的事情。基本上不限于托管 RoR 或什至一般的任何网络平台。如果您只想要 RoR,则必须设置 Ruby、数据库、安装您的应用程序、配置代理(如果需要)。您还可以在同一台机器上 运行 补充内容(例如,对于使用 WebRTC 的应用程序,您也可以在那里 运行 STUN 服务器)。您必须定期升级它(and/or 配置自动升级)并响应您的应用程序下系统中可能存在的安全漏洞。本质上与购买物理服务器一样,将其连接到网络并用于生产。

PaaS 是一个略有不同的概念。对于 运行 应用程序,您可以配置您的机器,如上所述:软件、库、网络服务器。您将应用的平台设置为 运行。这就是 PaaS 中的 P。在 PaaS 上,您无法控制 OS 和可用软件,但您可以确保它已正确配置。您应该只确保您的应用程序配置正确。有一个 "12 factors" 的想法描述了构建以 PaaS 为目标的应用程序的指南。这意味着 PaaS 严格来说是单一用途的:它只是 运行s 基于你的代码库的进程,没有任何成熟系统的商品。 Heroku 是最著名的 PaaS,它没有本地数据库服务器,但您的应用程序可能需要它才能运行。因此,您可以为您的应用程序提供 URL 远程数据库服务器,这也可以是一项服务(DBaaS,Heroku 单独提供,例如在 ClearDB 插件中)。

事实上,没有什么限制您不能同时使用这两种方法。您可以以不太依赖系统软件的方式设置您的服务器基础设施。您可以使用 Docker 将应用程序的代码、用户数据和所需的服务(例如数据库)与系统的其余部分以及彼此分开。当 运行 作为 Docker 容器时,应用程序通常单独存在,具有公开的端口并且不会向系统请求太多。数据库位于其自己的容器中,该容器链接到应用程序并通过环境变量发现,因此本地数据库服务器也不会受到影响。那有什么好处?控制。一切都与系统完全分离,可以备份、扩展甚至迁移,而无需重新创建您以前在某个地方拥有的大多数应用程序环境。很像您自己的 PaaS。它确实需要一些规划和设置平台以及为其打包应用程序的知识。只有当您想要 运行 多个应用程序时才有意义。

简而言之,区别就是这样。

目前市场上的报价有两个极端。

Digital Ocean,它会为你创建 VM,然后你需要自己配置和管理(意味着安装所有 ruby、nginx 和东西)

和 Heroku,它是完全抽象的,您无法访问任何东西,您只需将代码推送给他们,他们 运行 将它放在云端的某个地方。

然后是介于两者之间的 Ninefold,他们为您创建 VM,您可以在其中访问并指定磁盘大小、CPU 数量和 RAM 大小等内容。但 Ninefold 还为您完全配置了 VM,安装(并在以后更新)所有 ruby、nginx、postgres 和类似的东西。所以,最终它是两全其美,您可以通过将代码推送到 GitHub 来部署代码,但您也可以完全访问 VM 并可以根据您的性能需求对其进行微调。

在实际负载方面,Ninefold 也比 Heroku 更具成本效益。