最近在考虑从云原生角度去做一些架构维度的改造。但之前关注的在于平地而起的理想态云原生方案,基于存量架构来说就比较复杂了,比如如何衔接现有系统存量能力,低成本接入,同时还可以吃到技术升级的红利。

非常多的人在讨论云原生,那什么是云原生?解决什么问题?

上云的目的是利用云平台的优势,比如按需分配、弹性伸缩都是云原生的关注点,但应用程序并不能轻松的上云。所以想要应用程序可以利用云平台的优势,就需要对应用系统进行云原生改造。

那么什么是云原生?

Pivotal给出的云原生应用的几个特征可以参考,符合12因素应用、面向微服务架构、自服务敏捷架构、基于API协作及抗脆弱性。

其实云原生是一个思想集合,云原生技术包括技术维度、应用管理维度、企业管理维度等。

- 技术维度:微服务、敏捷基础设施

- 应用管理维度:DevOps、持续交付

- 企业管理维度:康威定律

更细化的架构维度特质包括:

1. 模块化应用

2. 可观测性

3. 可部署性

4. 可测试性

5. 可处理性

6. 可替换性

归纳下来即,DevOps、持续交付、微服务、容器化。

那CNCF对云原生定义是什么呢?

包含三个方面:

1. 应用容器化

2. 面向微服务架构

3. 应用支持容器的编排调度

由于CNCF是以K8s为底座的,所以其关于云原生定义的概念主要围绕于上云,即:通过云原生实现各组织在公有云、私有云、混合云等新动态环境下,构建可扩展的弹性应用,涉及到容器、服务网格、微服务、不可变基础设施、声明式API。

通过以上技术可以构建更具容错性、易于管理、便于观察的松耦合系统。

容器

说不太好是容器推进了云原生,还是云原生推进了容器发展。起码以目前看,容器是云原生下最关键的技术,有了Docker,整个云原生才找到了正确的打开方式。

Docker背后代表了基于镜像的动态交付,依赖于新型的应用打包、分发、运行机制。将容器镜像将应用运行时环境、代码、依赖库、工具、资源文件等打包成一种操作系统无关的变更软件包。实现了buid once、run anywhere。

微服务

在微服务架构下,每个服务实例是独立可部署的组件,对外以API暴露能力,通过微服务实现了云原生下面的应用模块化要求,进而实现了服务之间的松耦合。

每个服务都可以独立开发、测试、验证、部署。

服务网格

服务网格主要提供的是服务之间通信的通信基础设施,保障了服务之间通信的可靠性传递。

做好服务网格的标准:

  1. 应用程序通信的中间层

  2. 轻量级网络代理

  3. 应用程序无感知

  4. 解耦应用程序的重试、超时、监控、追踪、服务发现

服务网格一般通过一组轻量级网络代理实现,这些代理和应用程序一起部署,建设对应用系统入侵。将传统服务通信相关的治理能力和基础的网络通信放在一起,真正和业务逻辑解耦开,简单理解就是将网络访问、限流、熔断、监控和TCP/IP放在一起。

目前的服务网格实现的功能越来越多,包括服务发现、负载均衡、故障恢复、指标收集、监控告警等研发与运维需求,借助于Mesh方案可以实现,如AB测试、金丝雀发布、限流、访问控制、端到端认证等。

不可变基础设施

我觉得这个是理念上的改变,一个工作负载的承担(容器、虚拟机)一旦部署之后不再进行修改。当需要更新、修复或修改时,只是将新的、经过验证的工作负载替换掉就得即可。

不可变基础设施主要体现在系统稳定性方面,传统的应用程序一旦部署到用户特定服务器上之后,服务器系统是会不断变化的,比如操作系统升级或在上面安装新应用,这样在其负载之上的应用稳定性就受到了挑战。

而一旦定义了不可变基础设施,就避免了类似的问题,因为他不存在了变化的问题了。

声明式API

与声明式API对应的是命令式API。命令式API提供给用户怎么做,声明式API是给用户提供了做什么的能力,简单理解,前者是确定性rest api,后者是dsl。

其背后体现的是API背后能力的扩展性与弹性。

技术之外的事情

云原生除了对应用系统做了技术维度优化之外,还在流程与组织维度做了优化。它解放了开发和运维,让研发与运维的工作变得简单。云原生还关注于规模,让分布式系统具备了水平扩展能力,同时具备了故障之后的快速恢复能力。

