内容摘要:DevOps这个词大家听过吗?核心意思就是开发与运维,对于一个软件公司,系统开发完交付后就是运维团队的事情了,实践运维过程中,会出问多问题,运维就把问题反馈给开发,开发一看这么低级的问题啊,是你们没用好啊,然后两者互相看不惯,就会出现很多协作上的问题。往往一次更新,就会给运维代来很大麻烦,特别是大系统,服务不能停啊,很多时候就是能不改就不改,系统带病运行,系统越大问题越多,这时候一种新的软件工程理念就出来了,敏捷式开发,接下来逐渐有了很多工具,然后就出现了DevOps的理念和一大批配套技术。
1、什么是DevOps?
关于什么是DevOps其实没有一个严格的定义。我个人认为DevOps更强调一种理念/概念(图1),与之配套的是一套生态工具。涉及到软件开发到运维整个过程。最开始应该是互联网的发展,用户需求也在不断变化,传统软件开发很难跟上需求变更。
从此,一些大公司牵头,逐渐去针对运维和部署过程开发自动化工具,DevOps理念逐渐清晰,各种工具应运而生。
传统软件工程,强调在编码之前,先调研需求,开始概要设计、详细设计,软件出来之后还要进行测试,最后才能交付用户(这也叫瀑布式开发)。这种过程看上去没什么问题,但是实际操作上过于繁琐,一个软件严格按照这套流程开发完,一年半载过去了,这时市场机会已经没有了,软件开发完,即被淘汰。
而现代化软件开发更强调敏捷,针对某一个功能点,快速实现并交付用户(据说国内为手机开发原则:只要发现友商有新功能,开发部要在一天之内拿出应对方案)。俗话说:天下武功,唯快不破*,在很多行业也是如此。
DevOps把写完代码后的测试、集成、部署和运维过程,都实现自动化,与之配套的基础设施只要支持这种模式,那就能让你团队的成果快速具备交付能力,这难道不也是科研成果转化一直追求的目标之一嘛!
2、Github类似的国内相关服务
上面谈到的DevOps理念,最好的体现我觉得就是Github这几年所引导的生态系统。Github的火爆,不是没有道理,因为它提供了一种媒介,大家从中可以学习先进,也可以去实践。近两年来,我用过Github的经历就是,只有你没想到,你先做什么事情,先看看github有没有,如果有,评估一下是否你可以比他们做的更好。
由于Github服务器在国外,我们除了中科院的网络外,访问都很慢。在调研了国内的一些类似服务提供商后,把体会总结一下:
关于使用软件研发环境Gitee、Coding和Github的说明
定位问题,如果你的团队也有代码管理和协同开发需求。建议用Github面向国外用户,宣传和扩大影响力;使用国内的仓库服务,面向国内用户。2020年初,我们团队使用了国内的Gitee和Coding两个DevOps技术提供商产品(都是付费体验):
两者优缺点,首先速度都很快,其次,Gitee功能多技术成熟度高,Coding刚起步限制少(后面是腾讯云支持)。价格Gitee更便宜,Coding按照用户收费空间不限制。俗话说鸡蛋不放在一个篮子里面,为了以防万一,我们两者都用。
Gitee
- Gitee有很多限制,比如文件大小库大小,相比而言,coding要宽松的多。
- Gitee侧重内部开发,重点使用它的issues功能维护问题反馈,wiki发布官方的解决方案和文档;
- Gitee项目支持的notebook的ipynd格式的渲染,提供给用户看python用法教学。
Coding
- Coding的文件大小限制更宽松,单文件小于300m,用于发布一些示例数据文件,提供教学和演示用。
- Coding的静态页面功能,配合sphinx和rtfd来发布python项目的文档和各种成套教学类静态网站。
- Coding支持导入swagger的API,用于发布API接口文档
当然国内也还有很多类似Github的仓库服务Vendor,如果你们团队银子多,也可以直接买个虚拟机,在上面部署一套Gitlab也是一样的。
我们团队的开源项目GEOIST:
https://github.com/igp-gravity/geoist/
如果您访问Github太慢,请访问我们的国内站:
https://gitee.com/cea2020
还有基于腾讯云的Coding,里面的pages很好用
https://cea2020.coding.net/
适合文档发布,比如我们测试了静态网站部署:
Geoist的官方文档
看看是不是比这个快?而且还没广告,Coding的Pages(静态网页)服务由香港的腾讯云提供,估计是用了CDN加速(不知道什么叫CDN,问度娘吧,云服务商才能提供的,自己做一个?那你想多了),国内访问速度很快。相比托管到readthedocs上的,对于墙内的用户,唉没法比。有网自己可以try一下:https://geoist.readthedocs.io/
扩展阅读:
现代化软件开发与可持续的集成方法