《云原生应用架构》学习总结

这是学习华为《云原生应用架构》的感悟与体会,学习笔记详见链接:
《云原生应用架构》学习笔记

下图为学习的主要内容的思维导图,因为在笔记中已经详细介绍过了,在感悟中将着重突出一下两点:

  • 联系实际
  • 具体收获

在这里插入图片描述

本课程,首先要理解的就是到底什么是“云原生”?云原生包含哪些内容?华为的课程中,突出了“产品化”,我在学习的过程中,注重理解华为产品的特点,更注重体悟云原生的概念和优势

1 什么是云原生

1.1 官方定义

云原生是基于分布部署和统一运管的分布式云 ,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系。

1.2 我的理解

我认为,听起来云原生这个词非常高大上,实际上可以理解成“一些列在云端的服务”,他们往往是收费的那种。他包括了许多服务

举个例子,比如视频中提到的:

  • 云容器
  • Devops软件交付方案
  • ServerLess架构
  • 微服务

一句话,云原生是一系列云服务的统称。可以实现分布式部署和统一管理

2 联系个人的开发经历

我有两个应用使用过云原生的有关服务

  • 第一个是Besti校园圈的管理员端,使用了数字天堂公司的ServerLess服务,实现了云端一体化。
  • 第二个是校园圈APP版本交付、上线、管理,在一定程度上,体现了云原生中“持续交付”的思想。

2.1 Besti校园圈管理员端(采用ServerLess部署)

Besti校园圈中的管理员端,全端都采用了ServerLess部署方案,使用云数据库,采用云函数开发。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

管理员端虽然没有对外开放,但是不可缺少的,主要功能有:

  • 版本升级提醒
  • 统计用户量
  • 编辑静态数据
  • 发布新APP版本,并进行文件下载托管

2.1.1 Besti校园圈管理员端后端

Besti校园圈管理员端后端采用了ServerLess方式
由于各种原因,我没有购买华为的ServerLess产品,使用了“数字天堂”的相关产品。

2.1.1.1 完全采用了ServerLess部署

Serverless不代表再也不需要服务器了,而是说:开发者再也不用过多考虑服务器的问题,计算资源作为服务而不是服务器的概念出现。Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署,你甚至可以管理某个具体功能或端口的部署,这就能让开发者快速迭代,更快速地开发软件。

通过ServerLess部署,实现了云端一体,极大降低了服务器费用(实际上,数字天堂为我提供了免费的ServerLess服务)。
开发成本大幅下降、开发效率大幅提升、上线和迭代速度大幅提速。你只需专注于你的业务,其他什么服务器运维、弹性扩容、大并发承载、防DDoS攻击,全都不需要操心。

在这里插入图片描述

2.1.1.2 使用云数据库

采用了:nosql非关系型数据库
这种数据库是一个 JSON 格式的文档型数据库。顾名思义,数据库中的每条记录都是一个 JSON 格式的文档。

关系型JSON 文档型
数据库 database数据库 database
表 table集合 collection。但行业里也经常称之为“表”。无需特意区分
行 row记录 record / doc
字段 column字段 field
使用sql语法操作使用MongoDB语法或jql操作
2.1.1.3 不需要服务器运维

正式因为有了ServerLess这种服务,我才可能集中精力与功能实现,才可能独自完成整个校园圈的开发工作。并实现了部署。

  • 传统的云服务让开发者免于购买实体服务器硬件,改为购买虚拟机。

    • 开发者仍然要自己装操作系统、web服务器、数据库
    • 自己新购服务器来应对高并发
    • 自己抗DDOS攻击…
  • serverless的云,真正的把计算、存储的能力进行了云化。

    • 开发者只需要按量租用这些计算和存储能力,再也不用关心扩容和攻击。
    • 开发者不再有“服务器”的概念,因为没有一台具体的机器。就像现在的你再也找不到自己的发电机一样。
    • 当用户量激增时,开发者什么都不用做,系统自动承载更高并发。开发者只需要按照对资源的消耗付费即可。

2.1.2 Besti校园圈管理员端前端

2.1.2.1 采用了云网站托管服务

这是一个为开发者的html网页提供更快速、更安全、更省心、更便宜的网站发布。

