发布时间:2023-05-23 12:00
大家好,我是你们的老朋友老王随聊,今天和大家讨论的话题——大学生职场小白该如何学习云原生?
伴随云计算的滚滚浪潮,云原生(CloudNative)概念应运而生,云原生很火,火得一塌糊涂,2022年了,有人说:"如果你还不懂云原生,那真的out了”。这是真的吗?
另外很多文章每天讲云原生,却鲜少有人告诉你到底什么是云原生,它是怎么来的,底层是什么?很多时候读完一些文章,大多会感觉云绕雾罩,一知半解,总之虚得很;甚至会让你一度怀疑自己的智商。今天,老王带着大家看看究竟什么是云原生。欢迎加入老王的成长社区,我们一起进步
社区新上线两大专栏:【大学生成长计划】和【职场小白成长计划】,老王将携手多位业界技术大佬分享我们这些年的工作经验,希望对在校或在职的小伙伴能起到抛砖引玉的效果!
目录
1、云原生基本了解
1.1 云计算的概念
1.2 云的概念
1.3 原生的概念
1.4 云原生的概念
2、云原生的发展
3、云原生所需的技术
3.1 容器(container)
3.2 Kubernetes(K8s)
3.3 微服务(Microservices)
3.4 服务网格(Service Mesh)
3.5 无服务(Serverless)
3.6 DevOps(开发/测试/运维)
3.7 云(Cloud)
4、云原生的岗位
4.1 云原生运维与安全
4.2 云原生开发工程师
4.3 云原生应用开发
4.4 云原生架构师
5、职场新手/大学生该怎么学
5.1 大学生 & 职场新手
5.2 职场新手
云计算,属于一种分布式计算。主要是通过网络将巨大的数据计算处理程序分解成无数个小程序,然后,通过多台服务器组成的系统集群,进行处理和分析这些小程序得到结果并返回给用户。
分布式计算主要解决了任务分发、并进行计算和结果合并。因而,云计算又称为网格计算。通过这项技术,可以在很短的时间内(毫秒级、亚秒级)完成对数以万计的海量数据处理,从而达到强大的网络服务。
关于大数据相关基础知识,可以到 大数据成长交流社区了解。
云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS、PaaS和SaaS。
云概念是基于“云计算”技术,实现各种终端设备(电脑、手机、电视)之间的互联互通。用户享受的所有资源、所有应用程序全部都由一个存储和运算能力超强的云端后台来提供。不管你在何时何地,都能享受云计算提供的服务。
云是网络服务集中化管理的一种比喻说法。
原生,可以理解为土生土长的意思,就像你刚出生后就具备本地方言能力。在技术层面,也就是容器初始化时,就具备了一定基础设施能力,你可以基于这些基础设施之上做自己的事情。
当使用云原生技术后,开发者无需考虑底层的技术实现,可以充分发挥云平台的弹性和分布式优势,实现快速部署、按需伸缩、不停机交付等。
云原生(CloudNative),现阶段所说的云原生已经不单是一种分布式计算,而是集分布式计算、效用计算、负载均衡、并行计算、网络存储、热备份冗杂和虚拟化等计算机技术的混合体。
简单来说,云原生就是一种构建和运行应用程序的方法,是一套技术体系和方法论。
云原生目前是云计算领域的一个新兴概念,随着物联网、大数据、云计算等信息技术的发展,未来云原生行业将得到快速发展。
而企业也将利用云原生能力,将支撑业务应用的通用技术能力下沉到基础设施底层,为业务应用提供持续稳定的服务能力,最大化实现云的价值。
容器化Docker、Kubernetes、Microservices等这些云原生的基础技术概念,早已不再是停留在“有没有前途”、“该不该学”、“企业是否值得投入”等问题的争论上,而是已成云计算行业的事实标准。随着云原生逐渐在国内企业的落地,学习云原生的需求也日趋突出。
云原生四要素:
微服务: 微服务解决的是高内聚+低耦合的问题。
持续交付:在不影响用户使用服务的前提下频繁的更新和发布新的功能。
容器化:运维不需要关心每个服务使用的技术栈,每个服务都封装在容器中,可以无差别的进行维护。现在流行的容器技术k8s(kubernetes)和docker.
DevOps: 开发和运维一体化,开发和运维不再是单独分开的两个团队,而是一个团队,同时需要提高运维方面的知识和技术。
容器(container)这一概念最早出现在Linux中出现的,又称LXC(Linux Container),主要是通过Cgroups的资源管理能力和Namespace的资源隔离能力结合在一起实现进程级别的隔离。
全称是Kubernetes,由Google 基于 Borg 开源的容器编排调度系统,是一种基于容器技术的分布式架构领先方案。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等功能,用户不需要再过度的关注资源的管理问题,降低操作的复杂度,提高了大规模容器集群管理的便捷性。
微服务则是一种用于构建应用的架构方案,微服务架构有别于为传统的单体应用的是将应用拆分成多个核心功能,每个功能都被称为一个独立的服务,可以单独构建和部署,其中某个服务出现故障也不会影响其他的功能模块,这句体现了其针对特定服务发布,影响小,风险小等特点。
服务网格指的是用于微服务应用的可配置基础架构层。在使用服务网格时通常会提供一个sidecar代理实例,主要处理 service 间的通信、监控、以及一些安全相关的考量,每个serivce里面都会有一个sidecar,同样也提供了服务发现、负载均衡、授权等功能。
根据 CNCF 的定义,Serverless 是指构建和运行不需要服务器管理的应用程序的概念。即开发人员无需关注底层的基础设施,只需要关注应用程序的业务本身就行,且该服务是可以自动扩展。
早期的项目使用的是‘瀑布模型’进行软件交付,即一个阶段所有的完成工作之后再往下一个阶段,但这样的模式无法满足业务快速开发交付及变更需求的情况,于是后面就出现了敏捷开发这一概念,即一种快速应对需求变化软件开发能力,而DevOps就是基于敏捷开发将软件开发/测试人员/IT运维关联在一起,通过工具、组织等方式使开发、测试、发布流程自动化,软件发布频繁,高效。
常听到的云包含:公有云、私有云和混合云。这些都是基于云生态衍生出来的场景,不同的云搭建环境,所需资源亦有所不同,比如公有云是在互联网上发布的云计算服务,而私有云则是在公司内网发布的云计算服务,目前没有一种云计算类型可以解决所有场景出现的问题,怎么选择适合自己的场景则需要根据技术需求决定。
不同职业方向需要掌握的内容存在比较大的差异,云原生基本可以分为以下四个方向:
云原生运维与架构主要聚焦于云原生系统的设计与交付,通过监控统计、自动化等方式维护系统的高并发、高可用、可伸缩性、安全性等。云原生运维有着一些全新的工具和方法论,比较明显地提高了传统运维的技术门槛,也对传统架构提出了新的挑战。
推荐的书籍:基于Kubernetes的云原生DevOps、Kubernetes in Action、云原生模式、Kubernetes设计模式等。
云原生开发工程师除了比较核心的操作系统、网络相关的知识外,还需要掌握云原生时代的“C语言”Golang,同时需要了解Kubernetes编程和源码相关的知识。
推荐书籍:Kubernetes编程、Kubernetes源码剖析、Kubernetes操作器等。
云原生应用开发一般来说主要是广大程序员的事情,云原生应用并不限于某一门编程语言,无论是Java、Python、Golang、PHP、前端开发等,需要掌握的是Docker与容器化(重点)、Kubernetes基础操作(基本入门就行)、微服务、GitOps等相关的内容,所学内容其实并不多,大部分都是交给工具和平台来搞定。
推荐书籍:Docker实战、深入剖析Kubernetes、云原生Java等
当然,作为云原生架构师,前面的知识都需要掌握。
这部分内容,可以做为大学生和职场新手入门级学习教程。尤其是大学生,先大致掌握和了解关于Docker和Kubernetes知识和书籍。这些技术不论如何演化,最后我们还要回归到”原生“二字,也就是底层技术。所以在校大学生,云原生可以做为自己的技术面扩展的一个部分,重点还需要多去掌握一些底层技术,比如 linux知识、Java知识、Golang知识、C/C++知识。当然,大家在学有余力的情况下,可以尝试这深入学习,毕竟技多不压身。
在对前面基础知识的了解之后,需要多动手实战,建议在本地安装部署好 Docker、Kubernetes 集群以及使用云服务商提供的线上托管 Kubernetes搭配来学习,这才贴近企业实际生产时的真实环境。