欢迎访问深圳敏捷云计算科技有限公司!

甲骨文云OCI -APP应用开发-Web与移动端的创新之路

2024-03-20 原创文章

构建您的网页或移动应用程序,让它成为一系列可以独立测试、部署,并由不同的应用团队负责的微服务。通过REST API公开服务,并使用API与其他微服务进行通信。

对于网页或移动应用来说,最重要的需求包括:

  • 支持各种客户端,如浏览器和移动设备
  • 安全性高
  • 提供全年无休的24/7/365服务
  • 能够在需求激增时进行扩展
  • 低网络延迟处理能力
  • 在更新或修改时无停机时间
  • 我们的云服务平台提供了可伸缩、安全、可靠且高性能的基础设施,满足最苛刻的网页和移动应用需求。本文档介绍了架构网页或移动应用的设计原则,并基于这些原则提供了参考架构。
  • 对于正在寻找云服务器的您来说,这不仅是一种技术选择,更是一个业务上的重大决策。无论是国内云服务器、海外云服务器,还是专为中小企业量身定制的轻量云服务器,我们都能提供。优势明显:成本效益高、上云快捷、支持企业出海、提供全面的云业务解决方案。在这个数字化时代,选择合适的云服务,就是赋予您的业务以翱翔的翅膀。



设计原则

  • 使用轻量级开源框架和成熟的编程语言
  • 使用Graal Cloud Native或Helidon来构建您的应用。这两者都提供日志记录、遥测、安全和配置功能,以及构建REST API等常见模式。
  • 使用Java:这是一个平台独立、可移植的语言,拥有丰富的库集,被数百万开发者用于构建可扩展、弹性和安全的应用。

以服务方式构建应用并通过API进行通信

  • 将您的应用构建为一系列微服务,这些服务可以独立测试、部署,并由不同的应用团队负责。通过明确定义的REST API公开服务,并使用这些API与其他服务进行通信。使用OCI API网关作为所有客户端的单一入口点,然后将API请求路由到适当的服务。
  • 使用OCI Service Mesh简化并保障在Oracle容器引擎Kubernetes (OKE)集群中托管的服务之间的通信安全。OCI Service Mesh还允许您通过其代理组件(作为应用pod的sidecar运行)发出的指标和日志观察服务之间的所有网络流量。

自动化构建、测试和部署

  • 频繁交付代码,然后以最小化停机时间的方式部署您的应用。使用OCI DevOps建立一种一致和自动化的开发、构建、打包、测试和部署应用的方式。使用Oracle云基础设施资源管理器可靠地配置您的基础设施元素,如API网关、负载均衡器、数据库、Kubernetes集群和其他服务。
  • 使用完全托管服务,如Oracle容器引擎Kubernetes (OKE)、Oracle云基础设施对象存储和Oracle自主数据库:这些服务最大化可用性和可伸缩性,以应对您的应用需求的变化。完全托管的服务确保您的应用可用,并在托管您的应用基础设施的数据中心发生故障时保护它。

保持应用层的无状态

  • 尽可能保持应用的中间层组件无状态。如果必要,使用Oracle自主数据库存储应用状态,以确保一致性、耐用性和快速恢复能力。
  • 使用全功能支持的融合数据库处理所有数据
  • 您的应用可能使用各种格式的数据,如表格(关系型)、非结构化、XML、JSON、空间或图形数据。传统上,这种多样性需要不同类型的数据库,例如关系数据库用于关系数据,文档存储用于非结构化数据,或者图形数据库用于层次化链接数据。然而,使用多个数据库通常导致额外的运营复杂性和数据不一致性。相反,使用单一的多模型Oracle自主数据库存储、索引和搜索多种类型和格式的数据。

实施端到端监控和追踪

  • 开发团队可能会受到诱惑,开发自己的可观测性工具以监控他们拥有的服务和应用。您的应用可能包含由不同的应用和业务团队拥有的数百个服务。与其每个团队都构建自己的工具,不如使用Oracle云可观测性和管理平台集中解决方案:它监控整个堆栈的所有层次,以发现并解决应用中的问题。

通过自动数据复制和故障恢复消除单点故障

  • 这些原则和方法不仅提升了应用的健壮性和可靠性,还确保了业务的连续性和效率。无论是面对高峰需求的挑战,还是数据中心的潜在故障,我们的云服务平台都能为您的应用提供坚实的支持和强大的回弹力。


您的应用必须具备弹性,能从故障中恢复,并最小化停机时间和数据损失。通过以下方式实现冗余,消除单点故障:

  • 在OKE中,设置带有至少三个节点的节点池,每个节点位于多可用性域区域的不同可用性域中。
  • 在单一可用性域区域中,设置OKE的带有至少三个节点的节点池,每个节点位于不同的故障域中。
  • 使用单个公共负载均衡器和多个私有负载均衡器以及多个入口控制器,在OKE中实现冗余。
  • 设计一个灾难恢复预案拓扑,以便在托管您的应用的主要区域发生灾难时,快速重启应用并恢复工作负载到备用区域。
  • 配置您的CI/CD管道,以便将您的应用部署到备用区域,从而从区域故障中恢复。
  • 使用块存储卷复制和对象存储复制,将您的块存储卷跨区域复制。
  • 如果主要区域失败,使用Oracle云基础设施资源管理器在备用区域中配置所需的基础设施。
  • 使用自动数据保护设置您的Oracle自主数据库,以最大限度地减少操作停机时间和数据损失。