也在一定程度上,体现了云原生的思想。 具有以下优势:

  • 更快速:不经过web server,页面和资源直接上cdn,就近访问,速度更快。
  • 更安全:不存在传统服务器各种操作系统、web server的漏洞,不用天天想着打补丁。不怕DDoS攻击,永远打不垮的服务。
  • 更便宜:相对于购买整台服务器,前端网页托管要便宜好多,基本只有流量费。
2.1.2.2 不需要服务器运维
  • 无需再购买虚拟机
  • 无需安装操作系统、
  • 无需配置web服务器
  • 无需处理负载均衡
  • 无需处理大并发
  • 无需处理DDoS攻击

2.2 Besti校园圈APP发布模块(体现持续交付)

体现了云原生中的:持续交付

Besti校园圈的APP也是由我独自开发,并发布到了网址:
Besti校园圈APP下载
在这里插入图片描述
在这里插入图片描述

2.2.1 需求点描述

因为目前Besti校园圈并没有一个完整的运维团队,主要运维工作仍然有我一个人完成,因此,如何能将高速迭代的APP有序管理和发布,是我在APP开发过程中,非常需要解决的一个问题。

如何管理各个APP版本

目前,Besti校园圈APP的版本号是5.2.3,历史上更新了近30次APP版本。
各个版本如何管理是一个非常复杂的问题。

在这里插入图片描述

如何高效的提醒用户下载新版APP

当需要升级时,需要用户端向服务器获取最新的版本号,如何统一管理:

  • 哪个版本上线
  • 哪个版本必须下线
  • 最新版本的更新方式
  • 是否强制更新

以上问题都是需要解决的。
在这里插入图片描述

如何提高用户更新体验
实现差量更新

省流量更新应用,只需要下载差异包,而不需要下载完整的apk进行安装。

实现静默更新

静默更新就是手机系统悄悄的更新。

实现热更新

在用户下载安装App之后,打开App时遇到的即时更新。
在这里插入图片描述

2.2.2 实现方案

  • Besti校园圈APP发布方案使用了开源框架uni-upgrade-center成功解决的以上需求。
  • 并且将发布功能,集成到了Besti校园圈的管理员端,因此也是基于ServerLess部署的。

2.2.3 最终效果

最终,Besti校园圈实现了较为成熟的APP发布流程,新编译好的APK在短短几分钟内即可实现:

  • 上传云端
  • 正式发布
  • 选择更新类型
    • 静默更新
    • 差量更新
    • 是否强制更新
    • 热更新
  • 通知用户
  • 设置可以更新该版本的最低客户端版本

在这里插入图片描述

3 总结

  • 传统软件开发的架构和开发模式耦合度大、部署周期长、开发运维割裂等问题,不仅阻碍浪业务迭代,还限制了企业的应用创新,这也就是传统软件工程的劣势所在。云原生计算加速了应用和基础资源的解耦,充分释放云的弹性,通过关注点分离,让开发者关注业务价值,将复杂性下沉到基础设施。对企业而言,云原生计算可以帮助企业优化云架构,最大化发挥云价值。
  • 当前互联网技术在不断推进,不断有新的概念,新的框架产生,我们必须时刻学习,才能保证不被淘汰,才可能紧跟时代潮流,选择更快、更便捷的法案,开发出需求中的应用。
  • 云原生中,让我感触最深的就是:serverless,他让一个不懂服务器运维的开发者,可以只处理自己的业务,再不用关心热备、负载、增容、DDOS等事情。让一个大学生,也可以享受世界最顶级的IT基础设置。
  • 最后,我很感谢华为提供的免费在线学习课程,真的学到了很多。互联网的发展日新月异,现今许多软件系统开发身上都有云原生的影子,希望我能够不断求知创新,借助云原生的力量开发更多更好的软件。
  • 当然,同样感谢老师对我们软件工程这门课程的教导,这门课就像是一把钥匙,让我们走进了软件开发的大门,站在门外的我们之前一直都在幻想软件开发是个什么样子呢?云开发又是什么?现在我们进入这扇门了,我们看到了我们想要看到的、学到了我们想要学到的,我们也在一步步努力着,期望未来也不算遥远。

更多推荐