云计算时代的运维
近日,Yelp的SRE工程师Dmitriy Samovskiy发表了一篇标题为《新时代的运维》的文章,文章中他简要介绍了在云计算大环境下,运维工作重心和角色的变化。
其实在6年前,Dmitriy就写过一篇关于DevOps趋势的文章,在那篇文章中,他认为系统管理人员需要具有简单脚本之外的开发能力,并且多关注服务器稳定性和上线时间等。但这六年中,随着云计算等技术的发展,运维相关的工作也早已被革新,所以Dmitriy又重新反思了当下运维相关的技术工作。下面是文章的核心观点。
为什么运维会发生变化?这种变化会继续下去吗?
主要有以下两点原因:
IaaS云服务的兴起深刻改变了运维。基础设施即代码,运维面对的不再是传统的服务器。云厂商可以将所有事情标准化,然后以服务的形式打包提供给客户。
运维人员自身也掌握了更多的软件开发技能。运维人员不再局限于脚本,转而变成更好的开发者,承担起更多的职责。
研发生产和运维会变得越来越难以分割。不会再有专门的运维团队,每个项目研发团队都可以自行进行产品的运维。这种角色的变化,并不意味着运维工作的消失;相反,依然需要运维技能、知识和经验。
可扩展性已经成为了运维工作的重心
在以前的服务器时代,运维团队的主要工作是创建环境并维护生产的稳定性。而现如今,运维团队的工作重心已经转向了如何提高产品的可扩展性。如果扩展性做得不好,流量负载过多就带来各种相关问题(会话冲突、用户拥堵和数据集合大小不符)。如果扩展性做得好,产品就会运行得既安全又高效。这对于一些金融类的高风险业务尤为重要。
随着服务规模的不断扩展,人工进行系统管理已经成为不可能完成的任务,自动化运维将是不可回避的选择。业界的一种观点是,DevOps是自动化运维的唯一方法;Dmitriy认为DevOps是一种文化,会在企业发展成长中自然而然地形成。
运维能力已经成为企业的技术基础
在以前,研发工程师团队只负责开发产品,而不负责提高开发效率的相关工作,如:代码重用性、实现模式、用户库、核心API等。现在,一些DevOps文化的公司已经将这些工作融合在一起。
一些大型网站如Facebook、Google等都有专职的SRE(Site Reliability Engineer)网站可靠性工程师,国内又称应用运维师。其对应的工作职责包含:容量规划与实施、集群部署、数据中心容错、负载均衡和监控等。
公司在不同的发展阶段对运维的需求不同
初创阶段
公司在初创时期最需要关心的就是如何研发出满足市场需求的功能,而不是舍本逐末地去抓运维。因为这个时期企业一方面还没有大量用户,而另一方面运维会耗费过多的技术资源;所以应该将更多的精力放在快速迭代、新功能研发上。这个时期,推荐企业采用NoOps。