OneOps: 自动化运维开发的管理平台
运维开发(DevOps)是一个比较宽广的领域,拥有着很多优秀的开源或免费软件。下面仅列出了部分相关的软件
部署软件:Fabric, Flightplan
配置管理:Chef, Puppet, Ansible, SaltStack
预警: Nagios
监视:Graphite, Ganglia, Grafana, Kibana
持续集成:Jenkins
编译和发布:Maven, Gradle, Ant
版本控制:Git, SVN
软件分发:Nexus
对于DevOps,开源或免费软件基本上已经足够建立起一个DevOps的工作流程:代码产生 -> 集成测试 -> 发布 -> 部署 -> 监视 -> 预警
建立一个DevOps工作流程的一些现状
仅基于我对于不同类型公司的一个调查,自己的观察总结如下:
小型创业公司 更多的愿意雇用人才去做DevOps的事情,而不是从第三方购买解决方案,原因有:(1)资金不充裕。(2)不愿意过早的受制于第三方的产品。(3)第三方的产品之间换起来,成本太高。
中型科技公司 如果他们有比较强的工程师团队,他们可以直接利用开源DevOps工具,甚至“量体裁衣”。他们可以紧跟主流DevOps开源工具的发展。
大型公司 大致分为三类:
直接购买第三方的解决方案或者外包,因为他们有足够的资金,同时一般这也是最快建立DevOps流程的一种方式。
如果他们有很强的工程师团队,他们可以自己研发一套DevOps的内部工作流程和软件。这样做的原因是,他们能预见市面上的开源软件基本不能满足他们的需求,并且一个长期的DevOps自主研发投入是有必要的。
每一个工程团队都维护自己的DevOps工作流程。一个中等规模以上的科技公司,工程团队的数量可以达到30个。从管理者的角度来看,这种模式呈现了“碎片化”的趋势。
建立一个基于开源软件的DevOps工作流程的一些痛点
针对一个企业的具体情况,需要找到合适的开源软件。
把这些开源软件集成起来,使它们在任何时刻(比如,软件升级),仍然能互相兼容。
大部分开源软件都可以独立运行,有自己的管理方式。如果使用多种开源软件组成一个DevOps工作流程,分别管理它们将会有一定的开销。
基于免费开源的DevOps工作流程管理平台?
从2016年2月起,沃尔玛实验室(WalmartLabs)发布了一个全新的开源项目,称作OneOps. OneOps 是一个自动化运维开发的云管理平台,它正在主导沃尔玛全球电子商务的技术变革。中文媒体对OneOps也进行了大量的报道。
沃尔玛开源自身云运营代码 OneOps代码年底登陆GitHub
WalMart開源旗下的雲端管理平台OneOps
沃尔玛今年底将开源 OneOps 云平台
在试用了OneOps一段时间后,我总结OneOps有以下特点:
DevOps工作流程管理平台:集成主流DevOps开源工具,并且把它们管理在一个平台上。
基于“最佳实践经验”的应用模板,创建一次,多次部署。
支持部署到主流公有云和私有云。
运维极致:自动根据负载,实时拓展应用部署的数量。自动监测,修复工作异常的应用实例。自动监测,替换无法正常工作的应用实例。
推广DevOps文化:降低了工程师,测试,运维人员的依赖关系,加快了产品迭代,降低了软件工程的开销。
OneOps能解决那些问题?谁需要OneOps?
1. 对于需要从共享的基础设施迁移到云端的企业。传统共享的物理基础设施有以下问题:
很难去满足性能上的保证(SLA):当新的团队和已有的团队共享基础设施,或者一个团队的负载突然增加,所有的团队会受到影响。
安全隐患:一个误操作可以把其他团队的数据删除
单一配置:在很少的情况下,单一的系统配置可以满足所有团队的需要。更多的时候,每个团队对于最佳系统配置的定义是不相同的。
浪费或过度利用:当新老团队不断的进出和使用共享的基础设施,很容易出现浪费或者过度利用。
繁琐的流程:当需要更新软件,升级替换已有的基础设施,或者加大基础设施的容量,都需要经过IT部门的层层审批,采购,安装,调试。整个过程一般需要很长的时间。
基于云端的基础设施有以下优点:
弹性需求:每个团队都可以在云端拥有自己的基础设施。更容易满足每个团队对于性能的要求。
无安全隐患:更容易制订和安装安全规则,防止不明登录。
精细配置:根据团队需要,每个团队配置自己的基础设施
避免浪费:云端的基础设施提供不同的计算实例,团队可以选择满足自己需求的基础设施
简易流程:启动一个云端的虚拟机只需要几分钟。
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
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!