我是通过前段时间听《 MASA Framework 》的B站视频了解到了这个词(现代化应用),但是,听完还是对这个词有点陌生,就想着深入研究探讨一下。

前几年还有一个概念叫做ServerLess(无服务器应用架构)的概念,之后有云原生(是基于分布部署和统一运管的分布式云,以容器、微服务、DevOps等技术为基础建立的一套云技术产品体系)概念,然后又有现代化应用的概念。

而这些概念都是从开发角度来讲的,对开发来说,如何无服务器,如何云原生,如何现代化应用。

第一部分,何为现代化应用

MASA Framework 关于现代化应用的解释

关于现代化应用和云原生应用_微服务

啥是不现代化的应用

从这个角度入题,确实是个不错的角度。

也就是从本地存储,代码管理和CICD(运维),设备运行兼容性,故障监控排除支持性,资源弹性支持,信息设备安全性等几点出发。

而这几个点都是开发人员不容易管控的地方,特别是稍微大点的公司,分工更加明确,资源都不在自己手里,但是,这些部分的事情好像又与开发有关系,毕竟,开发出来的应用出现了问题,又不能不配合解决。

很多时候,开发要拿出一整套的项目方案出来,这个项目方案,自然本身就包含了,存储,CICD,运行环境,安全性,资源伸缩性,异常监控等问题。

而不论是现代化应用还是,ServerLess(无服务器应用架构)都是以解决开发人员不需要考虑资源的可伸缩性,可维护性出发,站在开发的角度,解决问题的。

MASA 的总结

关于现代化应用和云原生应用_运维_02


MASA总结了几条。

  1. 聚焦业务,让变化更简单
  2. 更快、更频繁、更一致、更安全地交付价值
  3. 现代技术、体系结构、软件交付实践和操作流程的结合

总得来说就是拥抱容易变化的业务,固化不容易变化的环境或功能。(这样也可以复用框架作为开源为广大开发者服务),或许,这也是MASA 的 目的之一吧。

而,如何更敏捷,做出的产品质量更高,在撇除了业务本身来讲,如果其他的部分更加的稳定,那么,业务本身就可以更加的敏捷,因为,它要做的事情就考虑的更加的偏业务一点。

就像数据库如果已经有人做好了读写分离,高可用,性价比高,那么,从业务角度来讲,就没有必要考虑数据库方面的基础优化和支持,专心搞业务。

RedHat 关于现代化应用的解释

为什么要对传统应用进行现代化?

大量传统工作负载、底层平台、技术和传统开发实现阻碍了业务敏捷性和创新。

这是因为许多传统系统是在云计算、云原生、Linux容器之前开发的。

这些传统的业务中仍然有着许多关键工作负载,并且是无法轻易替换或停用的。

传统的业务又需要大量的时间,预算和资源维护。

而现代化应用通过将其迁移到现代平台,将单体式应用分解为更小、更易于维护的组件(如微服务),从而实现让传统项目实现敏捷的目的。

而 RedHat对于 现代化应用更多的是将工作负载现代化并迁移到领先的 Kubernetes 平台,通过现代、可扩展的方法来保护整个应用平台堆栈(从操作系统到容器再到应用),从而实现安全的软件供应链。

关于现代化应用的总结

通过对两个平台(MASA Framework 和 RedHat)对现代化应用的表述,我们可以看到现代化应用更多的表现是少做,多得,一条龙服务。

更多的是对开发者友好,对敏捷友好,对质量友好,站在开发者的角度考虑问题。

而现代化的应用,也可以变相的理解为未来化应用,因为,现代化是进行时。

举个简单的例子,现代化应用更像是养宠物(业务),宠物的吃喝拉撒,生老病死都被委托了,而你只管养它。别的都不用管。这样,之前能养一只,现在能养一个部落。(可能例子举的不是很好,但是我是理解了。)

第二部分,何为云原生应用

关于云原生应用,我个人的理解就是,你的所有产品都位于云中(阿里云,百度云,华为云,腾讯云,微软云,谷歌云,亚马逊云),都是在云计算之后,诞生的新概念。

当然很多大佬或者大厂的人都已经很了解,但是,还有很多人不是很了解,我就统一整体描述一下。

下面是MASA Framework 对其的描述

关于现代化应用和云原生应用_微服务_03

关于现代化应用和云原生应用_运维_04

基本云原生就是DevOps、持续交付、微服务和容器。这四个部分了。

现代化应用和云原生应用总结

那么,从上面的描述可以看到,云原生就是比较现代化的应用开发方式,现代化应用更抽象,而云原生就更具体一下,可以是私有云也可以是具体的线上云。

都是一整套解决方案,对业务提供方便的服务。

那么,未来应用的发展方向也应该是这样的,可能未来就不用考虑数据够不够放,数据查询是不是卡的问题了,这些问题都会被默认解决掉,内部封装掉。

而你开发这些未来化应用的方式,跟《单体应用开发》一模一样。

参考资料

​https://www.bilibili.com/video/BV1h94y1D7tw​

​https://www.redhat.com/zh/topics/application-modernization​