【开发经验】云端部署和本地化部署的区别

114 阅读5分钟

CIO在帮所在组织(甲方)从软件服务商(乙方)购买业务所需的应用程序时,会面临一个问题,到底把应用部署在本地还是部署在公有云上?本文结合作者自身经验,就这个问题有几点个人看法,供各位拍砖。

首先,我们来看看应用部署在本地还是部署在公有云上,到底有什么区别?

本地部署负责方云端部署负责方
应用配置软件服务商配合,甲方管应用配置甲方管
应用程序软件服务商配合,甲方管应用程序软件服务商管
中间件软件服务商配合,甲方管中间件软件服务商管
操作系统甲方管操作系统软件服务商管
虚拟化甲方管虚拟化软件服务商管
服务器甲方管服务器软件服务商管
存储甲方管存储软件服务商管
防火墙甲方管防火墙软件服务商管
网络甲方管网络软件服务商管

简单来说,本地部署这个方案,需要应用程序的使用方(甲方)准备好该应用程序的运行环境基础设施:包括足够的网络带宽和稳定的网络环境、包括保护网络安全的防火墙以及防勒索病毒的技术、包括购买或配备足够的存储和服务器、包括为了达到高可用性而搭建的虚拟化平台、包括操作系统和数据库的正确版本和配置。除此之外,在应用程序部署之后,由于东西在自己手上,甲方还需要对应用程序依赖的中间件、应用程序本身及其应用配置数据进行维护。虽然通常情况下这部分都会找供应商来支持,但常会发现很多时候遇到的问题其实不是应用程序的问题,而是基础设施的问题,还是需要甲方自己动手。

而部署在公有云的方案,应用程序使用方(甲方)仅需要维护应用程序的配置数据即可,除此之外其它所有基础设施都在云端,甲方只需要提供外网访问,不会有大量的基础设施问题困扰。其实这种方案,是让专业的人做专业的事情,把基础设施运维工作交给了专业的公有云提供商和软件服务商,只要甲方能够正常访问互联网,就可以确保应用的安全性、高可用性、易拓展性,而根本不需要自己购买和维护环境。

所以说,这两种方案的一个直观对比结果是,本地化部署需要去购买很多基础设施并且配备基础设施的运维人员,持续拥有成本高而云端部署的基础设施按需租用,同时把基础设施的运维工作以较低的价格交给了云厂商和软件供应商,持续拥有成本低。

image.png

其次,我们来看看运维效果。由于本地化部署的运维主要依赖本地的基础设施资源(如网络带宽、服务器空间等),以及本公司的运维人员,通常会有资源短缺如空间不足导致的问题,也有人员相关如离职或操作不当导致的问题,且诸如此类事件难以杜绝。而云端运维由于利用的是公有云厂商如阿里云的强大的IAAS能力,环境的可靠性大大增加,运维工作很多都自动化了由机器来处理,比依靠人员手工操作要靠谱和高效得多。譬如云端的备份和灾难恢复,都可以利用自动化工具来实现,比靠人来管更安全和可靠。云端运维还可以利用公有云厂商的专业服务能力,譬如公有云具备全网最高级别的安全防护,它背后安全团队能力是绝大多数甲方企业的安全团队无法企及的。

与此同时,云部署也具有本地化部署无可比拟的灵活性优势。譬如可以灵活扩容和收缩,而本地化部署你要么提前购买了资源造成浪费,要么临时申请采购来不及应对,同时还会面临按照峰值所需采购之后,资源不可收缩,不可逆的决定。而且,云端应用由于其开放性,可以方便快速与其它应用进行集成;而本地化部署,往往需要为应用集成进行额外的开发,慢且贵。从访问的灵活性来看,本地化部署很多时候限制成员只能通过特定网络访问,而云端部署可以随时随地访问。诸如此类,不一一细数。

还有一个要素是系统的升级,本地化部署的系统升级过程相对定制化,可能需要供应商到现场调试,或者处理一些本地独特的环境问题,要做单独的风险评估和验证,往往成本较高,后面大概率变成一个要单独维护的长版本分支。而云端的系统升级可以统一处理,无需针对某个环境拿出来单独考虑,方便快捷。说到快,除了升级过程云端更快,初次实施部署云端也更快。因为省去了配备或调整基础设施环境的过程,可以在更短的时间周期内让用户更早地用上系统,以此更早带来价值。