我是通过前段时间听《 MASA Framework 》的B站视频了解到了这个词(现代化应用),但是,听完还是对这个词有点陌生,就想着深入研究探讨一下。
前几年还有一个概念叫做ServerLess(无服务器应用架构)的概念,之后有云原生(是基于分布部署和统一运管的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系)概念,然后又有现代化应用的概念。
而这些概念都是从开发角度来讲的,对开发来说,如何无服务器,如何云原生,如何现代化应用。
第一部分,何为现代化应用
MASA Framework 关于现代化应用的解释
啥是不现代化的应用
从这个角度入题,确实是个不错的角度。
也就是从本地存储,代码管理和CICD(运维),设备运行兼容性,故障监控排除支持性,资源弹性支持,信息设备安全性等几点出发。
而这几个点都是开发人员不容易管控的地方,特别是稍微大点的公司,分工更加明确,资源都不在自己手里,但是,这些部分的事情好像又与开发有关系,毕竟,开发出来的应用出现了问题,又不能不配合解决。
很多时候,开发要拿出一整套的项目方案出来,这个项目方案,自然本身就包含了,存储,CICD,运行环境,安全性,资源伸缩性,异常监控等问题。
而不论是现代化应用还是,ServerLess(无服务器应用架构)都是以解决开发人员不需要考虑资源的可伸缩性,可维护性出发,站在开发的角度,解决问题的。
MASA 的总结
MASA总结了几条。
- 聚焦业务,让变化更简单
- 更快、更频繁、更一致、更安全地交付价值
- 现代技术、体系结构、软件交付实践和操作流程的结合
总得来说就是拥抱容易变化的业务,固化不容易变化的环境或功能。(这样也可以复用框架作为开源为广大开发者服务),或许,这也是MASA 的 目的之一吧。
而,如何更敏捷,做出的产品质量更高,在撇除了业务本身来讲,如果其他的部分更加的稳定,那么,业务本身就可以更加的敏捷,因为,它要做的事情就考虑的更加的偏业务一点。
就像数据库如果已经有人做好了读写分离,高可用,性价比高,那么,从业务角度来讲,就没有必要考虑数据库方面的基础优化和支持,专心搞业务。
RedHat 关于现代化应用的解释
为什么要对传统应用进行现代化?
大量传统工作负载、底层平台、技术和传统开发实现阻碍了业务敏捷性和创新。
这是因为许多传统系统是在云计算、云原生、Linux容器之前开发的。
这些传统的业务中仍然有着许多关键工作负载,并且是无法轻易替换或停用的。
传统的业务又需要大量的时间,预算和资源维护。
而现代化应用通过将其迁移到现代平台,将单体式应用分解为更小、更易于维护的组件(如微服务),从而实现让传统项目实现敏捷的目的。
而 RedHat对于 现代化应用更多的是将工作负载现代化并迁移到领先的 Kubernetes 平台,通过现代、可扩展的方法来保护整个应用平台堆栈(从操作系统到容器再到应用),从而实现安全的软件供应链。
关于现代化应用的总结
通过对两个平台(MASA Framework 和 RedHat)对现代化应用的表述,我们可以看到现代化应用更多的表现是少做,多得,一条龙服务。
更多的是对开发者友好,对敏捷友好,对质量友好,站在开发者的角度考虑问题。
而现代化的应用,也可以变相的理解为未来化应用,因为,现代化是进行时。
举个简单的例子,现代化应用更像是养宠物(业务),宠物的吃喝拉撒,生老病死都被委托了,而你只管养它。别的都不用管。这样,之前能养一只,现在能养一个部落。(可能例子举的不是很好,但是我是理解了。)
第二部分,何为云原生应用
关于云原生应用,我个人的理解就是,你的所有产品都位于云中(阿里云,百度云,华为云,腾讯云,微软云,谷歌云,亚马逊云),都是在云计算之后,诞生的新概念。
当然很多大佬或者大厂的人都已经很了解,但是,还有很多人不是很了解,我就统一整体描述一下。
下面是MASA Framework 对其的描述
基本云原生就是DevOps、持续交付、微服务和容器。这四个部分了。
现代化应用和云原生应用总结
那么,从上面的描述可以看到,云原生就是比较现代化的应用开发方式,现代化应用更抽象,而云原生就更具体一下,可以是私有云也可以是具体的线上云。
都是一整套解决方案,对业务提供方便的服务。
那么,未来应用的发展方向也应该是这样的,可能未来就不用考虑数据够不够放,数据查询是不是卡的问题了,这些问题都会被默认解决掉,内部封装掉。
而你开发这些未来化应用的方式,跟《单体应用开发》一模一样。
参考资料
https://www.bilibili.com/video/BV1h94y1D7tw
https://www.redhat.com/zh/topics/application-modernization