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

【案例】思科的5人DevOps团队是如何打造千万工件级别,5中心持续交付平台的?

这是一个真实的案例。大家都知道,思科是一个大型跨国公司,在全球有3万+开发人员。虽说人多力量大,但有时候并非如此,人多也可能会制造更多混乱。思科公司内部需要管理的工件已经超过千万,语言种

这是一个真实的案例。大家都知道,思科是一个大型跨国公司,在全球有3万+开发人员。

虽说人多力量大,但有时候并非如此,人多也可能会制造更多混乱。思科公司内部需要管理的工件已经超过千万,语言种类繁多,并且在每一个软件交付过程中,都需要解析依赖,构建,测试,翻译,发布,这让测试,运维的同学感到头疼不已,每次发布软件则如临大敌,发布周期总是拖得很长。


思科不得不开始思考,如何搭建一个高效的工件交付平台,让全球的开发,测试,运维在这个平台上协作,统一流程,弥补 Dev 和 Ops 之间的鸿沟,让跨全球的工件流转和交付速度更快。想要搭建这样的平台,思科面临以下的问题:


1. 如何支持不同语言的仓库:Maven, Docker, Ruby, NPM,Yum,Debian,并且支持高可用?


2. 如何建立统一的持续交付的流水线,包含 Jenkins,Artifactory,SonarQub?


3. 如何支持思科全球跨产品线(核心交换机,Webex,IOT)的3万多开发人员?


所以思科决定成立专门的DevOps 团队,打造统一持续交付平台,来解决这些问题,服务全球开发者。这个背负巨大使命的 DevOps 团队只有5个人,他们该怎么办?


思科 5人DevOps 团队是怎么做的

     

从工件仓库管理开始


最开始是单一的 Nexus 实例,后来比较了 Nexus 和 Artifactory,选择了后者。理由很简单,Artifactory 支持的语言更多,而 Nexus 只支持 Maven,而且 Artifactory 在高可用,高并发,多地复制上有更成熟的方案。



最初的Artifactory单节点仓库在美国东岸 RTP(Raleigh)。仓库管理了多种语言开发的工件,开发,测试,运维有了统一的平台来进行工件的传递和交付,在工件的传递过程中会附加每个阶段的元数据,例如,在测试阶段为工件加上测试的结果和地址,在部署阶段为工件加上部署的目标机信息,这样大大减少了团队的沟通成本,提供了发布速度,并且实现了自动化可重复性发布。


两地部署工件仓库




好东西很快被美国西岸(SJC - San Jose)的同事发现了,也要求在西岸有一个工件仓库管理平台,于是有了第二个节点。美国西岸的构建工件会实时复制到美国东岸 ,这样美国东岸的开发者需要使用某个包时,无需从西岸远程下载,而是在东岸本地下载。



然后,DevOps 团队使用思科的GSS(ACE Global Site Selector),为东西岸的开发者提供了统一入口,就近服务用户。


全球4地部署工件仓库




有了美国东西岸的成功案例,思科把 Artifactory 节点扩展到了英国,印度。美国东岸的仓库会实时推送工件到英国和印度,进行测试或者翻译,英国和印度的测试结果和翻译产出物也推送回美国。



当工件仓库承载了思科每天 TB 级别的下载量,它已经成为了公司的核心资产,DevOps 团队为它做了热备份,也就是图中的SJC-B 数据中心,它作为 SJC-A 的热备份,时刻待命工作,一旦 SJC-A 数据中心宕机,请求会通过 Balancer自动转发到 SJC-B。SJC-A 和 SJC-B 直接的存储通过 Snap Mirror 进行同步,并且使用相同的Oracle 12C数据库存储记录。


此时,RTP做为 整个SJC中心 的热备份,当整个 SJC 都宕掉,GSS 会将全球的流量切换到 RTP 的数据中心。


最后全球部署的拓扑图就是这样。



频繁使用虚拟仓库




在主节点创建虚拟仓库,来代理卫星节点的工件。这样主节点的视图里永远能获取到全球所有的工件。


账户系统架构




由于某种原因,思科没有公开构建系统的信息。上图是账户系统的架构图,和底层解耦,完全通过 API 创建 Jenkins,Artifactory,SonarQube 用户。


DevOps 团队构建的账户系统的 UI。



成果




平台底层的Artifactory仓库已经存储了全思科公司的8百万多工件,每天处理1千万次请求,每天的下载量是3TB(15年的数据)。现在思科每天的下载量更大,核心产品线都依赖于这个平台进行交付,实现按需分配资源,自动化上线,全球分发。



系统上线之后,为思科带来了巨大的效率提升:


  1. 至今节省了1800小时,之后会更多。

  2. 之前人工发布平均时间90分钟,自动化发布只需2分钟。

  3. 重复发布无需额外工作。再多发布需求也不担心。


恭喜!这个5人的 DevOps 团队立了大功!


未来计划



思科DevOps 团队正在调研JFrog Mission Control,计划使用它的 API 来进行全球多地工件仓库的同步,容灾和监控。


参考资料


文中的视频地址:

http://www.jfrogchina.com/#home-videos


下载JFrog Artifactory开源版(代替 Nexus):

http://www.jfrogchina.com/open-source/


下载JFrog Artifactory 企业版(免费试用):

https://www.jfrog.com/artifactory/free-trial/?lang=zh-hans#High-Availability


任何问题欢迎联系我们:info@jfrogchina.com


关于JFrog

公司成立于2008年,在美国、以色列、法国和西班牙拥有超过200名员工。JFrog 拥有3000多个付费客户,其中知名公司包括如Netflix、思科、谷歌、亚马逊。最近,JFrog 连续第二年被德勤评选为50家增长最快的技术公司之一,还被评为硅谷增长最快的私营企业之一。



推荐阅读
  • docker 多物理机容器_Docker(1) 什么是 Docker
    ​1|0学习Docker前的必备知识1|1环境配置的烦恼软件开发最大的麻烦事之一,就是环境配置相信每位编程初学者都会在环境配置上倒腾很久,而作为老师也会 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • DockerDataCenter系列(四)-离线安装UCP和DTR,Go语言社区,Golang程序员人脉社 ... [详细]
  • BPM是什么软件?1、BPM是BusinessProcessManagement的简称,译为业务流程管理,它是一种以规范化的构造端到端的卓越业务流程为中心以持续的提高组织业务绩效为 ... [详细]
  • 智慧博物馆信息系统建设方案
    3.信息化系统建设3.1博物馆RFID藏品管理系统3.1.1系统概述博物馆藏品保管是一项十分复杂又繁琐的工作。从事保管工作除了经常、及时地进行藏品的登记、分类、编目、保养和修 ... [详细]
  • 提供:ZStack云计算原创2016-12-26张鑫讲师介绍张鑫ZStack总架构师、联合创始人《系统虚拟化》主要作者,曾任职Intel开源软件技术中心 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 博客_2018年博客总结
    本文由编程笔记#小编为大家整理,主要介绍了2018年博客总结相关的知识,希望对你有一定的参考价值。前言     ... [详细]
author-avatar
默默追寻爱情
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有