21 世纪初期,随着互联网接入逐渐普及,Web 2.0 业务模式飞速发展,大量互联网或 者企业应用系统所需要处理的数据量急速增长,如何在用户数量迅速增长的情况下快速扩 展原有系统,是技术人员必须面对的问题。无论是在软件资源的时间维度上,还是在硬件 资源的空间维度上,资源的有限性,比如交付周期、电力成本、空间成本和维护成本等, 会直接导致数据中心成本上升,而另一方面资源的使用率又不高。因此,如何在满足业务 快速增长需求的同时,有效地解决成本与效率的矛盾,是企业面临的一个重大问题。借鉴 传统水电煤的商业发展模式,技术人员通过集中提供资源的方式,将计算、网络和存储等 资源提供集中化统一管理,于是云计算应运而生。
从 AWS CEO 安迪·加西(Andy Jassy)于 2003 年提交的商业计划书,到 2006 年 ECS (弹性云服务器)正式上线提供商业服务,再到 2016 年“AWS re:Invent 2016”大会的发展, 云计算首先是在商业模式上带来了一个崭新的、获取计算资源的模式,以提供水电煤的方 式来为用户提供资源,是一种对资源获取方式的变革,也是人类思维的基础和模式上的飞 跃。因此,从这个意义上讲,云计算和传统主机业务相比有非常大的不同。比如,资源的 使用由传统的准备订购模式变成了订阅的模式,也就是说业务需要多少资源,就可以从服 务商那里购买多少资源,用户不需要过多关注资源的基础准备,这和普通的资源准备有很 大的不同。同样,对资源的付费方式,也产生了多种灵活的模式,用多少就付多少费,用 户可以对于固定的资源直接采用“包年包月”的方式,也可以按需付费,甚至可以做到在 不同的时间段采取不同的收费模式,这和我们日常使用峰谷电的模式思路类似,都是为了 实现资源利用率的最大化。另外,用户也无须在建设或租用机房、网络规划等方面投入大 量的人力和硬件。
在“大众创业、万众创新”的政府政策和市场环境下,互联网化需求逐渐明显,伴随 着互联网技术日新月异的发展和创业门槛的日益变低,从早期的独角兽到如今的大众创业, 云化在国内外是个再普通不过的话题了。每个创业公司不再是讨论要不要上云,而是讨论如何上云及如何快速上云。同样,技术的发展也带来了对传统行业的冲击,移动互联网的 飞速发展,智能手机的普及,每个人的碎片时间越来越多,造就了越来越多的机会,特别 是大型互联网公司与传统企业的结合带动了更快的消费升级。
传统行业对互联网的转型需求也越来越大,很多大型传统国有企业、金融和银行业都 在积极响应国家的号召,争取大部分业务上云。一方面是新型的创业公司根据业务发展 不断调整系统架构,另一方面是传统行业的互联网转型将面临新业务的建立和遗留系统 的集成。
在项目初期,云计算为用户带来的好处显而易见。首先,互联网项目前期资金投入在 固定资产的比例越小,对产品开发或者创业来讲成本风险就越小,从而有更多资源放在业 务上,云计算把计算资源从以前昂贵的预备方式变成一种使用较低的成本就唾手可得的方 式;其次,使用云计算以前,计算资源的获取往往是一个比较漫长的过程,涉及选型、下 单、生产、运输、初始化再到环境的搭建等多个环节,而现在变成了云计算公司的选择、 数据中心的选择、云主机的选购,以及服务器的配置、安装、调试等过程。新的方式变成 了一个简简单单的订购过程。如果是自己建设,除去各种政策的影响,仅机房的位置选择 就是一个非常漫长的过程。而现在,很多情况下,只要在云计算公司的网站上像选择普通 商品一样,加入购物车并支付,就可以马上获取所需资源,如果发生错误或者不需要了, 可以立即销毁重做,不需要涉及复杂的下架回收流程。云计算缩短了很多产品的发布周期, 这对于中小公司特别是刚刚起步的公司来说,大大提高了工作效率。
互联网的规模不仅越来越大,而且随着移动互联网的出现和飞速发展,热点随时随地 可能产生。比如一些热销产品,一个热门事件就有可能导致系统流量的暴涨,特别是如今 名人、大 V 等的宣传或转发,对系统的压力要求更大。比如之前的某明星离婚事件、某电 子商务运营秒杀抢购业务等。
当然,正是由于初创公司不同业务的快速发展,才有机会使得互联网从业人员有更多 的机会去挑战不同的技术难题,使用更好的技术以更好地服务用户。通常,很多业务型企 业一开始都不太注重基础设施建设,也比较少有机会对系统进行良好的架构设计,随着企 业的飞速发展,往往会碰到各种技术问题,可能会影响产品的迭代速度,容易错失很多机 会,如果这时候对产品的核心架构进行调整,就像为高速行驶的汽车更换引擎一样,是一 件很困难的事。诚然,这种比喻有点夸张,但是对于竞争激烈的企业来说,这种机会就显 得非常重要,直接采用云服务的模式来打造,架构设计会更简单,同时还能提供更高的可用性保证,也不用非常大的基础投入,算是云服务给架构设计带来的一大优势。
因此,满足产品的快速迭代需求,保证系统既能满足功能性需求又能满足非功能性需 求,是技术人员所追求的目标,也是技术的价值所在。
1.1 云应用架构技术发展
随着云计算的发展和进化,以及企业对效率的追求变得越来越高,大量的数据表明, 简单的云主机创建也不太能满足业务的需求,后续还有大量的运维和运营工作,运维操作 频率基本占比在 90%以上,尤其在业务本身不断发展并且规模不断扩大的时候会更加明显, 矛盾也会越来越突出。所以,如何在速度与稳定性之间追求平衡,达到效率的最优化是本 阶段用户追求的目标,因此我们迫切需要新一代的云计算技术出现,使得用户有更大的聚 集业务,而不是烦琐的重复机械操作,在服务发现、编排和集成方面有完善的自动化工具 集来帮助用户代替手工操作,帮助技术人员发现问题、解决问题、预测问题,甚至自动修 复问题。
显然,商业模式和技术模式都在不断变化,互相促进,对开发者来讲,基于云计算的 开发模式自然会导致思维的转变。当然不是说老的模式就不可以使用,而是说如果要更好 地发挥云的特性,就需要在开发模式上进行最佳实践,尤其需要在架构设计上进行适当的 调整。比如对使用资源的考虑,必须从单一服务器的资源,逐渐向整个资源池或数据中心 的方向转变,架构也需要从单体的架构向服务化的架构转变。相应地,在架构设计的时候, 面向的是整体资源的需求及运用,而不是在设计架构时局限于某一台物理服务器,因为所 有的服务都有可能失败,也是不可靠的,错误也无法避免,如果以服务器为单位来进行架 构设计就变得不适合了,这是一个比较大的变化;另外,从自建模式变成租用模式,很多 人会对安全性有顾虑,认为自建更可靠,实际上这是个伪命题,类似认为把钱放在自家比 放在银行更保险一样,实际上无论放在哪里都可能发生问题,因此,要根据用户的数据本 身对安全风险的承受度,来重新考虑数据的安全问题。如果想降低风险,可以把数据做更 细小的划分,划分的数据如何分别存储和调度,是需要设计的。因此需要开发模式的变化, 把云计算的基础设施当成代码去使用,融合到设计中去。
作为基础架构的提供商,老一代云计算的服务提供商像水电力公司,新一代的云计算 服务商更像现代化的工厂。互联网业务的发展和工业的发展是相辅相成的,比如工业 4.0的理念与实践,目的之一是实现工业从集中式向分布式的方向发展,和架构演变模式完全 一致。
简而言之,用户最需要云服务实现以下 3 点基本特性,第一是可用性,服务商随时保 证对服务的可使用性,就像在家需要随时能够打开电源开关,随时能够取用水资源;第二 是可扩展性,也叫弹性,服务商能够随时满足业务在爆发时的需求,就像家里有朋友集会 时,我可能需要更多的水,更多的电源,基础服务公司需要去负责这些资源的调度,而用 户不需要去做其他改变;第三是可管理性,用户能够随时对基础设施提供的服务进行管理, 自动控制服务,就像装修时布线、开关和插座等的设计,需要能够满足不同房间的各种不 同需求,比如书房和儿童房的需求是有区别的。
对于云计算服务商而言,这 3 点都是必不可少的要素,是必要条件,只有满足了这 3 个条件,才能够满足最终用户的基本需求。所以为了提供更多的优质服务,需要新的云计 算服务,需要 IaaS 服务和 PaaS 服务最终融合在一起,提供更流畅的、一致的生态体验服 务。无论提供怎样的方式、提供何种类型的服务,对于最终用户来说,是追求效率的提高 和资源的最大化利用。总之,用户对于云计算服务使用要求的多样性,要远远比任何一种 以前的传统服务多得多,基础设施的可编程性和服务的 API,对于云计算厂商来说都是非 常重要的。
云计算技术的发展刚好见证了互联网技术的发展,从物理机、虚拟机到容器技术的使 用,从传统的瀑布开发到敏捷流程再到精益迭代,互联网技术对开发者的要求也会越来越 多样化,甚至包括多地理位置的多样协作等,为开发者带来更多的问题同时,也会带来许 多有意思的技术内容,既是机遇也是挑战。
文章节选自《云原生应用架构实践》 网易云基础服务架构团队 著
文章来源:网易云