参考架构基于特定设计原则,可满足现代应用开发的核心要求。借助这些原则,开发人员可以轻松构建集 AI/ML、数据驱动的分析和消息传递平台于一体的 Web/移动应用。事件驱动的架构可以实时响应事件,帮助金融、零售、医疗卫生、能源和制造等行业加快定制应用开发,以及扩展 Oracle 应用包。如今的大多数企业应用都以数据为中心,拥有各种各样的数据,最好在融合数据库上进行开发。这些架构模式还支持使用 Java、Python、Javascript 和 Go 等常用语言进行编程开发。低代码应用开发可以压缩所需的技术层,这对于某些应用来说是理想的选择。由 Kubernetes 管理的应用和数据库容器可以部署在 Oracle 云 (OCI)、独立环境和其他主流公有云上。
Web 和移动应用通常包含一个用户可见的前端、一个查询生成器和一个用于执行数据计算和为前端服务的后端。当响应用户或 API 请求时,Web 应用将与 API 或数据库中存储的持久数据交互。应用必须支持多种客户端,例如浏览器和移动设备,且必须能够基于 API 和事件与其他系统和应用交互。同时,应用的后端必须安全可靠,支持按需扩展。
请将 Web 应用构建为一组可独立进行测试和部署,并由不同应用团队所有的微服务;将微服务公开为 REST API,使用内置事件网格(面向事件和消息)或为每个微服务创建的 API 进行微服务间通信;使用数据库中的 REST 端点和 ML 模型,将机器学习功能集成到智能应用中。
此外,Web 和移动应用还需要具有高度的可扩展性来满足峰值需求,必须能够在高延迟下正常运行。它们必须具有 24/7 的全天候可用性,必须具有足够的弹性以便按需生成数据,必须能够避免存储的信息丢失。
请使用 React Native 或 SwiftUI 等前端框架构建移动应用,创建与后端(面向所有数据和扩充服务)交互的用户界面。这样,开发人员可以专注于工作流和应用逻辑,通过明确定义且弹性、安全、支持自主扩展的 API 来访问后端。
最后,安全性对于面向互联网的 Web 应用至关重要。请重点关注数据加密、TLS、DDoS 保护、防火墙以及细粒度用户和数据访问管理,通过 Oracle Database Wallet 和 OCI Vault 服务管理和保护密码和密钥,确保数据库和应用安全无虞。
使用 Javascript (React) 或 SwiftUI 构建移动和 Web 前端;为后端数据和应用服务引入多语言支持(Python、Node.js、Java、PL/SQL、Go 等等),满足基于这些语言编写的用例和微服务的需求;在靠近数据存储的位置处理数据。
Web 或移动应用通常需要与组织外部的其他业务系统和服务对接。对此,Web 应用中的服务应通过明确定义的 API 来进行交互和协作。请通过 Oracle REST Data Services (ORDS) 来使用或构建新的数据 API;通过 OML 服务现成可用的 REST 端点以及内嵌 OML4Py 的 Python 执行来实现机器学习功能;使用 Oracle 云上可用的 API 网关作为所有客户端的单一入口点,将 API 请求路由至相应的服务;配置负载均衡器服务和入口控制器,在微服务之间实现安全的 API 通信。
维护 Web 或移动应用基础设施一般需要执行大量的部署、升级、修补、扩展以及保护工作。对此,请使用 Oracle 自治数据库等托管式服务以及 Oracle 云上的一系列其他托管式服务,以此尽可能提高可用性和可扩展性,响应不断变化的 Web 和移动应用需求。托管式服务可确保应用 24/7/365 可用,而且当负责托管基础设施的数据中心发生故障时,它们将得到有效保护。我们建议您仅在供应商托管式服务不可用时使用自管理服务。
请使应用的中间层组件保持无状态。如果要存储应用状态,请使用 Oracle 自治数据库来存储应用数据和状态,确保实现出色的一致性和持久性以及快速(从应用状态根)恢复。对于总体应用恢复,通过单一数据库来保存状态更加简单,也更加高效。
Web 和移动应用通常会使用多种格式的数据,需要在数据存储中存放以及搜索和处理数据。这些数据包括表格(关系型)数据、非结构化数据、XML、JSON、空间或图形数据等等。传统意义上,这种数据多样性意味着要使用关系数据库来存储关系数据,使用文档存储来存储非结构化数据,以及使用图形数据库来存储分层链接数据。但是,多个数据库共存常常会带来操作复杂性和数据不一致。对此,请使用 Oracle 融合自治数据库,它可以存储多种类型的数据,支持为数据编制索引,提供了多种数据搜索方法,能够满足跨所有数据的统一分析需求。
有些 Web 或移动应用包含数百种由不同应用和业务团队所有的服务。通过开放工具接口进行统一观测,了解这些固有分布式系统的行为非常重要。请使用从所有应用层和数据层导出的指标、日志和跟踪记录来建立集中式观测解决方案,进而监视从前端到后端的整个体系,快速查找和修复应用中的问题,以及持续进行性能调优。
Web 和移动应用必须具有弹性,支持故障恢复,能够尽可能减少停机时间以及避免数据丢失。对此,冗余有助于消除单点故障,请使用 Kubernetes 提升数据库容器和应用容器的弹性。Oracle Database Kubernetes 运算符正是为此而设计的,它能够使用包含了数据层的 CI/CD 管道来提升弹性。请在 Kubernetes 集群中构建至少包含三个节点的节点池,每个节点位于(OCI 上一个多可用性域区域中的)一个单独的可用性域中;在一个 OCI 可用性域区域中,在 Kubernetes 中构建节点池,每个节点位于一个单独的容错域中;使用一个公共负载均衡器和多个专用负载均衡器(具有多个入口控制器)在 Kubernetes 中构建冗余。
同时,请使用 Oracle 自治数据卫士实现最高自治数据库可用性,尽可能减少运营停机时间和数据丢失。
最后,请遵循最小权限原则,确保用户和服务账户仅拥有执行各自任务所需的最小权限。您可以使用 Oracle 云身份与访问管理 (IAM) 来控制哪些人可以访问 Web 应用组件和数据库;可以在 IAM 中使用多因素验证对管理员实施强验证,确保其仅能访问应用组件和数据库。
这一面向 Web 或移动应用的融合数据架构模式由一个前端和多个微服务构成,其后端使用基于 Oracle 自治数据库构建的应用和数据服务。对于数据库以外的服务,容器中的微服务由一个 Kubernetes 集群管理。
请查看下图,直观了解这一参考架构。
该架构包含以下组件(组件既可以是基于 Oracle Cloud Infrastructure 的全托管式服务,也可以是其他部署环境下的等效服务,例如 Oracle 自治数据库是一项基于 OCI 的托管式服务,而 Oracle 数据库在其他环境下运行)。
GrabDish 是一款移动食品交付应用。它采用基于 Oracle 自治数据库的微服务架构,为每项服务分别提供容器化数据库(容器数据库中的可插拔数据库);使用内置消息传递平台(即事务性事件队列 (TEQ))进行消息传递,为开发人员简化通用微服务模式。GrabDish 由多种语言编写而成,搭载了 AI/ML 服务,使用了多种类型的数据。有关 GrabDish 的详细信息,请参见 Livelabs:http://bit.ly/simplifymicroservices
详细了解相关资源。
消息传递解决方案可将应用组件(包括现有本地部署系统)连接到云解决方案。消息有效负载包括应用生成事件、用户输入、数据变更或设备生成事件。利用消息传递解决方案,开发人员可以在一个明确定义的分布式处理管道中执行事件和数据传输,也可以将消息和事件发布到多个负责处理、扩充和分析数据的独立下游系统。如今,大多数基于微服务构建的现代应用都离不开事件驱动架构。事件驱动架构的事件网格支持在分布式系统的任何位置,使用一个或多个事件代理,安全、近乎实时地使用系统中生成的任何事件。事件处理完毕后,数据(有效负载)将被存储在一个数据湖仓一体中,为分析和 AI/ML 模型训练提供支持。
请构建高度可用、高度可靠和高度灵活的消息传递解决方案。而使用 Oracle 的融合数据库平台、云服务和优秀实践,您可以轻松创建符合业务需求的消息传递和事件驱动解决方案。这可以最大限度减少开发集成工作、节约部署开销以及降低长期管理负担。
消息传递解决方案可以将各种应用组件(包括现有本地部署系统)连接到云解决方案,支持开发人员在一个明确定义的分布式、融合处理管道中执行数据传输,或者将消息和事件发布到多个独立的下游系统。
消息传递解决方案还应当能够缓冲数据和动态调整流程资源,以便透明地适应计划外的消息负载峰值。过去,企业很难部署和管理可靠的消息传递解决方案来满足这些目标,很难消除过高的复杂性和开销。现在,企业可以在云端轻松实施消息传递解决方案,交付专为可扩展性和性能而设计的消息传递服务。
请按照以下设计原则,基于融合数据架构来构建消息传递应用或平台。
请使用 JMS 或 Kafka API 与 Oracle 事务性事件队列建立消息传递连接。标准 API 可提供应用可移植性,支持无缝构建混合和多云消息传递应用。
请使用内置了基础设施维护和安全修补特性的全托管式服务运行应用,利用伸缩自动化功能来响应不断变化的负载。对此,Oracle 自治数据库是一款基于 OCI 的全托管式数据库服务,同时所有 OCI 区域均提供 Oracle 事务性事件队列这一 Oracle 数据库内置特性。
请使用原生支持广泛数据类型(JSON、关系、图形、空间等)的 Oracle 自治数据库,利用 Oracle 自治数据库功能简化应用逻辑。例如,您可以使用 SQL 来处理查询、联接和分析;使用事务来确保一致性和隔离;利用内置机器学习算法和分析来避免不必要的数据传输;使用安全功能和访问控制特性来保护敏感数据;使用复制特性来提高应用的可用性、可扩展性和弹性。
一个消息传递应用可能包含数百种由不同应用和业务团队所有的服务。通过开放工具接口进行统一观测,了解这些复杂分布式系统的行为非常重要。请集中处理从所有应用层导出的指标、日志和跟踪记录,而不是由各个团队分别构建自己的解决方案。同时,TEQ 指标可以导出到 Prometheus,而 Prometheus 支持 Grafana 仪表盘,可满足调试和性能优化工作流需求。
请通过横向扩展消除单点故障,自动执行故障恢复。
由于 TEQ 是 Oracle 自治数据库的一部分,应用可以充分利用 Oracle 自治数据库的内置高可用性和跨区域灾难恢复功能,无需您执行任何额外工作。
最后,TEQ 的事务性消息传递还有助于轻松从外部故障中恢复。
请实施身份与访问控制 (IAM) 策略,仅允许授权用户创建、发送或接收来自流的数据;对端点实施最低可访问性原则,即通过 mTLS 和服务网关限制来自互联网的访问,确保安全访问消息传递端点;实施静态和动态数据加密,满足数据保密要求;使用 Database Wallet 保护面向数据库的连接凭证。
融合数据库架构可出色满足现代应用的消息传递模式要求。该模式使用了 Oracle 自治数据库内置的事务性事件队列 (TEQ)。
在该架构下,您无需使用外部流处理或队列服务,还能通过事务性消息传递功能来简化通用微服务模式。
应用架构师应格外关注该架构杰出的可扩展性、性能和简单性:
FedEx 使用 Oracle E-Business Suite 和基于 Oracle TEQ 构建的业务事件管理器来处理每天投递的 1550 万个包裹的应收账款。
Oracle 事务性事件队列可满足多种使用一次性密码 (OTP) 进行双因素身份验证 (2-FA) 的场景的需求。
详细了解相关资源。
低代码平台非常适合与利益相关者合作构建机会性应用;构建数据报告和分析应用;扩展 SaaS 应用;以及对传统应用进行现代化改造。现实中,每一行代码都需要编写、维护、调试、升级和保护,都会消耗成本。对此,Oracle Application Express (APEX) 可提供直观的图形化开发体验,帮助开发人员消除这些成本。
与传统的手动开发方式相比,低代码平台可以帮助用户更快速地构建企业应用。它们非常适合与利益相关者合作构建机会性应用;构建数据报告和分析应用;扩展 SaaS 应用;以及对传统应用进行现代化改造。
借助低代码平台,您可以集中精力解决业务问题,而不必担心 Web 应用开发中的复杂性。这些复杂性包括安全性、可访问性、高效数据访问、性能和全球化。通过大幅减少需要维护的代码量,低代码平台可以有效消除这些复杂性。
Oracle Application Express (APEX) 可提供直观的图形化开发体验,帮助用户消除传统应用开发中常见的相关成本。
同时,Oracle Cloud Infrastructure (OCI) 可提供安全、可靠、可扩展的高性能基础设施,满足各种严苛应用的需求。它支持企业轻松扩展应用,为各种规模的任务提供支持 — 从小型工作组到数百万最终用户。本文档描述了构建低代码应用的设计原则和最佳实施路径。
在实施低代码模式时,请遵循以下现代应用开发设计原则:
在开发应用时请采用元数据驱动的低代码方法,尽可能以声明方式指定应用逻辑,仅在必要时编写代码。其次,请使用 SQL 直接与数据库中的数据交互。再次,请使用全托管式服务(例如 Oracle 自治数据库和 Oracle APEX Application Development (APEX Service)),以此大幅提高可用性和可扩展性,满足低代码应用不断变化的需求。最后,请使用 Oracle Real Application Clusters (RAC) 和 Oracle 数据卫士等数据库功能,确保低代码应用 24/7/365 全天候可用并且能够在托管基础设施的数据中心发生故障时进行故障转移。
请使用 OCI 资源管理器来自动化供应 Oracle 自治数据库和 APEX 环境;使用随带 Liquibase 的 Oracle SQL Developer Command Line (SQLcl) 来自动部署数据模型变更;使用 APEX 一键应用部署功能,手动在不同环境中部署变更。
Oracle APEX 采用无状态和无服务器模式,它将运行时应用状态存储在表中,支持用户间重用连接。这有助于大大减少高用户并发场景下的连接数量。
低代码应用通常需要使用多种格式的数据,例如结构化(关系)数据、非结构化(XML/JSON 文档)数据和空间数据。由于 APEX 内置在 Oracle 自治数据库中,您可以使用 SQL、PL/SQL 和服务器端 JavaScript 来处理所有这些格式的数据。此外,由于 APEX 采用独特的架构,低代码应用可实现零延迟数据访问,提供最优性能。
使用内置活动监视功能来监视和跟踪 APEX 应用活动,包括用户级别的详细的跟踪和调试信息;使用 APEX 管理服务审查工作区级别和实例级别的活动;使用性能中心来监视数据库活动,审查自动工作负载信息库 (AWR) 报告以识别主要资源使用者并查看调优建议。
基于 Oracle 自治数据库的 APEX 采用包含数据层(Exadata 和 RAC)和中间层(冗余 Oracle REST Data Services 节点)的架构进行部署,具有高可用性。同时,Oracle 自治数据卫士可进一步提高应用可用性,防范可用性域故障。
请使用 OCI 身份与访问管理 (IAM) 来实施 APEX 应用身份验证,通过将授权方案分配给 APEX 应用和应用组件来实施基于用户角色或权限的访问控制;使用 APEX 的内置声明式功能来执行会话状态保护 (SSP) 和项目级加密,保护您的应用和数据;在 SQL 查询中使用绑定变量,防范 SQL 注入攻击;为应用配置适当的超时机制,以此自动终止非活动会话;运行内置 APEX Advisor 来检测潜在安全问题,例如未受保护的页面、项目和按钮;使用声明式转义和编程式转义 API 防范跨站点脚本 (XSS) 攻击。
这一架构适用于使用 Oracle APEX Application Development (APEX Service) 和所有 Oracle 自治数据库服务进行低代码应用开发与部署。通过部署这些服务,企业可以自动供应和全面管理整个体系的所有组件,包括网关、负载均衡器和 Oracle REST Data Services。
上图展示了使用 Oracle APEX Application Development (APEX Service) 和所有 Oracle 自治数据库服务进行低代码应用开发与部署的底层架构。它提供了一个包含一个公共子网和一个专用子网的全托管式环境,还提供了以下服务:APEX Applications、Oracle REST Data Services API 和外部 REST API。这些服务通过互联网网关或 NAT 网关访问全托管式环境。
其中,公共子网包含一个负载均衡器,专用子网包含一个 Oracle REST Data Services 实例和一个 Oracle 自治数据库 — Oracle 自治数据库上部署了一个 Oracle APEX 实例。
来自 APEX 应用和 Oracle REST Data Services API 的流量将通过互联网网关路由至负载均衡器,后者将以双向方式将流量导向专用子网中的 Oracle REST Data Services 实例。随后,Oracle REST Data Services 服务将与 Oracle 自治数据库进行双向通信。最后,来自基于 Oracle 自治数据库的 Oracle APEX 实例的流量会通过 NAT 网关直接路由至外部 REST API。
在这一架构中,所有应用工件均被部署到数据库层,该层支持零延迟数据访问,因为应用层与数据库层之间不需要网络通信。
在实施低代码模式时,您还需要注意以下事项:
必要时,请使用以下替代方案,避免实施反面模式。
以下是低代码模式的一些示例:
详细了解相关资源。
大数据是一组可用来管理、收集、存储、编目、准备、处理和分析所有类型的数据(非结构化、半结构化和结构化)的功能和模式,无论数据来自数据库、视频、表单、文档、日志文件、网页还是图像等等。一个理想的机器学习平台应当采用全托管模式,支持数据工程师和数据科学家在模型开发生命周期中轻松执行所有这些步骤。
Oracle 大数据功能涵盖各种服务和工具,让您能够根据您的技能和喜好开始您的大数据之旅。Oracle 融合数据库可全面存储各种类型的数据,可按需扩展至数 PB 容量,支持快速提取数据和事件(采用事务性事件队列),能够以杰出的内置安全性可靠保护所有数据。使用 Oracle 自治数据库,您可以利用融合数据架构,在一个融合数据库平台上满足所有数据规模、数据类型、速度和准确性要求。
现实中,数据科学家和机器学习工程师不希望耗费宝贵的时间去供应、升级、修补和保护基础设施,希望专注于构建、训练和部署真正具有业务影响力的模型。对此,请采用全托管式机器学习平台,以便数据科学家轻松执行模型生命周期(构建、训练、部署和监视)中的所有步骤。同时,请使用来源无关的数据开展机器学习,以便数据科学家使用一致、可靠的数据来构建、训练和部署模型。
如今,大多数现代机器学习工具包都是开源工具包,是由 Python 编写的。因此,您的机器学习平台应当原生支持开源框架和 Python。同时,它还应支持用户通过安装自己的库或升级已安装的库来自定义机器学习环境;支持数据科学家全面利用结构化、非结构化或半结构化数据来训练模型,跨多个计算资源纵向或横向扩展提取、转换和加载 (ETL) 或训练步骤。
最后,您的机器学习平台应当支持轻松部署模型以便实时使用,应当尽可能减少摩擦(理想方式是通过简单的 REST 调用),应当能够保留已部署模型的谱系,确保模型可审计、可复现。
在实施大数据和分析模式时,请遵循以下现代应用开发设计原则。
数据的价值取决于您使用数据的能力。如今,大数据工具在开源社区中广受欢迎,而对于这些大数据工具的大部分功能,现代数据库都能提供等效特性,尤其是在数据仓库、分析、AI/ML 模型训练和部署领域。Oracle 融合数据库就是这样一种大数据平台。
Oracle 的原生高级功能(例如 Oracle ADW 业务数据平台外部表和 SQL)支持您在 Oracle 数据库和 OCI 对象存储中使用数据湖仓一体,实时存储和分析 PB 级数据。
DataOps 可充分释放大数据管道的价值,在大数据领域发挥着举足轻重的作用。对此,Oracle Cloud Infrastructure 数据集成服务支持您高效摄取数据、实施 ETL 处理和 ELT 下推,以及创建可按顺序或并行连接各项任务的管道,简化流程。您可以在管道中使用 Oracle 云上和 Oracle 云外部的各种常用数据源;使用数据集成服务的调度功能定义每项任务的运行时间和频率;使用 Oracle Database Cloud Service Management 定义针对一组数据库的数据库作业计划;通过 CI/CD 管道以及面向应用开发人员的统一观测性来增强机器学习流程。
请使用最佳工具来简化、自动处理和加速数据整合,充分释放业务价值。对于数据仓库、部门级数据集市以及包含结构化数据的服务层和表示层,请使用针对这些场景进行了优化的 Oracle 自治数据库。此外,Oracle ADW 业务数据平台还支持您连接分析、商务智能和报告工具(例如 Oracle 分析云)。
请制定适当的计划来保护您的数据。您需要跟踪所有引入了数据并从数据湖获取数据的作业,需要保留数据谱系元数据,需要确保访问控制策略始终处于最新状态。
请遵循最小权限原则来确保用户和服务账户仅拥有执行任务所需的最小权限。您可以使用 Oracle Cloud Infrastructure 身份与访问管理 (IAM) 来控制哪些人有权访问数据平台组件;通过 IAM 的多因素身份验证为管理员实施强验证;使用 Oracle 数据安全服务来捕获所有数据、用户和访问模式的安全状况信息;通过 Vault 服务存储敏感信息,例如密码和身份验证令牌。
请使用可扩展的融合数据库(事务处理和数据仓库)来运营企业,存储和分析所有类型的数据。在这一架构中,各种数据源(最终用户、设备、事件、传感器和应用)通过数据集成服务 (Oracle GoldenGate) 和面向流处理数据的 Oracle 事务处理事件队列,向数据库提供数据。它将数据存储在 Oracle 自治数据库(Oracle 自治事务处理和 Oracle ADW 业务数据平台)中,使用 OCI 对象存储满足大数据(使用 SQL 处理外部表)需求,使用 Oracle 机器学习执行模型构建和部署,通过 Oracle 分析云来挖掘数据洞察。
其中,基于 Oracle 自治数据库的 Oracle 机器学习(OML 笔记本、OML AutoML UI、OMML 服务和 OML4Py)支持您浏览和准备数据,构建、评估和部署机器学习模型。
当您将模型训练所需的数据引入数据库后,该架构可提供丰富的强大功能。您可以在靠近数据的位置进行数据处理;可以通过数据探索功能探索和准备各种类型的数据源和事件,为 OML 训练做准备;可以使用 OML,通过 SQL、Python(使用 OML4Py)或无代码 AutoML 来构建、训练和部署模型;可以使用 OML 服务,以 ONNX 模型格式导入在其他环境(例如 OCI 数据科学,包括 Tensorflow 或 PyTorch)下训练的模型。
该模式采用“将算法移动到数据”的方法。您可以从所有数据源(使用外部表)访问或摄取所有数据,然后处理并将数据存储到一个面向 ML 模型的融合数据库。当在数据库中训练模型完毕后,您可以使用 SQL 查询(使用 PREDICTION 运算符)或 OML4Py API 直接部署模型。当然,您也可以使用 OML 服务来部署在外部环境下训练的模型。最后,Oracle 自治数据库还提供了文本、空间和图形分析机器学习功能。
该架构使用了以下组件:
它支持以下数据源:
该架构在 VCN 中部署了以下组件:
对于大数据和分析,请注意以下事项。
对于实施机器学习和人工智能,请注意以下事项。
反面模式
在设计实施时,请注意以下事项:
必要时,请使用以下替代方案,避免实施反面模式。
以下是使用 Oracle Cloud Infrastructure (OCI) 数据和分析服务摄取、存储、编录、准备、处理和分析大数据的实施范例。
使用 Oracle ADW 业务数据平台(作为数据仓库或数据集市)和 Oracle 分析云。
管理 ADW 业务数据平台中的数据,使用 Oracle 分析云执行数据可视化。
详细了解相关资源。
注:为免疑义,本网页所用以下术语专指以下含义: