37

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

 5 years ago
source link: http://dockone.io/article/8372?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

快速回顾

让我们快速回顾一下。

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

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

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

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

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

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

v2MNnam.png!web

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

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

怎么办?

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

Yr6VfmI.png!web

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

Zj2AZfQ.jpg!web

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

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

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

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

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

总结一下:

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

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

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

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

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

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

(翻译:fengxsong)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK