作者 | 杨阳
《新程序员003:云原生和全面数字化实践》(以下简称《
新程序员 003
》)全面上市啦!由CSDN全力打造、50+专家倾力创作,通过“云原生时代的开发者”和“全面数字化转型”两大专题,为开发者呈上最前沿的技术观点与技术大神、顶级大厂的实践心得及理论知识。
同时,本书以音视频、图文等丰富形式为载体,“电子书+纸质书”同步发行,满足读者各类场景的视听需求。
云原生有没有统一概念呢?当然有。它的提出者Matt Stine将其概括为四个技术要点:DevOps+持续交付+微服务+容器,后来CNCF进一步将服务网格(Service Mesh)和声明式API加进了技术构成之中。然而,即便了解技术,云原生抽象的、基于思维和方法论的属性,也让开发者对它的理论学习变得艰难。
相较技术理论,实践经验对于深度理解云原生更为重要。然而,实践又需要时间来沉淀。据相关数据显示,具有一年以上DevOps实践经验的开发者人数只占总体不到30%。
事实上,很多云原生学习者正站在十字路口,一面是理论学习的艰难,另一面是实践之路的漫长。该如何打破这个困境,在有限的时间内更加精准、高效地学习?
为解决这一难题,《新程序员》“云原生时代的开发者”专题从方法入手,通过“认知解密:开发者需要具备哪些知识和能力?”“技术解密:除了容器和Kubernetes,开发者还应关注什么?”“实践解密:十数家“互联网+传统”知名企业决战云原生”,为开发者带来最佳学习方法和行业经验。
认知解密:开发者需要具备哪些知识和能力?
作为“云原生时代的开发者”专题导读作者,MegaEase创始人陈皓(左耳朵耗子)的个人经历就是给到开发者的第一堂必修课:做技术需要保持初心,有所追求。如何成为“科技弄潮儿”,而非“技术搬砖工”?这位历经两次新兴技术浪潮的软件“老兵”给到开发者的建议是:深刻理解数字化,明确IT基础设施和技术所面向对象已从“企业侧”转向“用户侧”。基于此,开发者就不能再像从前一样“两眼一摸黑,一心写代码”。
那么,如何成长为数字化时期的云原生开发者?在左耳朵耗子看来,需要多考虑如下问题:
-
“我”开发的程序在形成产品之后,是否能够满足用户快速变化的需求?
-
-
系统运行有多高的稳定性,能够支持多高SLA(服务等级协议)?
-
“我”写的代码能不能接入更多数据,还是铁板一块,无法进行任何智能化运作?
在这四点基础上,作为开发者,如果能够站在老板的角度,思考出自主可控且成本更低的方法,那就更好了。
此外,从技术架构的角度来看,整个行业正在从传统的单体应用/集中式的SOA走向更为松散、分布式、标准化的微服务。那么,在去中心化、控制逻辑与业务逻辑解耦、以Service Mesh为理念的云原生架构下,开发者又需要具备哪些能力?
在左耳朵耗子看来,主要包括微服务拆分及分层、API接口化、无限伸缩随时迁移、服务治理,以及分布式的中间件等的架构能力。
-
微服务拆分及分层:熟悉业务,具备抽象、解耦和提取公共功能的能力;
-
API接口化:能够通过服务化接口API将数据进行保护,可随时对外开入;
-
无限伸缩随时迁移:应用服务和中间件需要具备无限伸缩的属性,与传统IaaS层进行联动;
-
服务治理:熟知和运用服务注册发现、服务流量路由调度、配置管理、健康检查、服务间通信、服务的弹力容错,以及服务观测等技能;
-
分布式的中间:熟练操作分布式数据库、分布式缓存、分布式消息队列、分布式大数据处理等。
在了解云原生所需基础认知和架构能力之后,具体可以通过哪些技术进行塑造?
技术解密:除了容器和Kubernetes,开发者还应关注什么?
云原生技术到底发展到什么阶段了?《新程序员003》中,两份云原生重磅报告分别从“用户”和“开发者”两个维度为开发者带来“彼岸”和“此岸”的最新分析。整体来说,无论是对云原生的使用还是开发,都已深入人心。
其中,包括容器技术的采纳率已接近70%、有54.81%的用户使用微服务架构,四成用户使用Serverless技术;与此同时,Docker、Kubernetes(以下简称“K8s”)等应用工具占据开发者心目中的重要位置,其次是微服务架构、全云实践和低代码。
针对开发者颇为关注的K8s,我们有幸邀请到项目联合创始人Brendan Burns,他从作为实用工具集的K8s、强大的云原生生态系统支持,以及开发者是驱动K8s技术变革的关键等五个方面,详细说明K8s在推动云原生技术上的变革作用。如果你正在使用它,不妨从Brendan Burns的介绍中发现未曾了解、加深认知的内容。当然,也不妨提出你的不同观点。
说到K8s,就不得不提它的节点和容器,它们是运行时的基本功能。随着基础设施和应用之间的交付界面逐渐清晰,作为天然边界的“运行时”正在强化能力。据开源安全容器项目Kata Containers联合发起人王旭介绍:“作为K8s的节点代理,Kubelet的功能就是让运行时使容器跑起来。”此外,容器与K8s生产实践中的运行时还有哪些盘根错节的历史渊源?王旭都进行了进一步梳理。
除了运用技术工具,成为优秀的云原生开发者还需要对软件架构了然。单体架构、分布式架构、微服务架构,直到Serverless。每个架构都有各自的优缺点和具体应用场景。近年来,Serverless走上台前,它的概念提出还早于云原生一年,自提出起就被认为是“真正意义上的云计算”。然而,由于缺乏完整且被各个云厂商所遵循的规范,Serverless架构与自身产品和业务逻辑绑定严重。如何解决这一问题?阿里云布道师、Serverless产品经理刘宇认为核心点在于“用Serverless思想开发Serverless应用。”
Chaos Engineering成为近年来谈及云原生避不开的话题,尽管“混沌工程”的名字让人听着就混沌,但它要解决的问题却很清晰:达成云原生时代的可靠性治理。之所以被命名为“混沌”,主要因为它的复杂性,作为提高技术架构弹性能力的复杂技术,也可以被称为“架构架构的技术”。如何通过这样一个高难度的技术解决云原生架构的可靠性治理问题?我们请来了这一领域最早布道的电商行业技术专家——亚马逊云科技资深开发布道师黄帅,作为经典混沌狨书《混沌工程:复杂系统韧性实现之道》的中文合译者,他将分享为什么“混沌工程+韧性工程”是云原生时代可靠性治理的“王炸”。
在工具和架构之外,还有一项云原生技术热度不高,却发挥着“经脉”的作用,它就是被CNCF定义为第五大代表技术的“声明式API”。它的主要作用体现在作为云产品的连接与负载功能组件,支持更多种类的云产品生态,意味着可参与场景更加丰富。对此,API7.ai联合创始人兼CEO温铭通过对Nginx、Kong、Envoy等关键项目的架构梳理,以及从客户端出发还需要完善的需求,来说明如何让云产品的互联成为现实。
实践解密:十数家“互联网+传统”知名企业决战云原生
在对认知、能力,以及技术有深度理解后,就进阶到第三个阶段,也是开发者最为关心的:实践。
如何通过K8s进行生产实践下的可观测性及故障定位?网易数帆技术专家黄久远曾参与了网易云音乐、新闻、严选,以及考拉海购等多个大规模容器化落地项目,当前主要负责轻舟项目的云原生监控和智能运维产品体系搭建。通过多年的实践经验,他将手把手地教授云原生可观测性如何建设,如何故障定位,同时还带来KubeletPlegDurationHigh报警触发Docker问题诊断的全流程。
除了可观测性和故障解决之外,大规模的集群管理也是让企业和开发者颇感头痛的问题。该怎样设计优秀且合理的集群调度系统?这个问题由O2O界NO.1的美团来解答。公司集群调度系统负责人谭霖,通过近十年的集群调度系统设计开发经验,将为你详解美团集群调度系统核心为何从OpenStack转变为K8s,其后又遇到哪些问题,以及如何克服和解决。
云原生为互联网带来的变革有目共睹,传统行业在接受它的“洗礼”之后,又会发生哪些变化?中国工商银行分布式领域研究员马曙晖主要从事混沌工程、API开放平台等领域的研发落地工作。在《混沌工程在中国工商银行的应用实践》一文中,针对金融行业IT架构转型过程中暴露的痛点问题,他通过对具体案例和应用场景的生动叙述,让开发者对“混沌工程”不再混沌。
本专题关于云原生的实践整整70页,除了以上企业,包括腾讯、阿里、蚂蚁集团、火山引擎、快手、Dubbo-go、Apache等十数家知名企业和项目团队都带来了各领域的优质案例。
1:3:6——这是《新程序员003》“云原生时代的开发者”专题“认知&能力、技术&架构、案例&实践”三大部分的构成比例,也是云原生的最佳学习比例。相信这三大解密,能够为技术开发者和管理者带来最精准和高效的云原生普及。
现在点击下方小程序码订阅《
新程序员》,立享会员价,还可以收获纸质收藏本和电子书的双重体验。