此外,进行弹性测试以了解您的应用在偶发异常条件下的表现。例如,您可以采用混乱猴框架进行混乱测试。还可以使用限流、断路器和重试机制来实现弹性应用。

  • 实施深层防御策略,确保应用生命周期的安全
  • 您应该设计足够安全的应用,以防御恶意实体的攻击。审查您的应用、客户端代码和第三方代码,检查可疑行为。
  • 使用过滤规则并使用Web应用防火墙(WAF)设置DDoS保护,以保护您的应用免受不必要的流量攻击。
  • 在Oracle云基础设施保险库中存储敏感信息,如密码和认证/授权令牌。设置Kubernetes秘密在etcd中的加密。轮换并缩短应用使用的证书的有效期,使攻击者更难冒充可信实体。
  • 遵循最小权限原则,确保用户和服务账户只拥有执行其任务所必需的最小权限。使用Oracle云基础设施身份和访问管理(IAM)控制谁可以访问您的应用及其组件。在IAM中使用多因素认证,为管理员强制实施强认证,限制对您的应用及其组件的访问。


架构

推荐使用此架构模式来构建由微服务组成的Web或移动应用程序,这些微服务作为容器部署在OKE上的Kubernetes集群中。通过使用Oracle Autonomous Database实现数据持久化。应用程序的媒体和图像文件存储在对象存储中。以下图表展示了这一架构。

该架构包含以下组件:


Web应用程序防火墙(WAF)

  • WAF保护应用程序免受恶意和不必要的互联网流量的侵害。它可以保护任何面向互联网的端点,为您的所有应用程序提供一致的规则执行。


Oracle云基础设施API网关

  • OCI API网关是一个完全托管的区域API网关服务,为OKE和Oracle云基础设施上运行的任何其他服务或端点提供受保护的RESTful API端点。在此架构中,请求被路由到一个私有负载均衡器,该负载均衡器将请求转发到在OKE中运行的服务。


Oracle云基础设施身份和访问管理(OCI IAM)

  • OCI IAM提供强大的多因素认证、社交登录、终端用户自注册、身份管理、单点登录和应用程序的身份治理。


负载均衡器

  • 负载均衡服务提供从单一入口点到您的虚拟云网络中可达的多台服务器的自动流量分配,例如架构中的容器化微服务的OKE节点。


Oracle自治数据库

  • Oracle自治数据库是一个完全托管的数据库环境,可以弹性扩展,提供快速查询性能,并且不需要数据库管理。您无需配置或管理任何硬件或安装任何软件。


对象存储

  • 对象存储提供对大量结构化和非结构化数据的快速访问,包括数据库备份、分析数据以及图像和视频等丰富内容。使用标准存储来存储您需要快速、立即和频繁访问的热数据。使用归档存储来存储您长时间保留且很少或几乎不访问的冷数据。
  • 在此架构中,应用程序的媒体资产存储在标准存储类别的对象存储桶中。


容器引擎服务Kubernetes(OKE)

  • OKE是一个完全托管、可扩展且高可用的服务,用于将您的容器化应用程序部署到云端。您指定应用程序所需的计算资源,OKE会在现有租户的OCI中为它们提供服务。容器引擎使用Kubernetes自动部署、扩展和管理跨主机集群的容器化应用程序。


服务网格

  • Oracle云基础设施(OCI)服务网格是由OCI管理的应用程序基础设施层,用于服务间通信。它通过为可观测性、安全性和流量管理定义标准,简化了云原生应用程序的开发和部署。服务网格以轻量级代理的形式实现,部署在客户的Pod中与应用程序代码并行,无需应用程序了解它们的存在。




替代方案

使用微服务并不是创建移动应用或Web应用的唯一方法。这种替代架构模式展示了一个三层拓扑,由负载均衡器、自动伸缩的Web/应用层和高可用数据库组成。所有资源都部署在OCI地域的单个可用性域中。各层在单个虚拟云网络(VCN)的不同子网中隔离。安全列表充当防火墙,用于调节网络流量到达和离开每层资源。附加到每个子网的路由表包含规则,用于指导流量到VCN外的目的地。


其他替代架构,如单页架构、渐进式Web应用程序(PWA)或JAMStack也可以考虑,但在此未展示。


以下图表展示了这一替代架构。


示例用例


本用例描述了一个在线销售GPU的商店的客户订购系统。

以下图表展示了此用例的架构。


来自公共互联网的流量通过DNS服务通过Web应用程序防火墙(WAF)路由到互联网网关,该网关通过负载均衡器将传入请求转发到Ingress(Nginx)微服务。该应用由前端服务、订单服务、消息服务和库存服务组成。所有这些服务都已容器化,并位于OKE集群中。每个服务都使用REST API暴露其接口。数据存储在自治数据库中。

客户通过Web应用程序或移动设备上的应用程序使用前端服务订购GPU。订单服务和库存服务使用NATS开源消息服务相互通信。订单服务在订单可插拔数据库(PDB)中读取和写入订单数据。库存服务在库存PDB中读取和写入库存数据。订单服务使用通知服务发送通知,以便客户可以通过电子邮件或Slack了解订单状态。客户可以从前端检索订单状态,该前端使用订单服务的REST API查找订单。


部署

  • Universal Health Organization(UHO)是一个遵循现代应用开发框架原则的示例应用程序。特别是,它实现了Web或移动、消息和事件驱动架构模式的元素,并且可以在GitHub上找到。


  1. 访问GitHub。
  2. 克隆或下载代码库到您的本地计算机。
  3. 按照README文档中的说明操作。



开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。


Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。


利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。


Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门