【Techo Day腾讯技术开放日】云原生时代,程序员应该掌握哪些能力?

云原生可以说是目前最火热的一个技术概念,它改变了我们对开发、部署和操作应用程序的思考方式。

越来越多的编程语言、框架开始拥抱云原生,例如 Spring 推出了面向云原生的技术 Spring Native、RedHat 开源了 Java 云原生服务框架 Quarkus。

越来越多的公司在云中构建运行自己的应用程序,打开招聘网站,你会发现云原生方面的工程师的招聘需求非常大,薪资非常可观。

我自己有用过腾讯云的云原生产品,从产品使用体验上来说,我觉得还是非常不错的(真实感受)。基本上你需要的功能,它都能提供给你。最重要的是,这些产品使用起来也比较简单,产品使用文档写的也比较详细,对于开发者非常友好。

云原生有什么优势?

我们上面在讲云原生是什么的时候,其实已经讲了其优势,这里再简单从两个方面总结一下。

  • 对于应用程序来说, 云原生可以赋予其更快速开发上线的能力。应用程序可以更实时、更稳定、更频繁地被部署,而无需完全重新部署。并且,还可以针对特定的服务进行扩缩容,以节省资源。
  • 对于开发者来说,云原生提供的一些开箱即用的能力比如服务治理能力、DveOps,可以帮助我们更高效地进行开发。你不需要再花精力搭建复杂的持续交付环境,敏捷基础设施(如 K8S、Docke)开箱即用,自带一站式微服务开发解决方案。

在不久的将来,掌握云原生技术会成为发者必备的能力之一。

分享一下腾讯云副总裁黄俊洪大佬对开发者的建议:

对于开发者来讲,我们提供了很多的这种原生的云化的能力来帮助开发者去提效,或者说让他能够聚焦在业务开发。那反过来,我觉得在未来,云原生可以说会成为未来开发者必备的能力之一,甚至说如果不懂云原生,在找工作方面可能相对来讲就比较困难。
从具体的能力上来说,比如说像微服务的拆分能力,容器化的改造能力,服务治理的能力,包括以及像DevOps的这些能力,其实都是开发者需要去必备的一些技能。我觉得云原生知识积累跟储备,对于开发者来讲还是尤为重要的。

对于想要让自己的职业生涯更进一步的同学,个人建议可以考虑一下云原生相关的岗位。现在正是进入这个云原生领域的好时机,云原生方面的工程师的招聘需求现在已经非常大了,薪资待遇也很不错。

云原生时代开发者必须掌握哪些能力?

微服务

单体架构由于承载的业务庞大,服务内部逻辑变得复杂,扩展性非常差。这个时候,我们往往需要将单体架构拆分为整体更松散,模块更内聚的微服务架构。

每个微服务都在运行在独立的线程下,它们之间通过轻量级通信机制(通常是 REST)进行通信。并且,各个微服务可以使用不同的技术栈,不同的存储技术。

各个微服务独立部署,对于单个微服务的修改,我们仅仅需要重新部署对应的微服务,而不需要重新部署整个系统。并且,系统中不同的微服务访问压力不同,我们可以对具体的微服务进行扩容缩容,这样更节省资源,节约成本。

微服务架构下,服务治理是不得不面临的一个难题。业界缺少一个多语言的、框架无关、支持异构基础设施的服务治理标准实现。

在腾讯最新一期的 Techo Day 腾讯技术开放日(腾讯发起的面向技术人群的线上活动)上,会发布一款重量级的产品 北极星(Polaris Mesh) ,可以帮助我们来解决这些问题,推荐大家去看看。

北极星 是腾讯开源的一款功能全面的服务治理中心,支持多种语言(如 Java、Go、C/C++)与异构基础设施(不与具体的部署架构、网络及存储架构绑定),与框架无关。

你可以将北极星看成是一站式的分布式和微服务架构解决方案,开箱即用,提供的能力包括服务注册与发现、服务配置、服务限流、服务熔断、服务降级、动态路由等。像咱们之前分享的 Spring Cloud Tencent 的核心就依托于北极星。

网关是整个微服务架构的流量入口,负责认证授权、请求分发、认证授权、限流、API 管

理、负载均衡等工作,是微服务架构中非常重要的一个组件。因此,我这里专门单独将网关拿出来提一嘴。

Kong 是业界最常用的一款微服务网关,成熟稳定,高性能、高可用,支持丰富的插件。

大部分云厂商提供的网关能力都会支持 Kong,就比如腾讯云推出的 TSE 云原生网关 Kong 就是一款 100% 兼容开源 Kong 网关 API 的网关托管产品,开箱即用,可以有效减少用户自建网关的开发和运维成本。

容器

没有容器之前,我们本地部署正常的应用程序到了生产环境很容易出现问题,经常修复各种部署错误就要花费数天的时间。有了容器之后,就不存在这种问题了。容器通过操作系统虚拟化的方式,为应用程序提供了环境兼容性和平台无关性。

