如何在六个月或更短的时间内成为DevOps工程师(三):版本控制
简而言之,这一系列文章讲述了这么一个故事,那就是指导我们尽快地学习如何将想法转化为收入,这就是现代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)
如何在六个月或更短的时间内成为DevOps工程师(三):版本控制相关推荐
- [译] 如何在六个月或更短的时间内成为 DevOps 工程师,第一部分 :基础
原文地址:How To Become a DevOps Engineer In Six Months or Less 原文作者:Igor Kantor 译文出自:掘金翻译计划 本文永久链接:githu ...
- 如何在六个月或更短的时间内成为DevOps工程师(一)
[编者的话]本系列文章适用于想向DevOps模型转型的开发人员,或者是受过传统培训,想要了解整个关于DevOps的内容的运维人员,如果不属于以上两者,只是想在职业上寻找变化却不知从何开始的话,也请继续 ...
- 如何在六个月或更短的时间内成为DevOps工程师(二):配置
这是该系列的第二篇,点击此处阅读第一篇. 在第一篇中,我认为DevOps工程的工作是构建全自动的数字流水线,将代码从开发人员的手里上线到生产. 现在,要有效地完成这项工作需要对基本原理有充分的了解,如 ...
- 比特币现金支持者为网络的未来六个月做准备
比特币现金支持者为网络的未来六个月做准备,比特币现金(BCH)网络成立已有六个月,分散化的货币基础设施不断增长.在过去的一周里,围绕生物安全信息交换所及其生态系统出现了许多新消息. 比特币现金网六个月 ...
- 六个月学php,修学六个月心得体会
修学六个月心得体会(转发分享) 各位书友们大家好!首先祝贺各位书友即将进入三级修学.我叫***,是去年11月进班学习的,至今已有半年多了.当初我是偶然的机会听一位朋友说,他去参加一个读书会,在读书会上 ...
- python 比赛成绩预测_大数据新研究:用六个月的跑步记录准确预测马拉松完赛成绩...
随着疫情得到控制,各个城市的马拉松比赛又开始相继恢复.从线上马拉松终于可以再次到各个城市不同的赛道上奔跑,无疑是跑者的福音.积压了大半年的情绪,也激发了跑者更高的训练热情,带来了更多跑量的累积. 而准 ...
- Oracle 加快 Java 迭代速度,功能性版本只维护六个月
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 本文经授权转自开源中国 2018 年,Java 将发生重要改变.正如之前所报道的,它正在转向 ...
- 【GPT-4】立即停止训练比 GPT-4 更强的模型,至少六个月!马斯克、图灵奖得主等数千 AI 专家紧急呼吁
毋庸置疑,ChatGPT.GPT-4 引领了 AI 新时代的到来,但这种让很多环节都可以实现自动化流程的工具也让人颇为恐慌. 据路透社报道,包括图灵奖得主 Yoshua Bengio.伯克利计算机科学 ...
- 数据库查询近一年来的数据(近三个月、近六个月同理)
最近在做一个需求,前台需要展示一个折线图,如下: 所以产生了一个问题,如何按照折线图所需,从数据库查询近一年.近三个月.近六个月的数据呢? 对此,我整理了主流数据库mysql.oracle版本的查询方 ...
最新文章
- 某米浏览器黑名单文件破解
- 分享5个免费的在线 SQL 数据库环境,简直太方便了!
- [导入]web2.0中流行的设计元素:颜色
- OO第三单元JML总结
- oracle adf 自定义lov,Oracle ADF table列自定义过滤组件的方法
- LeetCode 716. 最大栈(双栈 / list+map)
- HttpServletRequest对象
- sql 可以多个分组吗_你知道吗?罗非鱼的品种多达100多个,不单是食用鱼也可以是观赏鱼...
- md360 android,MD360Player4Android 学习的简单使用
- plc原理及应用_一年只一次,百篇电工+PLC技术资料大合集,不看真的亏!
- Android答题计时的代码,Android答题倒计时
- WSL登录失败:未授权用户再次计算机上的请求登录类型
- 认识和选用常用的几种 GPRS 模块(转)
- java为什么有基本类型_你了解Java数据类型吗?
- Java练习题 类 先创建一个Point类,然后定义Trianglele类。在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,然后定义两个方法求三角形的周长、面积。
- java视频马_【B0718】[java视频教程]某马2019年Java进阶课日志框架视频教程 it教程...
- 数据结构与算法A实验六图论---7-1 列出连通集(BFS DFS)
- Ubuntu 安装中文支持
- 西部数据 4TB蓝盘出现问题无法使用
- 万达VS银泰 谁是最后的赢家?
热门文章
- 常用JavaScript函数 71 -(自我总结)
- 妈咪,我找到了!15个实用的Linux find命令示例
- 深入linux中重定向及管道详解
- 谷歌翻译 google translation api
- 在网页中嵌入任意字体的解决方案 (insert any font)
- 博弈——威佐夫博弈(hdu1527,2177)
- 虚拟机安装Vmware-tools
- java向上转型不能调用子类独有的方法
- LeetCode 108. Convert Sorted Array to Binary Search Tree
- LeetCode 287. Find the Duplicate Number