【51CTO.com原创稿件】2017年4月14日,WOTA2017 全球架构与运维技术峰会将在北京举行,会上百度外卖研发中心运维部资深运维研发工程师及技术负责人张建,将作为“DevOps与持续交付专场”的演讲嘉宾带来精彩的演讲。在会前的采访中,张建对记者说到:“百度外卖运维研发团队(SRE)在近1年的时间内6个人完成了 11个业务平台,6个通用服务,11+ golang lib库,满足了30+业务服务的对接。我们一切从0开始,在不断的挑战中前进着。”
【讲师简介】
百度外卖研发中心-运维部-运维研发技术负责人-张建
张建,2013年进入百度工作,先后负责过贴吧、ksarch、私有PAAS平台开发与维护工作。2016年进入百度外卖,主要负责外卖的运维研发团队(已改名为SRE),涉及内容较广,主要包括Network,SYS和研发团队的建设工作,Network SYS BP&IT OP 等研发方面的工作,负责两大运维平台Pacific(一站式运维平台) 和Atlantic(数据管理平台)。
从人工运维到智能运维
从运维的技术发展进程来看,我们可以看到早期, ssh+exp代替了手工登录服务器维护的模式,大量的运维工作要通过批量脚本实现。在这个阶段,经常遇到的问题是复杂的逻辑很难实现,纯粹靠脚本化来完成运维操作是不够的。特别是在业务规模的扩大时和复杂化后,运维工作越来越难以应付,需要大量的人力,而且还容易出错,于是出现了运维工具的理念。进入了工具化时代,大家以chef/puppet配置工具为代表,把运维的能力变成一个个的工具能力。此时的基本思想就是通过软件配置的系统实现所有运维的复杂操作。复杂操作的背后仍可能是单机上的脚本操作,因为对运维人员来讲是最容易维护的,如果全是程序化非常的困难。随着IT敏捷性要求越来越高,需要把运维工具能力平台化,进一步固化运维的常见场景。运维的精细化要求越来越高,需要更多、更综合的运维能力沉淀,更全面的自动化能力和数据分析能力。于是,运维进入了智能化时代。
因此,出现了DevOPS这一解决工具化的方案或者说是一种思想。近几年,DevOPS这个概念在国内外广受关注,其可以实现快速应用部署,从而缩短产品上市时间,降低新版本的故障率,缩短崩溃事件的修复时间和平均恢复时间。DevOPS的目标是通过自动化方式方法,***限度地提高运维流程的可预测性,效率,安全性和可维护性。
张建表示,DevOps通俗点说是负责的方向是OP(运维)、QA(测试)、RD(研发)三者有交集的工作方向,如持续交付,上线部署等;另外也有很多人把他等同于运维研发,偏向解决OP的自动化和平台问题。其实真正的DevOps只是一个名词,在于如何通过软件工程来解决在支撑业务发展过程中的需求,只是开发服务的业务主体不是广大的网友,而是OP、QA、RD等公司内的角色。开发的目标,是让各个环节的效率提升,将人力从繁琐的手动操作中释放出来,打通各个部门各个环节的数据与操作等。如果要做一个长远的企业,统一和稳定的基础服务是提高业务发展生产力不可或缺的。
看百度外卖如何通过软件工程的思想构建运维平台
百度外卖如何用了不到一年的时间,就完成了11个业务平台,6个通用服务,11+ golang lib库,满足了30+业务服务的对接,实现了对公司spinoff和业务快速迭代一个很好的的基础支撑。张建坦言:“这一切都源于我们采用了SRE这一方法论。SRE是Site Reliability Engineer网站可靠性工程师的简称,它由谷歌提出,是其在运维模式上的全新探索,SRE就是用软件工程师的方法和手段,招软件工程师来解决运维的难题,也是 DevOps 思想在运维方面的真正实践。”
他指出,DevOps注重运维流程自动化,而SRE更注重可靠性,系统性思维。与DevOPS比起来,SRE更广泛更有深度,因为可靠性从上至下都可以去做,永无止境。另外,SRE的一套方法论更完善。对很多人来说DevOps和SRE做的事情是一样的,只是一个名词而已,但是其侧重点不一样,方法论基础完全不一样。SRE在运维实践上的一个亮点是构建平台化的服务体系,可以平衡服务不可用以及产品快速创新、提高运维效率之间的风险。因此,百度外卖在2016年成立了专门SRE团队,为百度外卖Spinoff提供的全面技术支持与平台开发,SRE团队打造了运维一站式服务平台Pacific和数据展示与报警平台Atlantic两大技术平台。
Pacific 平台导航界面
Pacific平台网络监控界面
在平台的建设过程中,考虑到运维需要管理各种资源,依赖服务复杂、部署和执行分散、流程管控环节多等特点,将平台组成分为业务逻辑和通用服务。建立统一技术栈,采用开发效率、执行效率和可维护性高的GO语言,最终做到模块功能可复用,代码可复用,编程通用性。
平台构建阶段
在Spinoff的期间,团队和平台从无到有. 开发需求量大,人员不足的情况下,实践了一些开发思路,如:权衡业务需求和开发需求达到双赢的目的。
一方面,为了快速实现并加强平台的扩展性,采用微服务构建方式. 通过服务与服务之间单向访问,不提供回调模式,解决微服务调用复杂度问题;采用 golang+ 二进制内嵌静态资源的方式,解决微服务部署复杂度问题。另一方面,为了增加团队和技术栈的成长性, 引入了很多开源的思想和模块. 如:灵活利用K8s的APIServer工作方式实现配置中心等,深度定制Open-Falcon+Grafana满足数据报警与展示的需求.
采访***,张建表示,百度外卖在运维过程中积累了丰富经验,他将带到WOTA2017全球架构与运维技术峰会上:“我将分享百度外卖如何在不到1年的时间内完成大量的平台开发,满足业务迁移与迭代的需求的***实践。主要从如何提取通用性、抓住哪些核心点、如何保证扩展性这几个方面进行阐述。比如:如何在众多需求中找到最核心的,如何优先解决通用性问题,提供通用性解决方案和服务避免重复工作。”
World Of Tech 专注互联网IT技术领域
三大章节,15大技术专场,
50+国内外一线互联网精英大咖站台
打造兼顾技术视野、技术实战、技术前瞻的
密集式干货集中营!
【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】