本来继续翻译第六章节,第六章节主要介绍的是运维的理论和一些很有效的策略。但是,发现感觉这些也用处不大。就没有继续翻译的动力了。差不多25篇文章来介绍DevOps的文化和一些常识,术语,其中持续集成(CI)和持续交付(CD)显然就是DevOps的核心部分。DevOps这个话题很大,包含技术很广。不能简单的认为就是开发加上运维这两个技术。
我想,到了这里DevOps的基础部分应该够用,足够你来了解什么是DevOps,DevOps能干些什么的,肯定能帮你回答这些问题。接下来的重点,是如何进入DevOps相关的项目,如何学习,如何展开工作的话题。看完这20多篇DevOps基础文章,可能你会问,你现在算不算一个DevOps工程师,或者想知道自己处于什么水平。我的答案是,肯定不是,你的DevOps之路还没有开始呢。理论的一些重要部分,介绍完了,就应该要具体实战练习。
如何进入到DevOps的项目,这个看你项目经历和公司是否在做这方面的研发和投入。很多小公司是玩不起DevOps的,这完全就是颠覆了传统的软件开发,测试,运维的模式。所以,这里我只能聊聊,如何学习DevOps,如何获取和掌握这个行业的一些基础的技能。我大概写了一个学习路线,我个人认为,可能比较适合如何入门的这么一个学习方式。
1.Dev
这里,首先当然要说开发了。开发技术确实应该放在第一位,当然,开发一般就认为是代码能力水平。DevOps如何要求写写底层架构
代码和底层业务模型核心代码,这个只能是开发去做。测试或者测试开发肯定实现不了,代码能力达不到要求。基本上是要求在大数据,云计算相关背景经历。例如,如何把底层基础架构资源全部转换成代码方式去调度,这个真的太厉害。
这部分重点就是,开发语言的选择。如果你一定要问选择什么语言。例如java还是python,建议Java优先,python其次。完成DevOps自动化第三门重要的语言就是shell编程。然后就是一些动态脚本语言,例如groovy和perl。当然还有其他的,例如go语言。
这个,我没有太多好的建议。本人一直在学习Java基础,python也会一些。一句话,把一门语言练成你常用,能舒服写代码的程度,然后考虑继续提升第二门语言。有些人喜欢系统学习第二门语言,有人就随便翻翻书就能写出代码。确实没有好的推荐和学习资源。
2.Ops
运维,你的第一反应就是要学习好Linux课程。Linux真的很重要,小到一个简单shell命令,大到shell编程和运维监控自动化等。
建议,《学习鸟哥私房菜系列》和《linux就该这么学》,这两本书,网上也有对应的pdf文档下载。
3.Groovy语言
单独拉出来,是因为,我们很多测试都需要在Jenkins的Pipeline上完成和实现。这门语言最好有Java基础,是基于Java语言开发的一门扩展的动态脚本语言。Jenkins的
核心Pipeline功能实现就是Groovy代码开发的。
学习资源:
- groovy 官网的文档,这个很权威,当然我也没有坚持看完。
- w3cschool有一个中文的文档,需要自己去查找一下
- 市场上,包括国外我只找到了一个视频教程,国内根本没有相关教程。
- 我买过一本书《Groovy程序设计》,工作中参考用,用到会翻一翻。
4.Jenkins Pipeline
这里我不是说不要学习Jenkins基本管理和维护知识,我把这些知识放到基础,也就是说能在UI操作的技术,都属于Jenkins基础。我博客也有一个Jenkins入门到打包实战,覆盖了大部分的基础知识点。这里我要提倡的是学习Jenkins的高级部分,pipeline相关的自动化。
CI和CD自动化大部分都是以pipeline代码的形式保留,什么是CI pipeline代码,你现在无法知道,等学习了,你才会明白和体会Jenkins的强大。可以这么说,Jenkins UI上能操作的部分,在pipeline代码里都能写代码调用来实现。例如打包后发送邮件通知,代码是完全可以实现,还有构建的变量,字符串变量,选择变量都是代码来写。
接下来,我博客新开一个系列,主要写Jenkins高级篇之Pipeline。我会翻译一部分官网的文章,还有根据我学习经历添加一部分pipeline代码实战的文章。这部分学习资源,视频市场上也几乎没有,文章也是零散的几篇,最权威还是去官网啃英文,认真看文档。
5.Docker
这个Docker容器化技术非常火,我也只是学了一点点基础。暂时放在Pipeline学习之后来学。我基本上学习覆盖到了Docker操作常用的命令和一些基本Docker领域的概念。如果后续有机会,我再来补充Docker部分。不管如何,先完好pipeline,让自动化在Jenkins上跑起来就感觉很厉害了。