如何构建可扩展的移动应用程序基础设施?
您是否希望扩展移动应用程序基础架构?下面的深入教程详细介绍了如何扩展移动应用基础架构的实际经验。
Contents
什么是移动应用程序?
移动应用程序是在智能手机、平板电脑和手表等移动设备上运行的应用程序。移动应用程序有多种类型,包括本地应用程序、混合应用程序和网络应用程序。
- 原生应用程序适用于特定的操作系统,如 Android 或 iOS;
- 网络应用程序使用 HTML5 和 CSS 等技术进行编码;
- 混合应用程序的工作方式与网络应用程序类似,但被置于本地容器中。
请继续阅读,了解有关移动应用程序基础架构的更多信息。
可扩展应用程序架构的定义是什么?
大规模构建移动应用程序并非易事,在定义可扩展架构时,许多变量都至关重要。
一个大型、可扩展的移动应用程序很可能要支持数千甚至数百万次使用,并且需要具有良好的性能、可靠性和安全性。
这意味着一流的架构不会出现停机、崩溃、快速加载速度和最先进的安全性。
本文将考虑这些因素,为移动应用程序提出一个可扩展的后端基础架构。
移动应用程序基础设施是怎样的?
移动应用程序架构由多个要素组成,以下是移动应用程序所需的基础设施。
- 应用程序发布平台
- SDK – 软件开发工具包
- 应用程序接口
- CDN – 内容交付网络
- 对象存储
- 负载平衡器
- 应用服务器
- 数据库服务器
继续阅读,了解更多有关可扩展移动应用程序架构和上述各层的信息。
应用程序发布平台
使用不同的技术可以构建移动应用程序。从 Swift 和 Kotlin/Java 等原生 iOS 和 Android 开发语言,到 React Native 或 Flutter 等跨平台开发框架。
上述技术将创建移动应用程序的前端或客户端界面。Google Play 和 App Store 等应用商店提供了向终端用户分发移动应用的生态系统。
开发人员需要向这些发布平台提交自己的移动应用程序,等待他们的审核,只有完成这一步,才能让应用程序上线运行。
Google Play 和 App Store 都有不同的发布指南,必须先阅读这些指南,以避免出现可能导致无法发布应用程序的问题。
为了避免应用程序商店的审查,一种替代方法是使用 React、Angular 和 Ionic 等技术开发 PWA(渐进式网络应用程序)。
SDK – 软件开发工具包
软件开发工具包是构建可扩展移动应用程序基础架构的重要步骤。SDK 由一个可安装的软件包组成,其中包含 API、库、调试器、文档等工具。
移动后台 SDK很有可能包含一些元素,在后台和前台之间架起界面的桥梁。
一个简单易懂的例子就是从后台向前台发送推送通知。SDK 将为这一操作提供便利,并加速功能元素的集成。
API – 应用程序编程接口
应用程序接口是开发移动应用程序架构的重要元素。应用程序接口是连接前端(客户端)和移动应用程序后台(服务器端)的软件接口。
在移动应用后台实施中使用应用程序接口的优势包括任务自动化、功能定制、信息灵活传递和分发新服务。
CDN – 内容交付网络
CDN 是一组分布在不同地理位置的服务器,它们共同提供快速的内容传输。这些服务器离最终用户更近,可以更快地传输资产,加载互联网内容(图片、视频等)。
实施 CDN 的其他优势包括:通过优化路由缩短移动应用程序客户端与服务器端之间的通信时间、降低带宽成本和安全性(DDoS 攻击、证书等)。
对象存储
移动应用程序基础设施的这一要素将连接到 CDN,包括文件存储、视频存储、图像存储等。CDN 将缓存内容,并加快向离最终用户最近的位置交付内容的速度。
负载平衡器
创建移动应用程序基础架构的下一层是负载平衡器。在云计算中,负载平衡器将任务分配给一组服务器,以提高整体处理效率。
CDN 将连接到负载平衡器,负载平衡器软件将有效分发客户端请求,确保高可用性,并根据需求进行增减。
应用服务器
构建移动应用架构的下一步是应用服务器。这部分基础架构将处理业务逻辑,处于数据库服务器和 CDN 之间。
数据库服务器
建立移动应用基础架构的最后一步是创建数据库服务器。数据库集群由存储和处理所存储数据的高能实例组成。
数据库基础设施可以是冗余的,也可以不是。冗余架构将提供至少两个实时同步数据的实例。
如何扩展移动应用程序?
构建可扩展的应用基础架构主要有两种方法。第一种是使用移动后端即服务等托管服务,第二种是使用基础设施即服务提供商从头开始创建后端。
使用 BaaS 服务包括即用型可扩展基础设施、用于加速后端开发的开箱即用构建模块,以及用于简化服务器端和客户端集成的 SDK。一般来说,使用后端平台更容易实现应用程序的扩展。
从头开始开发后端将为开发人员提供更多灵活性,并可控制大多数基础设施元素。但另一方面,开发人员需要管理后端,并根据工作量对基础设施进行增减。
让我们分别对这两种方案进行详细探讨。
BaaS – 后台即服务
使用 BaaS 扩展移动应用程序后端非常简单,所有要素都已就绪,可以实现这一目标。BaaS 平台的核心业务是为客户提供无忧、安全和可扩展的架构。
一些后端提供商(如Back4App)允许用户在几分钟内创建一个后端。第一步是注册并命名第一个应用程序。
下一步是完全自动化的,平台将在几分钟内提供数据模型、应用服务器、扩展策略、备份和安全。
下一个屏幕提供一个图形用户界面(GUI),其中包括数据模型、无服务器功能、应用程序接口和基础架构设置。
后端可随时使用,具有内置的可扩展性,用户只需通过 SDK 将应用程序前端连接到后端,上传数据并编写业务逻辑代码。
Back4App 提供许多随时可用的 SDK,包括 React Native、Flutter、Android、iOS、Javascript、Xamarin 等。
要详细了解如何使用 Back4App创建第一个应用程序,请参阅教程《使用 Back4App 创建第一个应用程序》。
扩展移动应用程序基础设施的真实案例
下面有两个实例说明使用后台即服务来扩展移动应用程序基础架构的优势。
- Broadcast
我们要举的第一个例子是挪威初创公司 “奥斯陆广播”(Broadcast Oslo)。该公司是奥斯陆节日、音乐会和俱乐部的免费指南。
Broadcastoslo 是一个移动优先的应用程序,在 Google Play 和 App Store 上都有发布。用户下载后,可以了解奥斯陆未来几个月的所有活动。
该应用程序还允许用户实时访问节日时间表,而这正是基础设施可扩展性挑战的起点。
2022 年奥斯陆Musikkfest于 6 月 4 日举行,约有 2 万人参加。因此,试想一下,要支持成千上万的用户同时访问和检索应用程序中的数据,基础设施的可扩展性该有多大。
Broadcast公司的技术团队决定使用 Back4App 来解决这个问题,结果非常好!以下是Broadcast公司首席执行官 Tim Harris 对这次体验的评价。
再次感谢你们的帮助,今天对我们来说是非常成功的一天,重要的是我们在人们访问应用程序时没有遇到任何问题!
蒂姆-哈里斯,Broadcast公司首席执行官
- Fight List
Fight List 的下载量已超过 1000 万次,是Two4Tea 制作的一款非常成功的游戏。这是一款问答游戏,用七种以上的语言发行,在美国和法国排名第一。
该游戏具有复杂的扩展挑战,需要数千名用户同时访问应用程序。
Two4Tea 选择 Back4app 来解决基础设施方面的挑战,并在高峰期每秒处理超过 10K 个请求。以下是 Two4Tea 首席执行官 Nicolas Boulch 对这次体验的评价。
此时,我们意识到选择 Back4App 是正确的,因为他们可以对我们的应用程序进行具体分析,并为我们量身定制解决方案。
尼古拉斯-布尔奇,Two4Tea 首席执行官
欲了解有关 Fight List 扩展挑战的更多信息,请阅读文章《使用 Back4App 扩展游戏》。
在任何主要云提供商上建立自定义后端
构建可扩展移动应用基础架构的第二种选择是使用 AWS、Google Cloud、Azure、Digital Ocean 等云提供商构建后台。
采用这种设置的优势主要在于其灵活性、对后台基础设施的更多控制以及对每个流程步骤的可视性。
其弊端在于需要花费大量的工程精力来构建和维护后台基础设施、开发模板化的后台代码以及全天候监控系统。
AWS 是全球使用最多的云提供商。让我们用这家供应商来说明创建可扩展移动应用程序后台的步骤。
第一步是创建并激活 AWS 账户。请参阅教程 “如何创建并激活一个新的 AWS 账户“,了解有关如何操作的更多详情。
下一步是定义支持后台实施的产品。我们将在本示例中使用以下产品:
- EC2 实例
- EBS – 弹性块存储
- S3 – 简单存储系统
- 负载平衡器
- CDN – CloudFront
让我们进一步详细探讨每个步骤。
创建 EC2 实例
可扩展的后端基础架构需要应用程序和数据库虚拟机。第一步是定义要在集群上使用的实例模型。
AWS 提供多种实例类型,针对许多使用情况进行了优化。其中包括通用实例、计算优化实例、内存优化实例、加速计算实例和存储优化实例。
在本例中,我们将使用一个通用实例。让我们从提供基于 Arm 架构的 t4g.medium 实例开始;它非常适合可突发的工作负载,而且每小时价格优惠。
以下是需要遵循的初始步骤:
- 登录 AWS
- 转到 EC2
- 实例
- 启动新实例
这一步必须定义操作系统、实例类型和大小、网络设置、为实例添加块存储、安全设置等。
有关设置 EC2 实例的详细信息,请参阅创建和启动 EC2 实例教程。
服务器群集准备就绪后,下一步就是根据工作负载配置扩展策略。
扩展服务器集群有两种方法:水平扩展和垂直扩展。
- 横向扩展 – 向群集添加更多实例,以应对新的工作负载。
- 垂直扩展– 向实例添加更多资源(CPU/RAM)以满足新的工作负载,即增加实例的大小。
一般来说,应用服务器首选水平扩展机制。数据库集群则优先采用垂直扩展方式。
一般来说,横向扩展应用程序集群是一个简单的过程。使用 AWS 的方法是访问 “自动扩展 “菜单并启动新配置。
纵向数据库扩展是一个更复杂的过程,因为不可能关闭实例并改变实例大小。这样,群集就会面临停机。
正确的方法是创建一个新的更大的实例,同步数据,并将工作负载处理转移到更大的实例中。这样做并不复杂,但自动完成这一过程非常耗时。
如果应用程序的工作量增长过快,以至于无法再进行纵向数据库扩展,那么在多个实例中分配工作量将是唯一的出路。这是一种复杂的实施方法,只能作为最后的选择。
有关如何为 EC2 添加自动缩放功能的详细步骤,请参阅教程 “开始使用 Amazon EC2 自动缩放功能”。
EBS – 弹性块存储
每个实例都需要一个连接的 EBS 卷。硬件内置存储的短暂实例除外。
这是在初始虚拟机配置过程中完成的一个简单步骤。难点在于确定正确的 EBS 大小,以避免不必要的成本和足够的数据存储容量。
选择正确的 EBS 类型也至关重要。EBS 有很多选择,包括 SSD 和磁盘。选择适当的 EBS 类型对于保证性能和成本的良好平衡至关重要。
有关如何将 EBS 卷附加到虚拟机的详细信息,请参阅将 Amazon EBS 卷附加到实例。
S3 – 简单存储服务
强大且可扩展的后端基础架构需要对象存储。利用 AWS 实现这一目标易如反掌,而 S3 正是实现这一目标的理想产品。
创建 S3 存储桶的第一步是定义存储文件的区域。一般来说,应选择与 EC2 实例相同的区域。
作为创建过程的一部分,有必要定义对象所有权、公共访问规则、数据包版本和加密要求。
AWS S3 存储桶默认是可扩展的,用户只需为使用的资源付费。有关创建 S3 存储桶的其他信息,请参阅创建 S3 存储桶教程。
负载平衡器
可扩展的基础设施需要正确的负载平衡器实施。AWS 提供多种负载平衡器类型,作为其产品的一部分。
应用程序负载平衡器会将请求路由到正确的 EC2 实例,并监控这些实例的健康状况。
将负载平衡器附加到实例的过程并不复杂,包括以下步骤:
- 转到 EC2 面板
- 负载平衡
- 创建负载平衡器
- 选择负载平衡器类型
- 配置负载平衡器的 IP 地址类型、VPC、可用性区域和附加服务。
有关如何设置负载平衡器的详细信息,请参阅教程 “开始使用应用程序负载平衡器“。
Cloudfront CDN
Cloudfront 是 AWS 提供的内置内容交付网络,支持全球约 300 个边缘位置。该产品可加速静态和动态内容分发,提高安全性,并易于与其他 AWS 产品集成。
作为可扩展后端架构的一部分,Cloudfront 将与 S3 存储桶和负载平衡器连接。
用户可以通过 EC2 控制面板将 Cloudfront 连接到负载平衡器,创建负载平衡器、目标组和配置 Cloudfront 分发。更多详情,请访问Setting up a Cloudfront distribution for EC2。
将 Cloudfront 连接到 S3 存储桶也很简单。连接通过 Cloudfront 面板进行,创建 Cloudfront 分发并添加起源域。如需了解更多信息,请阅读博文 “使用 S3 Origin 创建 AWS CloudFront Distribution”。
结论
移动应用程序可在手机、平板电脑和手表等设备上运行。最常见的实现方式有本地应用程序、混合应用程序和网络应用程序。
可扩展的移动应用基础架构由一个系统组成,该系统设计为无停机、无崩溃,并且超级快速和安全。
可扩展基础设施的基本要素包括应用程序发布平台、SDK、API、CDN、负载平衡器以及应用程序和数据库服务器。
实现一流的可扩展移动应用程序基础架构的两种最常见方法是使用后端即服务(Backend as a Service)等现成解决方案,或在 AWS 等云服务上建立量身定制的后端。
后端即服务解决方案可以提供更快的实施速度、开箱即用的扩展功能以及预定义的安全协议。另一方面,定制的后端将提供更灵活的环境和控制。
希望您喜欢阅读这篇文章,并希望它能帮助您更好地理解良好移动应用程序架构的基础。如果您不想再为创建、维护和扩展后端而烦恼,请联系Back4App,了解我们如何为您提供帮助。
常见问题
什麼是行動應用程式?
行動應用程式可在手機、平板電腦和智慧手錶等裝置上運作。最常見的實作方式包括原生應用程式、混合式應用程式和網頁應用程式。
行動應用程式的基礎架構是什麼樣子?
可擴展的基礎架構主要元素包括應用程式發佈平台、SDK、API、CDN、負載平衡器,以及應用程式與資料庫伺服器。
如何建立可擴展的行動應用程式基礎架構?
打造頂級可擴展行動應用程式基礎架構的兩種常見方式是:使用像「後端即服務」(Backend as a Service)這類的現成解決方案,或是在 AWS 等雲端服務上設置量身打造的後端系統。