云原生总结和思考

云原生社区
0.开篇

从2016年开始工作到现在已经有八年时间,最初在国企基于IBM的工具做系统发布,到现在拥抱云原生技术,基于容器和容器编排实现项目的部署和维护,经历了云原生技术的崛起和落地实践,总结这几年使用云原生技术的经验,想要说一下自己对云原生技术的理解。

1.什么是云原生

  对于什么是云原生,大家一直众说纷纭,各执自见,看网上关于云原生的定义也是云里雾里,不知道到底讲的什么。我觉得一项技术想要落地的话,肯定是思想先行,云原生最初的思想理念是服务的架构和运行方式的一种改变,服务的架构由单体到微服务,部署方式由物理机或虚拟机到容器,运行维护由人工到容器编排,服务监测由简单的监控到服务可观测。所以云原生是一套方法论,旨在保持基础设施的不变性,将技术复杂度下沉到基础设施部分,让开发可以只关注业务实现,最大程度实现产品交付。

2.云原生特质

  在经历了公司项目从单体服务到微服务,并将服务部署于k8s集群,然后为了保证服务的稳定性,基于各种工具实现服务的可观测,我觉得一个良好的云原生实践项目具有以下特质:
(1)模块化(微服务架构)
(2)持续交付(devops)
(3)容器化(docker+k8s)
(4)可观测
  微服务架构体系下,并不是简单的将系统分成几个独立运行的应用,而是服务之间基于声明式接口(restful api)调用链形成一个整体,依赖于服务发现机制和配置中心,无论微服务部署在什么地方,相互之间都能交互。
  持续交付,则要求基于容器和容器编排技术组成的基础设施,能够持续将项目快速且稳定地发布完成,实现产品交付。日常工作中是要求开发、测试、运维能够指定发布环境,基于代码仓库的项目分支将项目发布到不同的环境。   容器化是云原生的基础,除了简单的容器运行时环境,容器编排技术才是容器技术和核心,可以充分发挥微服务扩缩容和易替换的特性,提高服务的稳定性。
  服务可观测除了观察微服务运行的基础设施的运行情况外,还要求微服务能够暴露出服务的重要指标,以及记录调用链路信息(traceId, spanId)等,方便系统出现问题时及时排查出异常所在,快速解决问题。

3.云原生实践

  云原生实践的方式多种方样,但一定离不开微服务,持续交付和容器化。所以工程师必须理解微服务架构,结合业务并基于微服务框架(springAlibaba, kratos)开发系统,然后整合持续集成和持续发布工具集实现项目的持续交付,最后再实现服务的可观测保证服务的稳定性。

4.最后

  本文是本人工作多年对云原生技术的一个总结,随着后续不断地研究相信自己对云原生的理解会进一步加深,也会有更高效的云原生实现方式。

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论