OneOps: 自动化运维开发的管理平台

运维开发(DevOps)是一个比较宽广的领域,拥有着很多优秀的开源或免费软件。下面仅列出了部分相关的软件

  1. 部署软件:Fabric, Flightplan

  2. 配置管理:Chef, Puppet, Ansible, SaltStack

  3. 预警: Nagios

  4. 监视:Graphite, Ganglia, Grafana, Kibana

  5. 持续集成:Jenkins

  6. 编译和发布:Maven, Gradle, Ant

  7. 版本控制:Git, SVN

  8. 软件分发:Nexus

对于DevOps,开源或免费软件基本上已经足够建立起一个DevOps的工作流程:代码产生 -> 集成测试 -> 发布 -> 部署 -> 监视 -> 预警

建立一个DevOps工作流程的一些现状

仅基于我对于不同类型公司的一个调查,自己的观察总结如下:

  1. 小型创业公司 更多的愿意雇用人才去做DevOps的事情,而不是从第三方购买解决方案,原因有:(1)资金不充裕。(2)不愿意过早的受制于第三方的产品。(3)第三方的产品之间换起来,成本太高。

  2. 中型科技公司 如果他们有比较强的工程师团队,他们可以直接利用开源DevOps工具,甚至“量体裁衣”。他们可以紧跟主流DevOps开源工具的发展。

  3. 大型公司 大致分为三类:

  4. 直接购买第三方的解决方案或者外包,因为他们有足够的资金,同时一般这也是最快建立DevOps流程的一种方式。

  5. 如果他们有很强的工程师团队,他们可以自己研发一套DevOps的内部工作流程和软件。这样做的原因是,他们能预见市面上的开源软件基本不能满足他们的需求,并且一个长期的DevOps自主研发投入是有必要的。

  6. 每一个工程团队都维护自己的DevOps工作流程。一个中等规模以上的科技公司,工程团队的数量可以达到30个。从管理者的角度来看,这种模式呈现了“碎片化”的趋势。

建立一个基于开源软件的DevOps工作流程的一些痛点

  1. 针对一个企业的具体情况,需要找到合适的开源软件。

  2. 把这些开源软件集成起来,使它们在任何时刻(比如,软件升级),仍然能互相兼容。

  3. 大部分开源软件都可以独立运行,有自己的管理方式。如果使用多种开源软件组成一个DevOps工作流程,分别管理它们将会有一定的开销。

基于免费开源的DevOps工作流程管理平台?

从2016年2月起,沃尔玛实验室(WalmartLabs)发布了一个全新的开源项目,称作OneOps. OneOps 是一个自动化运维开发的云管理平台,它正在主导沃尔玛全球电子商务的技术变革。中文媒体对OneOps也进行了大量的报道。

  1. 沃尔玛开源自身云运营代码 OneOps代码年底登陆GitHub

  2. WalMart開源旗下的雲端管理平台OneOps

  3. 沃尔玛今年底将开源 OneOps 云平台

在试用了OneOps一段时间后,我总结OneOps有以下特点:

  1. DevOps工作流程管理平台:集成主流DevOps开源工具,并且把它们管理在一个平台上。

  2. 基于“最佳实践经验”的应用模板,创建一次,多次部署。

  3. 支持部署到主流公有云和私有云。

  4. 运维极致:自动根据负载,实时拓展应用部署的数量。自动监测,修复工作异常的应用实例。自动监测,替换无法正常工作的应用实例。

  5. 推广DevOps文化:降低了工程师,测试,运维人员的依赖关系,加快了产品迭代,降低了软件工程的开销。

OneOps能解决那些问题?谁需要OneOps?

1. 对于需要从共享的基础设施迁移到云端的企业。传统共享的物理基础设施有以下问题:

  1. 很难去满足性能上的保证(SLA):当新的团队和已有的团队共享基础设施,或者一个团队的负载突然增加,所有的团队会受到影响。

  2. 安全隐患:一个误操作可以把其他团队的数据删除

  3. 单一配置:在很少的情况下,单一的系统配置可以满足所有团队的需要。更多的时候,每个团队对于最佳系统配置的定义是不相同的。

  4. 浪费或过度利用:当新老团队不断的进出和使用共享的基础设施,很容易出现浪费或者过度利用。

  5. 繁琐的流程:当需要更新软件,升级替换已有的基础设施,或者加大基础设施的容量,都需要经过IT部门的层层审批,采购,安装,调试。整个过程一般需要很长的时间。