云原生解决什么问题?相关推荐

  1. 云原生解决了什么问题?

    在数智化时代,软件变得越来越复杂,终端对于响应速度的要求越来越迫切,对运行稳定性的需求变得越来越挑剔,这给开发工作带来了很大的压力. 云原生解决了什么问题? 在原有技术的基础上,功能复杂程度.交付周期 ...

  2. 雷锋网独家解读:阿里云原生应用的布局与策略

    简介:阿里云一直希望可以做标准化的技术,跟社区的标准.行业的标准进行打通,这样对于阿里云的客户而言,简化了很多流程,其具备的能力也是未来的主流. 文章来源:雷锋网 作者:杨丽 原标题:<独家解读 ...

  3. 阿里云中间件首席架构师李小平:云原生实践助力企业高效创新

    简介:通过云原生技术,真正为企业带来更多的业务价值,助力企业整体的业务创新. 作者:李小平 前天我参加了信通院的云原生产业大会,在会场上非常感慨,参加会议的企业非常多,并且来自于各行各业.我想起201 ...

  4. 扩展 GRTN:云原生趋势下的 RTC 架构演进

    简介:在 2021 LiveVideoStackCon 音视频技术大会上海站,聚焦 "轻端重云和边缘架构新模式" 专场,阿里云视频云的 RTC 传输专家杨成立(忘篱)带来 &quo ...

  5. 基于云原生的私有化交付PAAS平台

    目录 前言 什么是云原生? 从Docker到Kubernetes:小鲸鱼大记事 docker起源 容器编排之争 CNCF创建 尘埃落定 CNCF - 生态的力量 基于云原生的私有化交付PAAS平台 传 ...

  6. 云原生与微服务架构基础:01 | 为什么说云原生重构了互联网产品开发模式

    为什么说云原生重构了互联网产品开发模式? 云原生的概念 云计算的前世今生 阶段1:虚拟化技术 阶段2:虚拟机的市场化应用 阶段3:容器化和容器编排的兴起 云原生到底是什么? 云原生出现的背景 云原生解 ...

  7. 阿里云刘伟光:2万字解读金融级云原生

    文 | 刘伟光 刘伟光,阿里云智能新金融&互联网行业总裁.中国金融四十人论坛常务理事,毕业于清华大学电子工程系 前言 2015年云原生理念提出的时候,彼时全球金融百年发展形成的信息化到数字化的 ...

  8. 阿里云刘伟光:2 万字解读金融级云原生

    作者:刘伟光,阿里云智能新金融&互联网行业总裁.中国金融四十人论坛常务理事,毕业于清华大学电子工程系 01 前言 2015年云原生理念提出的时候,彼时全球金融百年发展形成的信息化到数字化的背后 ...

  9. 云原生落地难的五个痛点与解决方法

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 在云原生的技术发展和实践快速演进的时代,企业面对五花八门 ...

最新文章

  1. 欧拉筛 筛法求素数 及其例题 时间复杂度O(n)
  2. 今年美国广告程序化购买支出将超252亿美元
  3. redis实现令牌桶算法思路
  4. Palindromic Numbers LightOJ - 1205 数位dp 求回文数
  5. Neo4j 图创建2 以小麦及其相关信息为例(未完成)
  6. 【java基础】——java枚举类型基本介绍
  7. python3纵向输出字符串_python3字符串输出常见面试题总结
  8. C#中如何将字符串转换byte[],同时如何将byte[]换成字符串?
  9. ES6 ArrayBuffer 概述
  10. python os.walk遍历目录_Python 用 os.walk 遍历目录
  11. 【零基础学Java】—static关键字概述(十六)
  12. VSCode 中,TS 提示 ”无法找到 *.vue 声明文件“ 的解决方案
  13. Unity3D射击小游戏Demo开发
  14. 路由器与交换机的关系
  15. java Ofd 转图片_OFD文件怎么转换成图片格式
  16. 我们来统计一个各大学中国学生会CSSA的list吧
  17. BeanUtils.copyProperties 无法转换数据类型不同的数据
  18. 无人机在计算机专业的应用,嵌入式计算机在无人机系统的应用
  19. win10系统通过文件名称快速搜索文件的软件
  20. 我对计算机网络技术的理解,对计算机网络技术课程学习几点思考.doc

热门文章

  1. 0x56. 动态规划 - 状态压缩DP(习题详解 × 7)
  2. 【学习笔记】高斯整数、高斯素数、费马平方和(全部相关概念及例题详解)《初等数论及其应用》
  3. c++引用matlab类,matlab调用C++函数浅谈(一)
  4. B - The Suspects POJ - 1611
  5. 数据库基础笔记(MySQL)2 —— 基础查询
  6. jtoken判断是否包含键_c#-确定JToken是否为叶子
  7. Java练习 SDUT-1132_斐波那契数列
  8. 细节:js 创建对象的几种模式举例
  9. PHP常用类型判断函数
  10. linux 下的服务