容器技术是云原生发展的基石,以 Docker 为首的容器工具提出了“一次构建,到处运行”的口号。

容器平台和工具有很多,Docker 占据了最大长市场份额,已经成为打包、部署和运行云原生应用程序的事实上的标准。

Kubernetes

对于一些大型的项目来说,一个应用程序的部署可能会涉及到成千上万台容器。这个时候,人工部署和管理容器就不太现实了。

于是,由 Google 主导孕育的 Kubernetes(简称 K8s) 就出现了,它就是帮助我们来做这些事情的,可以方便我们自动部署、扩缩和管理容器化的应用程序,减少重复劳动和出错的可能性。

K8s 被称为云原生时代的操作系统,云原生应用的优势与其提供的功能息息相关。

我们把一个有效的 Kubernetes 部署称为集群。你可以将 Kubernetes 集群视为两个部分:

  • 控制平面 :容器编排层,它暴露 API 和接口来定义、 部署容器和管理容器的生命周期。
  • 节点:节点由控制平面管理。通常集群中会有若干个节点,每个节点都是其自己的 Linux 环境,并且可以是物理机或虚拟机。一个节点中通常运行有多个容器。

为了提升节点资源利用率,解决节点维护、资源规划等各种各样的运维问题,部分云厂商在 Kubernetes 的基础上提供了自己的解决方案来解决这些问题,就比如腾讯云新推出的 Housekeeper (云原生节点管理新范式)。

下图是腾讯云官方对 Housekeeper 的介绍:

DevOps

DevOps 是一种软件交付的理念和方法。从名字可以看出,DevOps 将开发(Development)和运维(Operations)结合在了一起。不过,DevOps 所代表的理念和实践要比这广阔的多。

DevOps 关注的是如何实现应用程序的全生命周期(开发,测试,运维)自动化管理,从而实现更快速、更高质量、更频繁、更稳定的软件交付。DevOps 团队通常会使用微服务架构来构建应用程序,借助于持续集成和持续部署(CI/CD)来实施 DevOps。

ServiceMesh

Service Mesh(服务网格) 是 CNCF 推广的新一代微服务架构,是微服务时代的 TCP 协议,致力于解决微服务架构下的服务管理问题比如服务发现、负载均衡、服务监控,提供开箱即用的运维能力比如金丝雀发布、访问控制。

你可以将 Service Mesh 看作是为了简化开发工作专门抽象出来的一层,通常作为透明的一层接入到现有的分布式应用程序里。

服务网格的实现依赖于 Sidecar。这是一轻量级的网络代理,与应用程序部署在一起,但对应用程序来说是透明。所有应用程序间的流量都会通过 Sidecar,这样的话,它就可以对所有流入与流出的网络请求进行拦截处理,进而实现服务发现、负载均衡、服务监控、金丝雀发布等功能。

如下图所示,Sidecar 连接成网状结构,组成了 Service Mesh。

Istio 和 Linkerd 是目前比较流行的服务网格解决方案,都是开源软件。

十二要素应用程序

十二要素应用程序定义了构建一个优雅的互联网应用需要遵循的一些基本原则和方法论,也被用来指导开发者构建专为云环境优化的应用程序。

基于这些基本原则和方法论构建的系统,可以快速部署(适合云上部署)、快速扩展,可移植性和可维护性也增强不少。

十二要素应用程序内容如下图所示。

《超越十二要素应用》这本书补充了反映当今新式云应用程序设计的三个额外要素。

总结

云原生就是在云中构建、运行应用程序的一套完整的技术体系和方法论。

对于开发者来说,云原生提供的一些开箱即用的能力可以帮助我们更高效地进行开发。你不需要再花精力搭建复杂的持续交付环境,敏捷基础设施(如 K8S、Docke)开箱即用,自带一站式微服务开发解决方案。在不久的将来,掌握云原生技术会成为发者必备的能力之一。

下面是云原生时代开发者必须掌握的一些能力:

  • 微服务(更适合云原生的一种架构模式)
  • 容器(一次构建,到处运行)
  • Kubernetes(自动部署、扩缩和管理容器化的应用程序)
  • DevOps(实现应用程序的全生命周期自动化管理)
  • ServiceMesh(服务网格,新一代微服务架构)
  • 十二要素应用程序(指导开发者构建专为云环境优化的应用程序)

最后,再推荐一下腾讯最新一期的 Techo Day 腾讯技术开放日,这期的主题就和云原生相关,推荐大家去看看!这是腾讯发起的面向技术人群的线上活动。我前段时间听了一期感觉挺不错的,收货颇多,安利一下。

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
【Techo Day腾讯技术开放日】云原生时代,程序员应该掌握哪些能力?
云原生可以说是目前最火热的一个技术概念,它改变了我们对开发、部署和操作应用程序的思考方式。
<<上一篇
下一篇>>