基于云端的基础设施有以下优点:

  1. 弹性需求:每个团队都可以在云端拥有自己的基础设施。更容易满足每个团队对于性能的要求。

  2. 无安全隐患:更容易制订和安装安全规则,防止不明登录。

  3. 精细配置:根据团队需要,每个团队配置自己的基础设施

  4. 避免浪费:云端的基础设施提供不同的计算实例,团队可以选择满足自己需求的基础设施

  5. 简易流程:启动一个云端的虚拟机只需要几分钟。

OneOps是可以把任何应用都部署到主流公有云和私有云,例如Amazon AWS, Azure, Rackspace, Openstack, 阿里云。

2. 对于需要降低运维开销的企业。运维开销高的企业一般都为工程师团队配备专门的运维人员。现实是:运维人员有不同的技术背景,擅长于不同的DevOps软件,而且运维人员一般只负责所属团队的产品。在大多数情况下,运维人员并不是软件工程师,所以当应用出现了问题,运维人员只能简单的重启有问题的应用。

OneOps采用了DevOps的思维:它把所有和DevOps相关的工作都集成并且呈现在一个平台上,这样是运维工作更加简单,容易操作。在编写程序之外,工程师可以在OneOps上完成很多运维的工作,例如,部署,监测,拓展已有的应用。真正完全的参与到一个产品的生命周期。

3. 对于需要在内部推广“最佳实践经验”的企业。在很多企业内部,存在“重复制造”的问题:通用的核心技术,例如,数据库,分布式计算系统,缓存,被很多团队使用,但是他们之间缺乏沟通和共享最佳的实践经验,会导致一个技术问题会重复在不同的团队中出现。

OneOps把很多通用的核心技术抽象为“模板”,并且把公开的“最佳实践经验”集成到模板里。当团队需要某个技术的时候,他们只需要找到对应的模板,简单的调试模板里的参数,就可以马上部署到自己的云端。这样他们就可以专注于他们自己的应用开发,而不用去寻找“最佳实践经验”去运维这些通用的技术。

4. 对于需要加快产品迭代的企业。很多工程团队有严格固定的产品开发周期,部分原因是工程师和测试人员存在依赖关系,从程序的产生到部署到实际生产需要不同阶段的测试,发布多个测试版本。

OneOps支持部署到主流公有云和私有云,并且拥有“最佳实践经验”的应用模板,所以可以很快的搭建无限量的和生产环境相似的测试环境,加速了测试的效率。OneOps采用了DevOps的思维,相对的减弱了测试和工程师之间的依赖关系。除此之外,OneOps还可以集成Maven/Jenkins/Nexus等软件开发生命周期工具(SDLC),进一步加快产品的开发和迭代。

5. 对于寻找DevOps统一标准的企业。很多企业的DevOps都呈现“碎片化”的趋势。当一个企业发展到一定规模和阶段,它会开始寻找统一的DevOps操作标准,增加软件工程的效率。

OneOps可以在一个平台上管理整个DevOps的工程流程, 集成了主流开源DevOps工具(Chef, Nagios, Git, Jenkins, Nexux...)。对于已经熟悉DevOps工具的人员,OneOps上手容易。更重要的是, OneOps本身是一个开源软件(Apache License 2.0),拥有丰富的应用模板。感兴趣的企业可以直接使用,或者根据需要修改,避免被第三方产品锁住。OneOps正在支持者沃尔玛全球电子商务网站(walmart.com),所以它是一个已经被实践证明的产品。

后续

后面的文章将会利用一个案例去具体介绍如何部署一个应用到云端,比如OpenStack. 也会把OneOps上的大部分应用模板做详细分解。

本文翻译于相同作者的英文博客 https://oneopsblog.wordpress....

关键字:运维自动化, openstack, devops, docker


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部