为什么使用云服务

很多同学问起这个问题。回答起来仁者见仁,并没有一个标准答案。简单来说,你开发的业务,是否关注如下几方面问题?

  • 弹性:业务根据访问规模的增减,而弹性伸缩(scaling)。在规模变大时,整个架构自适应scale up;在规模收缩时,架构scale down。架构里包含web服务器、应用服务器、数据库服务器、缓存服务器、存储服务器等。
  • 自动化:业务的开发、测试、发布、部署、运行、调试整个环节,都有自动化手段辅助进行。只要执行几个命令,代码就从本地环境发布到远程环境,并顺利运行。你不需要关注服务器怎么分配、数据库怎么运行、路由(Router)怎么调度,只要关注自己的业务逻辑是否正常。
  • 分布式:业务随着节点的增加,性能(performance)和容量(capability)线性增长。在节点发生故障时,自动进行故障转移(failover)。不管是水平扩展还是故障转移,对用户都是透明的,整体服务可用率高。
  • 监控:业务范围内的每个服务对象,大到IDC、CDN、服务器、存储,小到每个逻辑接口,都有自动化监控手段,在发生问题时第一时间通知到你,并让你对业务运行环境(硬件、软件、网络)的性能、可用性指标了如指掌。

思考下上述问题,如果你的答案是都不需要,那么的确不必使用云服务。传统的开发模式和服务交付方式,比如手工部署、单机运行、自主管理、集成一体(all in one),可能还继续适用于某些业务。但是随着开发团队和业务规模的增长,开发人员迟早会面对上述问题。此时面向云的开发模式和交付模式,就显得突出和有必要。

从传统模式到云模式,开发理念和实现方式有个转变过程。不是说把一个传统软件,扔到云平台上就能随时运行。比如业务要做到弹性和分布式,那么它自身需要是状态无关。它的事务(session)、日志、数据、缓存都必须去本地化,使用外部独立的存储接口。在云平台下,应用节点随时可以生成,也随时可能销毁。如果业务自身没有做到无状态,那就谈不上弹性伸缩。我们鼓励业务遵循12 factor design原则进行设计和实现,这也是面向云的最佳开发实践。

总体来说,为什么使用云服务,尤其是云计算的PaaS服务,我认为它主要带来了开发理念的转变。在这种理念下,软件开发过程更快速,软件质量更高。用户只要遵循一定的开发模式,云平台就会保障软件最终运行的架构、性能、可用性、扩展性。在云平台下,人人都是架构师。

此条目发表在Common分类目录,贴了标签。将固定链接加入收藏夹。

为什么使用云服务》有一条回应

  1. MatheMatrix说:

    有这么一种说法,虚拟化是 IT 部门驱动的,云计算是业务驱动的。

评论已关闭。