《云原生应用架构》学习总结
《云原生应用架构》学习总结
《云原生应用架构》学习总结
这是学习华为《云原生应用架构》的感悟与体会,学习笔记详见链接:
《云原生应用架构》学习笔记下图为学习的主要内容的思维导图,因为在笔记中已经详细介绍过了,在感悟中将着重突出一下两点:
- 联系实际
- 具体收获
本课程,首先要理解的就是到底什么是“云原生”?云原生包含哪些内容?华为的课程中,突出了“产品化”,我在学习的过程中,注重理解华为产品的特点,更注重体悟云原生的概念和优势。
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基础设置。
- 最后,我很感谢华为提供的免费在线学习课程,真的学到了很多。互联网的发展日新月异,现今许多软件系统开发身上都有云原生的影子,希望我能够不断求知创新,借助云原生的力量开发更多更好的软件。
- 当然,同样感谢老师对我们软件工程这门课程的教导,这门课就像是一把钥匙,让我们走进了软件开发的大门,站在门外的我们之前一直都在幻想软件开发是个什么样子呢?云开发又是什么?现在我们进入这扇门了,我们看到了我们想要看到的、学到了我们想要学到的,我们也在一步步努力着,期望未来也不算遥远。
更多推荐
所有评论(0)