简而言之,这一系列文章讲述了这么一个故事,那就是指导我们尽快地学习如何将想法转化为收入,这就是现代DevOps运动的精髓。
具体来说,在第1部分中,我们讨论了DevOps的文化和目标。
在第2部分中,我们讨论了如何使用Terraform为代码部署建设基础。当然了,Terraform也是代码!
因此,在这篇文章中,我们将讨论如何使所有这些代码无处不在。剧透一下,接下来讲的会是关于Git的!
另外我们还将讨论如何使用此Git业务来构建和打造你的个人形象(影响)。
作为参考,我们将以此开始我们的学习之旅:
那么当我们谈论“版本控制”时我们是想表达什么?
想象一下,你正在开发一些软件,变更非常频繁,你需要根据需求来添加或删除功能。在一些情况下,最新的一次变更将会产生阻断性变化。换句话来说就是无论你最后做了什么,它都打破了之前的工作。
怎么办?
如果你相对落后的话,你可能倾向于将第一个文件命名为:awesome_code.pl
。
在你开始做出改变之前你需要保留有用的东西,以防你需要回滚到这一阶段。
因此,你会将文件重命名为:awesome_code.12.25.2018.pl
。
这样做也OK,直到某一天你会在每天进行多次更改,所以你最终会得到这样的结果:awesome_code.GOOD.12.25.2018.pl
。
诸如此类。
当然,在专业的环境中,你有多个团队会在相同的代码库上进行协作,这将进一步打破这个模型。
毋庸置疑,这种做法很快就会产生混乱。
源代码控制
源代码控制,顾名思义,一种将文件保存在集中位置的方法,多个团队可以在公共代码库上协同工作。
现在,这个想法已经不新奇了。最早提到这种东西甚至可以追溯到1972年!所以,我们应该将代码集中在一个地方的想法肯定是很古老的了。
然而,相对较新的一个想法就是所有生产环境的产物都必须进行版本控制。
那是什么意思呢?
这意味着涉及生产环境的所有内容都必须存储在版本控制中,他们需要被跟踪追溯,审核以及更改历史记录。
此外,强制执行“所有产品必须版本化”的规定实际上迫使你以“自动化为先”的思维方式处理问题。
例如,当你决定在AWS的开发环境中单击操作复杂问题时,你可以停下来并思考,“所有这些都是点击操作可以成为版本化产物吗?”
当然,这个问题的答案是“不”。因此虽然可以通过UI进行快速原型查看是否有效,但这些原型必须是短暂运行的。从长远来看,请确保使用Terraform或其他基础设施即代码工具来执行所有操作。
那么如果一切都是可版本化的,那么我们如何存储和管理这些东西呢?
答案就是Git。
Git
直到Git出现之前,使用像SVN或其他的源代码控制系统会很笨重,用户不友好的,并且通常使用起来非常痛苦。
Git的不同之处在于它包含了分布式源代码控制的概念。
换句话说,当你正在处理更改时,你不会将其他人锁定在集中式源码仓库外。相反,你正在处理的只是代码库的一个完整的副本,最后将该副本合并到主存储库中。
请记住,以上对Git如何工作的讲述有些粗略,过度简化了。但就本文想要表达的内容来说,这已经足够了,即使知道Git的内部工作方式有价值,我们还需要一段时间才能掌握。
现在,只需要记住Git不像SVN那样古老。它是一个分布式源代码控制系统,可供多个团队安稳、安全地在共享代码库上工作。
这对我们意味着什么呢?
明确一下,我强烈支持这一说法,如果不知道Git是如何工作的,你就无法成为一名专业的DevOps(云)工程师。就这么简单。
好的,那么如何学习Git呢?
我必须说,在Google上搜索Git教程可能会得到非常全面和非常令人困惑的教程。
即便如此,其中某一些还是非常好的。
我比较推荐大家阅读,学习和练习的一系列教程是Atlassian的Git教程。
这个教程讲的非常好,特别是Git Workflows这一部分,它被世界各地的专业软件工程师所使用。
另一个非常好的教程是Learn Git Branching。
Atlassian教程只是让你阅读和学习(如果那是你喜欢的方式),而Learn Git Branching是一个互动教程。
无论如何,如果你不明白Git是如何工作的,你将无法在这个领域走得更远!
我不得不再次强调这一点,缺乏对Git特性分支如何工作的理解,或者未能解释Gitflow,是导致DevOps工程师中99%的人落选的原因。
这很关键,你可以在参加面试前不知道Terraform或是其他流行的基础设施即代码工具是什么,这没关系,你都可以在以后的工作中学习它。
但是不知道Git及其工作方式的话,表明你缺乏现代软件工程最佳实践的基础知识,DevOps思想或者其他。这向招聘经理传递了一种信号,那就是你的学习曲线会非常陡峭。你肯定不希望这样!
相反,如果你能自信地谈论关于Git的最佳实践的话,这将能让招聘经理觉得你首先具有软件工程的思维方式,这正是你想要表现的形象。
总结一下:你不需要成为世界上最重要的Git专家来获得很棒的DevOps角色,但你确实需要正确地使用Git一段时间以便能够自信地谈论关于它的一些最佳实践。
至少你应该精通以下几项:
- 为一个Git仓库开一个分支
- 创建分支
- 从上游和下游合并更改
- 创建PR
现在,一旦你学习完Git的教程之后,那么去开通一个GitHub帐户吧。
当然GitLab也可以,但是在写这篇文章时,GitHub是当前最流行的开源Git仓库,很多人都在使用它。
开通GitHub帐户后,开始在上面贡献代码!无论你学到什么需要你编写代码的东西,请确保定期将它提交给GitHub。
这不仅可以灌输良好的源代码控制规则,还可以帮助你打造自己的个人形象。
注意:当你在学习如何使用Git+GitHub时,请特别注意Pull Request(或PR,如果你想扮酷的话)。
品牌:向更多人展示你能力的一种方式。
有一个非常好的做法是建立GitHub仓库以此来展示你的能力。在当今很多雇主都会要求你要有一个(维护或者说是包装的很好的)Github账户。
因此,你应该努力拥有一个整洁、精心管理的GitHub账户,这样你就可以把它放在简历上,并以此为傲。
在后面的部分中,我们将讨论如何使用Hugo框架在GitHub上构建一个简单但酷炫的网站。现在你只需要将代码推上GitHub即可。
在之后,随着你的经验越来越丰富,你可能会考虑使用两个GitHub帐户。一个用于存储你编写的练习代码,另一个用于存储你想要向他人展示的代码。
总结一下:
- 学习Git
- 将你学到的所有知识提交贡献到GitHub
- 展示截至目前为止在第一篇和第二篇中所学到的知识
- 从中学习受益
最后,请记住这个领域的最新发展的一些工具,如GitOps。
GitOps将我们迄今为止讨论的所有想法提升到新的水准,所有一切操作都是通过Git,拉取请求和部署管道来完成。
请注意,GitOps和类似的方法是针对业务方面的。具体来说,我们使用Git等复杂的东西并不是因为它们很酷。
相反,我们使用Git来实现业务敏捷性,加速创新并更快地交付功能,这些最终都可以让我们的业务赚到更多钱!
现在就先讲这么多吧!更多内容可以关注我的博客~
转载来源:http://dockone.io/article/8372
原文链接:How To Become a DevOps Engineer In Six Months or Less, Part 3: Version(翻译:fengxsong)