热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

不懂公关的运维不是好PM:从自动化运维到私有云平台

在360内部,有基础运维团队、网络运维团队、应用运维团队这三个团队为整个公司的研发、产品、运营来提供服务。基础运维和网络运维团队负责IDC及网络建设、硬件管理等&#x

在360内部,有基础运维团队、网络运维团队、应用运维团队这三个团队为整个公司的研发、产品、运营来提供服务。基础运维和网络运维团队负责IDC及网络建设、硬件管理等,而应用运维团队则负责应用运维和数据库层,几个团队相互协作。在2013年秋季的香港OpenStack峰会上,360的系统工程师张玉放介绍了他们使用OpenStack搭建私有云的经验;但是,仅仅有OpenStack是不足以支持上层复杂的业务场景。

\u0026#xD;\n

孔德亮(@Randy素年锦时)是360 WEB平台部高级技术经理,是360 WEB平台的第一位应用运维工程师,也是今年QCon北京2014大会自动化运维专场的讲师。2013年10月,他写了一篇《运维人员需要有产品观》,介绍他们将运维这个服务产品化的思路和经验。运维产品化的成果是一个叫做HULK的平台,这个平台最初只是想解决自动化运维的问题,现在却演变成了承载公司90%业务线的整体私有云解决方案。

\u0026#xD;\n

HULK为360运维团队的工作带来了哪些不同?又如何对360的研发、产品、运营产生价值?在下面的采访中,孔德亮会介绍这个平台的开发历史、底层的技术组成、以及为团队带来了哪些价值。

\u0026#xD;\n

InfoQ:HULK是什么时候开始做的?产品的完成度如何了?

\u0026#xD;\n
\u0026#xD;\n

孔德亮:2013年初开始几个人利用业务时间尝试,初期主要解决运维自动化问题,下半年以业务为核心,完善中间的关联关系,为开发、运维、DBA等提供整体的解决方案,同时注重交互体验,目前正在逐步整合公司各开发团队的技术产出,沉淀成通用基础服务供平台用户使用。自动化运维只是HULK其中的一部分。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:360的私有云底层用OpenStack搭建,你们团队负责对上提供主机类、Web类、DB类服务。对下你们主要用到了OpenStack的哪些组件?

\u0026#xD;\n
\u0026#xD;\n

孔德亮:主要用到Nova、Horizon、Glance、Keystone。

\u0026#xD;\n

Nova及API:拿Nova做虚拟化的承载,虚拟机用Xen,用OpenStack的对应的Nova的API取出数据,做HULK系统的资源统计和分析。

\u0026#xD;\n

Horizon:就是做虚拟机创建查看功能,后期也准备用API与HULK联动。如果这部分做好,可能依赖Horizon的地方会少一些。

\u0026#xD;\n

Glance和Keystone是对应用层和数据库层不可见的,所以我们基本没有什么交互。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:HULK平台从2013年初开始研发,从最初解决自动化运维为目的,发展到现在的私有云整体解决方案。如果2013年初的时候,OpenStack的Trove(DB)和Heat(运维)等项目已经成熟,你们是否仍然会选择自己研发这套HULK?

\u0026#xD;\n
\u0026#xD;\n

孔德亮:从Heat和Trove的目标来看,的确是一套比较好的应用运维解决方案。但在做云平台最早选型的时候,需要考虑是通用性多一点还是更适合现有公司的业务架构和逻辑。奇虎内部核心文化中有一个概念叫小步快跑,如果冒然就考虑上述不成熟且大而全的东西,一方面是技术风险比较大,另一方面是需要公司整个的上层技术体系有一定的变化,从面向用户的角度,我们也不希望这么做;另一方面国内较大的互联网公司都是自己开发做自己的应用运维和数据库管理系统,并且都做得风生水起,可圈可点,我们有大环境做保证,所以最终选择了自己实现这部分的逻辑,快速试错。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:你们的DB服务是跑在物理机还是虚拟机上?如果是物理机,那么物理机和虚拟机的混合环境你们是通过什么方法统一管理的呢?

\u0026#xD;\n
\u0026#xD;\n

孔德亮:我们对服务器引入了标签的概念,每一台服务器自己都被贴了一堆的标签,标签标注是虚拟机而不是物理机,跑着DB的3306和3307端口,提供着那些服务,配置信息。机器本身会向HULK定期同步自己的标签,基于自身的标签以及我们定义的什么标签该干什么事做一些自动化的操作。

\u0026#xD;\n

同时在HULK上面,我们封装了SaltStack作为命令执行系统的底层,基于HULK的关联关系,统一下发各种命令,执行各类操作。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:HULK提供了代码提交、自动测试、自动部署的服务。对开发团队而言,在HULK上进行这些操作,和没有HULK的时候相比,操作流程上有什么区别?

