大家好,我是孔令飞,字节跳动云原生开发专家、前腾讯云原生技术专家;《企业级Go项目开发实战》作者,云原生实战营 知识星球星主。欢迎关注我的公众号【令飞编程】,干货不错过。
我们当前正处在云原生时代,有大量的基础设施需要使用云原生技术栈去搭建或者重构,也有大量的业务需要云原生化。因此,行业新增了大量的云原生岗位。因为云原生技术,相较于普通的业务开发,门槛更高、人才更少,所以云原生岗位的薪资普遍处在高位数。
在此背景下,行业及我的周围,有很多开发者想转型云原生开发(尤其是 Go 语言开发者,因为少了语言门槛),那么为什么要进入云原生领域,以及如何进阶为云原生高级开发工程师呢?本文,我来给你详细分析下。
本文主要包含以下 2 个部分:
- 为什么要学习云原生开发?
- 如何进阶为云原生高级开发工程师?
提示:关于如何进阶为 Go 语言高级开发工程师,请阅读文章:如何进阶为 Go 语言高级开发工程师?
为什么要学习云原生开发?
云原生时代,涌现了一大批的理念,技术架构和开源项目(例如:Docker、Kubernetes、Prometheus 等)。通过走进云原生的圈子,我们可以学习到优秀的开发理念、编程技巧和实现方式,以此反哺我们的 Go 开发能力。
另外,云原生时代,大量的新技术架构、开源项目共同实现云原生的理念,这就导致企业会额外多出很多组件,带来了维护成本。为了节省成本,提高效率,企业通常会选择将这些基础能力下沉,通过中台的形式对外提供各种能力。这些特点也产生了一个新的就业方向:基础架构开发。基础架构开发因为从业者少、门槛高等原因,也导致了,基础架构开发者的薪资普遍要比业务开发者高。
相较于业务开发来说,基础架构开发更聚焦于技术,当然技术最终是要服务于业务的。对于一个刚毕业,或者技术能力需要提升的开发者来说,也许一开始选择基础架构的就业方向会更好,因为通过基础架构开发,开发者能够更好地打磨自己的研发能力,为以后转向业务开发做好技术储备。另外基础架构开发,相较于业务开发来说,跟业务解耦,后期可以无缝转型为业务开发。加入云原生圈子,你的就业范围更广、未来可塑性更强。
当前绝大部分企业内部(例如:BAT、美团、字节跳动、快手等一线大厂),为了降本增效,都在加速推进业务的容器化、云原生化。通过学习云原生技术,你可以加入到云原生改造大军中,进而提高你的职场竞争力。另外,作为容器领域的事实标准,Kubernetes 已经成为后端开发工程师的必修技术栈。
综合以上,学习云原生相关技术,可以带给你更广泛的就业选择,更高的薪资,和未来更多的选择项。因此,作为一名 Go 开发者,一定要去学习云原生技术。
上面说了很多废话,目的只有一个:希望你能坚定的去学习 Go 语言和云原生技术,真的很有价值。既然学习 Go 和云原生技术这么有价值,那么如何学习呢?接下来,我就详细给你介绍下。
如何进阶为云原生高级开发工程师?
在开发者阶段,你通过自己的努力成为一名优秀的 Go 开发工程师之后,可能会遇到职业瓶颈。这时候,你突破瓶颈的的一个行之有效的好方法,便是转型为云原生开发工程师。云原生开发工程师,涉及的面更广,技术更深,这可以使你顺其自然的成为一名优秀的技术架构师。当你进阶为技术架构师之后,你的职业天花板会更高。
想要成为一名高级云原生开发工程师,同样需要经历以下 4 个阶段:
- 学习云原生核心基础知识;
- 学习云原生编程;
- 进行云原生编程实战;
- 精进云原生编程能力。
因为每个阶段的学习方式跟学习 Go 语言一致,里面的具体学习细节,我就不再详细介绍。
阶段一:学习云原生核心基础知识
云原生技术栈内容很多,不可能、也不需要把所有的技术栈都深入学习一遍。在这个阶段,我们可以学习一些基础、核心的技术栈。具体,建议你按顺序学习以下技术栈:
上面这些技术栈,是相对全面的云原生技术栈。你没必要、也没精力都去学完。这里建议你有优先学习微服务、Docker、Kuberentes 这些基石级的云原生技术栈。其他技术栈,你可以后面有时间慢慢补充。每个技术栈,推荐的学习材料如下:
- 微服务:《微服务设计》
- Docker:《Docker 技术入门与实战》(第 3 版)、《Docker 容器与容器云》(第 2 版)
- Kubernetes:《Kubernetes 权威指南:从 Docker 到 Kubernetes 实践全接触》(第 5 版)、《基于 Kubernetes 的容器云平台实战》
- Knative: Knative Documentation
- Prometheus:Prometheus Documentation
- Jaeger:Jaeger Documentation
- KVM:《KVM 虚拟化技术: 实战与原理解析》
- Istio:《云原生服务网格 Istio:原理、实践、架构与源码解析》
- Kafka:《Apache Kafka 实战》、《Apache Kafka 源码剖析》](https://book.douban.com/subject/27038473/)
- Etcd:etcd 实战课
- Tyk:Tyk Open Source
- Consul:Consul Documentation
- Cilium:Cilium Documentation
- OpenShift:《开源容器云 OpenShift:构建基于 Kubernetes 的企业应用云平台》
其中,Docker、Kubernetes 因为比较重要,建议你根据时间安排,学习 2 本书。
阶段二:学习云原生编程
在阶段一中,我们学习了核心的云原生技术栈,但这些技术栈,并不会教你怎么去进行 Kubernetes 编程。
学习 Kubernetes 编程,最好的方法是学习一门优质的 Kubernetes 编程实战课。当前行业中,优质的 Kubernetes 编程实战课并不多,这里强烈推荐你学习我的云原生编程实战课:Kubernetes 开发实战课。
阶段三:进行云原生编程实战
通过阶段一、阶段二,你已经具备了从事云原生开发相关的工作和能力,接下来你需要做的,就是在工作中积极主动地承担更多的云原生相关的开发工作。这里建议你根据以下顺序,找一个机会,参与到具体的云原生开发工作中,通过真正的工作实战来继续打磨你的云原生开发能力,并将所学回馈给工作:
- 团队内如果有云原生相关开发工作,你可以主动为自己争取,参与其中;
- 如果团队内没有云原生相关工作岗位,并且在综合评估后,你觉得从事云原生开发工作,比你当前收益更高,你可以选择在合适的时机申请内部转岗云原生相关开发岗位上。当然,你也可以在当前岗位认真工作,并等待机会;
- 跳槽:如果你经过认真思考后,觉得从事云原生相关岗位对你收益最大,并且公司内、团队内,现在和未来都没有相关的工作机会,你可以选择在合适的时机跳槽,并选择云原生相关开发岗位。
另外,在你进行云原生编程实战的时候,同样也可以根据以工作需求为驱动、以开源项目为切入点、以二次开发为提升手段的思路去进行编程实战。
阶段四:精进云原生编程能力
在这个阶段,你需要通过不断的学习来打磨、精进你的云原生编程能力。一些行之有效的方法是阅读 Kubernetes 项目的源码。
提示: 如果你想了解如何进阶为云原生高级开发工程师,可以关注我的公众号【令飞编程】,回复【资料】免费获取全套 Go + 云原生学习资料。如果你想进阶为云原生高级开发工程师,可以加入我的 云原生实战营。
- 您的支持是我写作的最大动力!如果这篇文章对您有帮助,感谢点赞和关注;
- 关注公众号【令飞编程】,干货不错过。回复【资料】免费获取全套 Go + 云原生学习资料;