如何在六个月或更短的时间内成为DevOps工程师(三):版本控制


快速回顾

让我们快速回顾一下。

简而言之,这一系列文章讲述了这么一个故事,那就是指导我们尽快地学习如何将想法转化为收入,这就是现代DevOps运动的精髓。

具体来说,在第1部分中,我们讨论了DevOps的文化和目标。

第2部分中,我们讨论了如何使用Terraform为代码部署建设基础。当然了,Terraform也是代码!

因此,在这篇文章中,我们将讨论如何使所有这些代码无处不在。剧透一下,接下来讲的会是关于Git的!

另外我们还将讨论如何使用此Git业务来构建和打造你的个人形象(影响)。

作为参考,我们将以此开始我们的学习之旅:
1.png

那么当我们谈论“版本控制”时我们是想表达什么?

想象一下,你正在开发一些软件,变更非常频繁,你需要根据需求来添加或删除功能。在一些情况下,最新的一次变更将会产生阻断性变化。换句话来说就是无论你最后做了什么,它都打破了之前的工作。

怎么办?

如果你相对落后的话,你可能倾向于将第一个文件命名为: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的内部工作方式有价值,我们还需要一段时间才能掌握。
2.png

现在,只需要记住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,如果你想扮酷的话)。
3.jpeg

品牌:向更多人展示你能力的一种方式。

有一个非常好的做法是建立GitHub仓库以此来展示你的能力。在当今很多雇主都会要求你要有一个(维护或者说是包装的很好的)Github账户。

因此,你应该努力拥有一个整洁、精心管理的GitHub账户,这样你就可以把它放在简历上,并以此为傲。

在后面的部分中,我们将讨论如何使用Hugo框架在GitHub上构建一个简单但酷炫的网站。现在你只需要将代码推上GitHub即可。

在之后,随着你的经验越来越丰富,你可能会考虑使用两个GitHub帐户。一个用于存储你编写的练习代码,另一个用于存储你想要向他人展示的代码。

总结一下:
  • 学习Git
  • 将你学到的所有知识提交贡献到GitHub
  • 展示截至目前为止在第一篇和第二篇中所学到的知识
  • 从中学习受益


最后,请记住这个领域的最新发展的一些工具,如GitOps

GitOps将我们迄今为止讨论的所有想法提升到新的水准,所有一切操作都是通过Git,拉取请求和部署管道来完成。

请注意,GitOps和类似的方法是针对业务方面的。具体来说,我们使用Git等复杂的东西并不是因为它们很酷。

相反,我们使用Git来实现业务敏捷性,加速创新并更快地交付功能,这些最终都可以让我们的业务赚到更多钱!

现在就先讲这么多吧!更多内容可以关注我的博客~

原文链接:How To Become a DevOps Engineer In Six Months or Less, Part 3: Version(翻译:fengxsong)

0 个评论

要回复文章请先登录注册