\u0026#xD;\n
\u0026#xD;\n

孔德亮:传统的操作流程是开发团队写代码提交svn或git,然后采用ssh或者rsync等方式串行的同步到部署的服务器上,有很多问题,比如服务器多了代码上线慢,一个疏忽可能发错代码,另外开发、测试环境与线上环境不一致,无法快速扩容,无法跟踪历史快速回退等等问题。

\u0026#xD;\n

HULK整合了奇虎部分优秀团队的经验,提供了基于这部分的解决方案,比如树形分布式的结构保障跨机房间代码只传输一份,并行发送保障千台的效率在分钟级完成,提供严格一致的线上线下测试环境,回归机,灰度上线,发布历史记录,最终一致性检查及一键回退等等,另外的亮点是我们有一个web化的界面,用户只需要点击几下,即可实现从版本控制工具下拉代码,上传中心分发,提交测试,灰度发布等等工作实现了代码发布、测试,部署的所见即所得。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:在HULK上部署监控、日志收集模块,和没有HULK的时候做监控和日志收集,又有什么区别?

\u0026#xD;\n
\u0026#xD;\n

孔德亮:HULK给监控带来的好处主要是它整合了各类关系,比如系统监控以前你看到的是某个机器磁盘满了,现在你看到的是某个业务下作为引擎服务的某个机器磁盘满了,这样的好处就在于你可以获得更多的信息,将监控分级,对于不重要的业务或者服务,可以根据冗余信息推迟处理或者不处理。

\u0026#xD;\n

日志收集这里我们采用的是puppet+scribe的组合,将一个机房的日志发送到机房中转机然后传给hadoop等作为存储和计算。puppet保障了scribe的配置的强一致性以及确保服务的可用性,scribe作为客户端的日志发送代理,没有HULK的时候,开发团队的日志收集千奇百怪;通过上述成熟的解决方案,规约了用户日志的存储路径,统一的使用方式,也极大的稳定了日志统计的服务。

\u0026#xD;\n
\u0026#xD;\n

InfoQ:你把运维做成了产品经理,把人工服务做成了自助平台。坦白讲,你觉得这跟360重视产品经理的公司氛围有关吗?你如何评价在360内部,研发、运维、产品、运营之间的关系?

\u0026#xD;\n
\u0026#xD;\n

孔德亮:我承认公司的文化、氛围对我有很大的影响,老周也把我和很多产品经理放在一起学习、讨论。我开始想不明白,觉得自己是做技术的,学这些没啥用,现在认为不一定做面向最终用户的产品才是“产品经理”,前台、行政也可以是产品经理,把自己的工作看作产品,给用户创造价值。

\u0026#xD;\n

这话听上去有点虚,结合HULK功能举个例子:我提倡从技术支持升级为技术运营,是想让团队把HULK当作一个真正的产品,拓展思路,去创新,激发大家的潜能给与用户超出预期的体验。不仅仅是响应别人提出的技术需求。比如一个初创项目,从申请资源、软件部署、配置管理、DB实例、负载均衡这是必须有的过程,我们追求极致就把这个过程变成了30秒,可能有很多不成熟,但是抓到了核心点“唯快不破”。

\u0026#xD;\n

HULK也是当做产品在运营,走访用户收集反馈,有专业的前端开发,UI交互设计。我们也有上线的发布会,同时定制了海报,笔记本等小礼品,培养了内部的粉丝一起打造这个平台。我们的宣传语是:“HULK云平台——让产品试错的更快更廉价”。

\u0026#xD;\n

在360内部,为了一个产品的成功,研发、运维、产品、运营都是为这个产品服务的,做好了大伙分蛋糕,做不好都倒霉,目标一致。

\u0026#xD;\n

感谢孔德亮对本文的审校。

\u0026#xD;\n

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。


推荐阅读
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • 在GitHub上克隆vue-element-admin项目时遇到依赖安装错误
    在 GitHub 上克隆 vue-element-admin 项目后,使用 `npm install` 安装依赖时遇到了未知的 Git 错误。具体错误信息为 `npm ERR! code 128`,提示命令执行失败。这可能是由于网络问题、Git 配置不正确或某些依赖包的仓库地址无效导致的。建议检查网络连接、更新 Git 版本并确保所有依赖项的 URL 正确无误。 ... [详细]
  • AppFog 是一个基于 CloudFoundry 的多语言 PaaS(平台即服务)提供商,允许用户在其平台上轻松构建和部署 Web 应用程序。本文将通过详细的图文步骤,指导读者如何在 AppFog 免费云平台上成功部署 WordPress,帮助用户快速搭建个人博客或网站。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
author-avatar
拍友2502904975
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有