【CSDN 编者按】十年前,Netscape创始人、硅谷著名投资人马克·安德森(Marc Andreessen)预言“软件正在吞噬世界”;数年后,软件里90%以上的代码都是开源代码,“开源正在吞噬软件”;如今,“云原生吞噬开源”,开源项目正在向云化演进。在面对全新时代——云原生的到来,开发者应具备哪些知识和能力才能呢?
在《新程序员003:云原生和全面数字化实践》中,我们特邀请具有20多年互联网和金融架构从业经验,MegaEase创始人陈皓(网名左耳朵耗子)为云原生专题撰文!
作者 | 左耳朵耗子(陈皓) 责编 | 张红月
出品 | 《新程序员》编辑部
虚拟化技术的成熟和分布式框架的普及,使应用上云不再是企业转型难题,云原生时代已经悄然来临,随之而来的是技术向云原生架构的升级。那么,在此升级过程中,云生时代的开发者需要具备怎样的知识与能力?
陈皓(左耳朵耗子),20多年的互联网和金融架构从业经验,MegaEase创始人、前阿里云资深架构师、天猫开发总监、亚马逊高级研发经理、汤森路透基础架构师和高级研发经理。经历过“双11”、阿里云、AWS、Amazon仓库预测、实时金融数据发布平台、大规模并行计算等项目和产品开发。
如今,整个数字化进程正在从“企业侧(企业满足内部的IT需求)”转向“用户侧(企业满足外部用户需求)”。不能感知和满足最终用户需求的企业都会失去竞争力。而为了满足用户侧的数字化需求,要求底层IT基础设施至少满足以下五个特性:
适应并响应用户快速变化的需求;
支持大规模用户在线活动;
系统运行更稳定,有更高的SLA(服务等级协议);
生态开放,接入更多数据,进行智能化运作;
更自主可控和更低的成本。
满足这五项能力的系统,并不是简单地用一些开源软件或找几个系统集成商就能搭建出来的,而是有自顶向下的设计和规划,以及大量专业的软件技术和方案构成。
在此要求下,软件和应用架构是真正能够带给企业力量的重要因素,可以较为夸张的说:只要软件架构做得好,基础资源就变得不那么重要了。这里所说的基础资源并不是指Serverless/FaaS、Service Mesh、Kubernetes、API管理、微服务、整体架构观测性、DevOps……由于云原生的出现将云计算方向从此前的资源型转为了服务型。因此,它们都在应用服务层,而不再是基础资源了。
云时代开发者需要掌握的知识技能
在新型数字化转型需求的大潮下,整个行业也正从传统的单体应用/集中式的SOA架构走向更为松散、分布式、标准的微服务架构。微服务架构从万能中间件ESB(Enterprise Service Bus,企业服务总线)的中心化架构,转变成了将控制逻辑以SDK的方式置于服务的去中心化架构,后又演变成控制逻辑与业务逻辑解耦,以Service Mesh为架构的云原生服务化架构。这种演变就是为了解决一个问题:分布式微服务架构极度复杂,对运维能力提出高度挑战。
因此,需要一整套技术门槛很高的控制系统、调度系统以及全面的观测性系统。这些系统不应该再耦合或是侵入到业务逻辑中,而是由专门的基础架构或平台团队打造,企业才可能在进行数字化转型时更专注地解决业务问题,并使所有的业务团队享有统一且标准的技术能力。
于是,在此方向的指引下,作为云时代的开发者,我们需要具备如下知识与能力。
微服务拆分及分层。业务拆分其实是一种业务架构能力,需要熟悉业务并对业务进行抽象、解耦和提取公共功能。这是一个从代码库到软件包,再到数据库的全面拆分,并分层堆叠;
API接口化。所有的程序模块都要通过服务化接口API将其数据保护起来,并随时做好对外开入的准备;
无限伸缩随时迁移能力。所有的应用服务和中间件都需要被设计成具备可无限伸缩的属性,与传统的Iaa层云进行联动;
服务治理。包括服务注册发现、服务流量路由调度、配置管理、健康检查、服务间通信、服务的弹力容错(隔离、限流、重试、幂等、熔断、降级……),以及服务观测性(日志、指针、调用链追踪、性能排名等);
分布式的中间件。包括分布式数据库、分布式缓存、分布式消息队列、分布式大数据处理等。
揭开云原生技术为企业和个人带来的影响与机遇
《新程序员003》从云原生时代下开发者的角度,重点分析新一代的云原生软件架构及云原生技术的现状与趋势,多位云原生技术亲历者从不同角度分享容器与Kubernetes、服务网格、分布式框架与服务治理、云原生化有状态服务等技术的实践经验,以及云原生技术在金融、电信、互联网等行业的应用实例,从而揭开云原生技术为企业和个人带来的影响与机遇,希望能为云原生时代下的开发者提供借鉴和参考。
《新程序员003》云原生专题目录
《新程序员003》即旨在为所有开发者拨开迷雾,讲透云原生时代的开发。
首先,如何准确地定义云原生?它究竟包含了哪些关键技术?阿里云容器服务技术专家、《多云和混合云:云原生多集群和应用管理》作者郝树伟针对这两个问题进行了清晰明确的梳理,通过他的文章,对云原生技术便可了然于胸。
明确了定义和技术,那么对于云原生时代的开发者而言,需要具备哪些知识与能力?左耳朵耗子解答了这个问题。他建议,云原生开发者需要掌握微服务拆分及分层、API 接口化、无限伸缩随时迁移、服务治理、分布式中间件等。
在技术趋势上,Kubernetes 诞生 7 年发展迅猛,已经成为云原生时代的「Android」系统。在这期专题中,Kubernetes 联合创始人 Brendan Burns 深入分享了 Kubernetes 的技术变革和未来演进,是值得所有开发者一读的文章。
《新程序员001-004》已全面上市
现在订阅即有机会获取『CSDN夏季定制T恤』一件
欢迎扫描下方二维码或点击进入立即订阅
即可畅享电子书及精美纸质书。