原文作者:Juan Loaiza
原文出处:https://www.linkedin.com/pulse/conquering-complexity-modern-appdev-juan-loaiza/
曾几何时,就在不久前,AppDev业务目的相对简单的。一小组开发人员可以使用单个开发工具和数据库来快速开发业务应用程序。
那种时候已经一去不复返了。现代AppDev变得非常复杂。为什么现代开发如此复杂?是固有的复杂性,还是当前流行的开发工具和体系结构的副产品?
新技术
复杂性的一个重要新来源是组织希望在其应用程序中使用最新的数据驱动技术,例如机器学习,实时分析,物联网,图分析,文档,空间处理和区块链,从数据中传递更多价值。
这些新技术都是很好,但这对研发人员来说需要理解和实施更多新的技术。这就是为什么现代AppDev如此复杂,还需要许多专业团队。
更复杂的事实是,构建利用这些技术的应用程序需要专门的团队为每种技术调动单一用途的数据库,并在它们之间实施分布式执行和数据移动。那这些额外的复杂操作是否必不可少呢?
新开发技术
此外,开发人员希望通过使用最新的编程样式来构建其应用程序,以确保其应用程序具有可伸缩性,鲁棒性,敏捷性和安全性。比如像微服务,事件,软件即服务,分布式数据,CI/CD,API驱动的开发和深度防御等技术。
但是,使用这些编程技术通常会导致数据碎片化和数据一致性问题,从而使数据体系结构大大复杂化。是否采用了最新的编程简化开发,真的需要大幅度增加数据架构的复杂性吗?
运作方式
一旦应用程序完成,现代的DevOps要求开发人员持续管理,调整,修补,保护和扩展应用程序使用的所有数据库。那是繁重和无聊的额外工作,对吗?
鉴于现代应用程序需要的所有复杂性,开发人员感到不知所措,工作量过大也就不足为奇了,也难怪管理人员因进度表延误,预算超支和安全漏洞而受到指责。
复杂性的根本原因
可悲的是,这种复杂性大部分是自我造成的。开发现代应用程序不一定很困难。为了解决这种不必要的复杂性,我们需要了解其根本原因。
那么,根本原因是什么?有以下几个。
AppDev复杂性的第一个根本原因是一个神话,实施每种数据驱动技术都需要具有其自身高度专业化数据库的专业化产品。
例如,要运行机器学习,我们需要专用的专用机器学习产品。同样,使用JSON文档需要专门的JSON文档存储,运行Text搜索需要专用的Text数据库,使用Blockchain算法保护数据还需要另一个数据库,等等。
在电子设备领域,我们以前不得不使用单独的专用设备来听音乐,发送消息,查找我们的位置,访问互联网,录制视频以及拨打电话。
现在,我们将单个融合产品用于所有这些任务到智能手机。在一台设备中拥有所有这些功能的协同作用可带来新的可能性,例如无限的音乐流播,以及寻找附近最好的意大利餐厅。
同样,在数据库领域,Oracle融合数据库可以支持所有类型的数据和处理。关系数据,文档数据,空间数据,文本数据和图形数据都可以有效地存储和处理在同一数据库中。OLTP,实时分析,机器学习,物联网和区块链工作负载都可以有效地在同一数据库中运行。不再需要部署,管理和同步许多专用数据库来使用这些技术。
与智能手机一样,Oracle融合数据库不仅支持这些数据类型和工作负载,而且比专用数据库更好。此外,将所有这些功能整合到一个数据库中的协同作用可带来新的可能性,例如直接在OLTP系统中进行基于实时机器学习的欺诈检测。而且,使用声明性开放SQL而不是专用数据库所需的定制语言,使开发人员可以轻松实现这些技术。
就像智能手机在本质上比许多单一用途的设备更简单,更好一样,融合数据库在本质上也比多个专用数据库更简单和更好。那么为什么存在这些单一用途的设备和数据库?因为创建单一用途的产品比较简单。要创建像智能手机或聚合数据库这样的融合产品,需要花费很多年,数千名工程师和数十亿美元的投资。一旦创建了融合产品,除了细分化特例,单用途产品已过时。
AppDev不必要的复杂性的第二个根本原因是现代开发范例经常与传统的数据库体系结构发生冲突。例如,开发人员希望每个微服务都有一个独立的数据库,以避免使用单个整体数据库进行协调。不幸的是,尽管微服务加速了开发,但它们也使数据体系结构碎裂了。同样,开发人员希望使用基于事件的系统,例如Kafka,但事件与数据库融合得不好。
幸运的是,新开发人员范例与数据库体系结构之间的冲突并不是固有的。Oracle开发了高级数据库技术来消除这种冲突。
例如,可插拔数据库允许每个微服务具有逻辑上独立的数据库,可以轻松地对其进行物理合并或分离。
Oracle数据库队列允许事件与数据库事务无缝集成。这些先进的数据库技术消除了现代开发与数据库之间的冲突,从而使开发变得更快,更容易。
AppDev不必要的复杂性的第三个根本原因是,传统的数据库系统需要大量的工作来管理,调整,修补,安全和扩展。现在,AppDev团队和运营团队通常被合并为一个DevOps团队,这些运营任务成为开发团队的一大负担,这极大地降低了创新的速度。
幸运的是,机器学习的最新进展使Oracle能够发布突破性的自我管理,自我调整和自我保护的数据库,称为Oracle Autonomous Database。
Autonomous Database是一个完全融合的数据库,它支持所有数据类型和工作负载,具有Oracle数据库的所有关键任务功能,并且与在Oracle数据库之上运行的现有应用程序兼容。借助Oracle自主数据库,现在已经消除了管理关键任务数据库的复杂性。
使复杂变得简单
回到我们最初的问题——Modern AppDev本质上是否更复杂?答案是是和不是。
是的,开发人员还需要学习和掌握更多的技术来开发现代应用程序。开发人员绝对需要比以往更多的知识。
但是,AppDev现在也更加简单,因为使用单个聚合数据库使开发和操作变得非常容易。而且,使用高级数据库技术消除了现代开发范例与数据库之间的冲突。最后,使用Autonomous Database已大大减轻了操作数据库的负担。