当前位置: 首页 > 科技观察

全面了解移动后端即服务MBaaS

时间:2023-03-15 21:17:00 科技观察

【翻译】如果您还没有开始构建移动体验,您可以为您的移动应用构建一个完整的后端——一个基于数据同步、推送通知的后端支持,用户管理和文件处理等,会发生什么?如果该后端的架构可以让您轻松地在其上构建新的跨平台本机应用程序和Web应用程序,那会怎样?虽然这听起来有些牵强,但这正是移动后端即服务(MBaaS)提供商旨在为应用程序开发人员提供的服务。这是否适用于您构建的移动体验由您决定。我希望通过这篇文章,您能够从四个部分获得重要信息:MBaaS提供商对现代移动应用程序开发有多合适,如何评估MBaaS提供商,MBaaS提供商提供的核心功能,以及此类解决方案的使用.不足的。有了这些信息,您就可以轻松确定MBaaS提供商是否适合您的数字战略。为讨论定下基调使得对MBaaS的讨论变得规范化极具挑战性。虽然MBaaS是一个公认的术语,但每个人对它的定义都不同。Kinvey最近以图形方式盘点了许多后端即服务企业解决方案提供商(http://www.kinvey.com/enterprise-mobility-ecosystem-map)。此图展示了一个全面而广泛的生态系统,定义不同的解决方案组可能极具挑战性。EnterpriseMobilityEcosystemMap由于市场格局一直在变化,要在某个时刻弄清所有参与者并不容易。然而,一些主要供应商已经在这个市场上证明了自己。Parse、Kinvey和Salesforce.com等提供商已经构建了成熟的平台,人们每天使用的许多应用程序目前都依赖这些平台。其他更多新兴解决方案仍需要时间进行评估,例如亚马逊网络服务(AWS)Cognito、微软Azure移动服务、AppleCloudKit、KonyMobileFabric和PivotalCF。并排比较MBaaS提供商的另一个主要挑战是并非所有提供商都具有相同的功能。注意:出于本文的目的,我将重点关注Parse和Kinvey,因为它们的成熟度和功能的广度。这两种解决方案都适用于大多数用例,从独立开发人员的应用程序到跨越多个数字化项目的企业解决方案。现实世界中的MBaaS为了帮助解释MBaaS的用途,我将使用我们最近从UniversalMind的研发小组获得的示例。我们在UniversalMind的所有办公室都有灵活的工作区域。我们想看看如何使用iBeacons来跟踪可用的办公空间。iBeacon是一种符合Apple的iBeacon规范的传感器。它们使用蓝牙4低功耗协议进行通信,该协议允许应用程序不断搜索iBeacon,而不会耗尽用户的电池。在确定用户的接近度(用户离某物有多近)时,它们是理想的传感器;在某些环境中(例如室内),它们比使用GPS更合适。作为概念验证,我们希望构建跨平台应用程序的快速原型,以说明如何大规模部署该概念。该应用程序本身是相当基础的。以下是描述应用程序如何正常运行的数据关系的简要概述:?用户有帐户。?如果用户离站点上的iBeacon足够近,则可以将他们分配到工作区。?工作区可能已被占用或空置。?工作区位于办公室的特定位置。?用户可以列出该点周围的所有空闲工作空间。在这个应用示例中,我将介绍两种不同的场景。首先,我们将了解如何在没有MBaaS解决方案的情况下构建应用程序。然后我将描述如何使用MBaaS解决方案实际构建应用程序作为比较。这样,您就会清楚地看到所需工作量的巨大差异。这是UniversalMind研发团队开发的移动应用程序原型视图。没有MBaaS为了构建这个跨平台应用程序,我们需要实施一些核心组件:?服务器我可以启动一个AWS弹性计算云(EC2)实例并运行一个Node.js服务器。我什至可以使用ElasticBeanstalk或OpsWorks来处理一些常见的部署过程。?数据库由于我正在研究AWS,关系数据库服务(RBS)或DynamoDB都可以用作数据存储。另一个选择是在AWS上部署另一个解决方案,例如MongoLab。?服务我可以构建与数据库的完全集成,然后公开基于REST的服务,以促进对数据的创建-读取-更新-删除(CRUD)操作。?用户管理和安全我需要将用户实体添加为数据的一部分,然后将服务中的权限与用户和/或用户组拥有的数据相关联。此外,我需要让用户能够注册、重置密码、删除帐户等。?推送通知在这个部署在EC2服务器上的Node.js应用程序中,我需要集成允许跨平台的几个模块之一iOS和Android的通知。虽然大部分繁重的工作将在这些开源模块中处理,但我仍然需要将应用程序逻辑与通知集成。?iOS服务集成由于iOS是目标操作系统,我需要使用Swift或Objective-C在iOS上与此服务器集成。此外,我还需要弄清楚如何处理服务缓存、数据存储、离线处理、推送通知处理等。?Android服务集成由于Android是一个完全不同的平台,我还需要在该平台上构建相同的服务器集成。我还需要处理我在iOS上处理的所有相同问题。有了这些部分,我就可以开始实际构建应用程序的视图并将它们与数据联系起来。我还可以开始处理iBeacon集成,根据用户接近度将工作区设置为“已占用”。但是,要做到这一点并将基础架构部署到位需要我花费大量时间和大量配置。这时候MBaaS的优势就体现的淋漓尽致了。在这方面使用MBaaSSMBaaS的美妙之处在于它为我处理了最重要的部分:我根本不需要处理这些事情:供应服务器、安装和配置数据库、安装服务、管理用户、保护数据、设置向上推送通知或集成本机服务。所有这些都作为MBaaS的一部分提供。我的步骤现在看起来有点不同:1.在MBaaS提供商的帮助下构建应用程序。2.将本地软件开发工具包(SDK)整合到每个应用程序中。有了这些部分,我能够用很少的代码处理两个主要的服务集成:获取附近的工作空间,以及将工作空间的状态从空变为占用(反之亦然)。下面,我使用这些示例来详细说明一些示例iOSObjective-C代码,使用Parse作为MBaaS提供程序://在头文件或类扩展@property(nonatomic,strong)NSArray*workstations;//在/*视图之后在实现中加载,我们可以异步获取用户的位置,然后使用这个位置来查询附近的工作空间列表。*/-(void)viewDidLoad{[superviewDidLoad];//获取用户位置为ParsePFGeoPoint[PFGeoPointgeoPointForCurrentLocationInBackground:^(PFGeoPoint*geoPoint,NSError*error){if(!error){[selffetchWorkstationsNearPoint:geoPoint];}}];}/*此方法异步获取用户当前位置两英里范围内的所有工作区。*/-(void)fetchWorkstationsNearPoint:(PFGeoPoint*)geoPoint{PFQuery*query=[PFQueryqueryWithClassName:@"Workstations"];[querywhereKey:@"location"nearGeoPoint:userLocationwithinMiles:2];[queryfindObjectsInBackgroundWithBlock:^(NSArray*objects,NSError*error){if(!error){self.workstations=objects;}}];}在上面的代码中,我解决了第一个挑战:获取数据。在应用程序完成加载后,首先调用它以获取用户的当前位置。Parse提供了一个辅助类来获取这些数据,所以我们不需要直接依赖CLLocationManager。接下来,调用fetchWorkstationsNearPoint方法,该方法异步查询Parse的数据存储区。在幕后,SDK进行REST调用以从Parse的数据存储中获取数据。/*此方法获取分配了iBeacon标识符的工作区数据对象。然后它设置占用的属性,并异步保存对象。*/-(void)setWorkstationState:(BOOL)isOccupiedwithBeaconIdentifier:(NSString*)beaconcompletionHandler:^(NSError*error)completion{PFQuery*query=[PFQueryqueryWithClassName:@"Workstations"];[querywhereKey:@"beaconIdentifier"等于:beaconIdentifier];[queryfindObjectsInBackgroundWithBlock:^(NSArray*objects,NSError*error){if(!error){POWorkstation*workstation=[objectsfirstObject];workstation[@"occupied"]=[NSNumbernumberWithBool:isOccupied];[workstationsaveInBackgroundWithBlock:^(BOOLsucceeded,NSError*error){completion(error);}];}}];}在上面的代码中,我克服了第二个难点:设置特定工作空间的占用状态。该代码与第一个代码片段一样简洁。虽然您看不到触发此集成的iBeacon代码,但我想捕获与Parse的所有交互。首先,根据信标标识符获取特定的工作空间。字符串值是数据存储区中工作区的属性。接下来,我设置对象的占用属性,然后将该值保存回后台的数据存储区。这些任务可以用很少的代码完成,因为大部分逻辑是在Parse的iOSSDK中执行的。这可以处理服务委托、数据转换和缓存数据存储等任务,从而显着减少开发人员需要编写和维护的代码。虽然它不是灵丹妙药,但它为最常见的移动用例提供了可靠的解决方案。核心前提通过上面的示例,您可以看到MBaaS的核心前提是它一劳永逸地克服了支持移动后端的艰巨挑战,以便它可以在多个项目中一致使用。无需启用基于云的数据库、推送通知服务器和用户管理系统——您需要管理这些系统——您可以求助于MBaaS提供商,它将直接提供所有这些。此外,您不再对后端的正常运行时间和可扩展性负责,而是可以完全依赖提供商。虽然MBaaS确实遭到了质疑,但毫无疑问,MBaaS在过去一年中受到了很多关注。早期MBaaS提供商Parse被Facebook收购;此后,苹果、微软、亚马逊和谷歌分别收购了云平台。此外,现有的供应商已经成长;随着平台的成熟,它们的采用率显着增加。区分选项没有两个MBaaS解决方案是相同的,因此了解如何比较是关键。提供商之间的主要区别在于三个主要方面:平台支持、部署方法和功能重点。跨平台支持MBaaS的一个主要优势是能够支持跨多个平台的应用程序。当谈到在单一平台上提供深度集成的数据存储(MBaaS的一个组件)时,iCloud和CloudKit等一些解决方案做得很好。虽然这适用于单一平台,但它也极大地限制了应用程序在未来成为跨平台的能力。不会。但是,如果将来某个应用程序只在单一平台上运行,这可能是一个很好的解决方案。一些供应商在原生移动平台上工作,而其他供应商则支持移动网络体验甚至桌面应用程序。本质上,大多数MBaaS体验都提供REST服务,允许在几乎任何平台上使用,但特定于技术的SDK对开发人员来说是一大优势。如果您选择的MBaaS提供商的SDK支持您想要支持的所有平台,那将是理想的选择。?Parse目前提供支持iOS、Android、WindowsPhone8、Windows8、PHP、JavaScript、MacOSX和Unity的SDK。?Kinvey目前提供支持iOS、Android、JavaScript、AngularJS、Backbone.js、Ember.js、Node.js、PhoneGap和Titanium的SDK。部署方法除了跨平台支持之外,MBaaS解决方案的不同之处还在于它们的部署方式。确定哪些选项适合您的业务取决于几个因素,包括现有基础设施、数据存储法规(用于敏感数据)和成本阈值。以下是一些最流行的MBaaS解决方案部署方法:?托管多租户使用托管多租户MBaaS解决方案,您不必担心在基础设施上部署环境。在大多数情况下,提供商将使用现有的云服务提供商(例如AWS)在可扩展的环境中部署您的应用程序。在此环境中,您的后端将与平台其他用户的其他应用程序一起在服务器上运行。?专用托管对于专用托管解决方案,提供商仍然使用公共云(例如AWS),但您将确保MBaaS环境部署在您专用的服务器上。?本地托管通过本地解决方案,供应商将在您拥有的服务器上部署MBaaS环境。在大多数情况下,这需要您使用特定的虚拟化平台,例如VMwarevCloudAir。某些处理敏感受监管数据的企业可能需要这样做。在大多数情况下,提供商将与企业内部IT团队共同管理平台。?开源使用OpenKit和Helios等开源MBaaS解决方案,您可以将解决方案自行部署到您选择的任何基础架构上并自行管理。这可以是内部解决方案或基于云的解决方案。不过,您仍然需要自己维护和更新系统。虽然此类解决方案为您提供了完全控制权,但它们也否定了MBaaS解决方案所具有的许多优势。对于大多数小型企业而言,托管多租户解决方案是最合适的。大型企业可能面临隐私问题、州和联邦法规以及规定他们只能使用一种解决方案的公司要求。例如,金融机构通常对账户数据的存储位置有严格的限制。在这种情况下,托管的本地解决方案可能是唯一的选择。Parse目前提供托管的多租户解决方案。Kinvey目前提供托管多租户、托管专用和托管本地计划。功能重点几乎每个MBaaS解决方案都有其重点。有些主要针对独立应用程序开发人员,而另一些则专注于企业。了解将精力花在哪里也将帮助您确定哪个MBaaS解决方案值得您投入时间和金钱。Kinvey对企业的高度关注就是一个很好的例子。Kinvey提供数据连接器规范,允许企业将外部数据源连接到现有的MBaaS数据存储,还提供AuthLink与企业身份验证和授权集成。这些功能对于大多数独立应用程序开发人员来说并不重要,但对于希望将MBaaS解决方案集成到现有系统中的企业来说,它们绝对是必不可少的。Parse有不同的侧重点。自从被Facebook收购后,它并没有像过去那样专注于企业,但因为被Facebook整合,现在大大加强了与社交巨头的融合。Parse的SDK现在提供七个实用程序,旨在简化对Facebook数据某些部分的访问。MBaaS核心功能MBaaS解决方案提供的大部分核心服务满足移动应用的基本需求。主要的MBaaS提供商都提供四大功能:用户管理、数据安全同步、推送通知和文件处理。了解这些关键功能方面将帮助您了解MBaaS提供商如何成为您数字战略的一部分。用户管理大多数供应商都提供用户管理的核心功能。使用此功能,您可以为每个用户分配一个帐户以与该帐户关联。一些服务更进一步,让您轻松集成电子邮件验证、密码重置、社交登录和对匿名用户的支持。这是MBaaS功能的核心方面,因为它直接关系到整个平台的安全性。 这些解决方案在面向企业的MBaaS方面更进了一步。Kinvey等提供商提供与现有LDAP提供商的集成,甚至允许用户使用Salesforce.com登录名进行身份验证。这里的关键是,很少有企业客户希望重新处理用户管理,而是希望与现有解决方案集成。一些企业级MBaaS提供商正好符合这一要求。安全同步数据在当今的数字世界中,用户很少只与一台设备甚至一个平台交互。虽然iCloud等解决方案允许开发人员确保在同一平台上使用多个设备的用户的数据持久性,但它们根本无法解决用户需要从网站访问与从移动应用程序访问相同数据的情况。同步的跨平台数据对于任何旨在向用户公开其自身各个方面的应用程序都是必不可少的。因此,同步数据几乎是每个MBaaS解决方案的核心。推送通知实时推送通知是许多移动应用程序的重要组成部分。但是,与Apple推送通知服务(APN)或GoogleCloudMessaging的集成通常需要专用的服务器应用程序。许多企业构建自己的跨平台通知服务器来管理这种交互。Parse和Kinvey都为Android和iOS提供基本的推送通知集成。文件存储和分发从用户生成的内容上传到远程应用程序内容的全球分发,应用程序需要与文件进行交互。许多应用程序使用现有服务(如AmazonCloudFront)来利用全球内容分发网络(CDN)来分发远程内容。大多数MBaaS提供商提供CDN解决方案的抽象,以便应用程序开发人员可以使用边缘服务器网络来确保他们的内容以一致、高性能的方式在全球分发。额外功能除了这组核心功能外,MBaaS提供商还开始在许多不同的功能上脱颖而出。例如,Kinvey具有iBeacon集成,而Parse具有第三方集成,例如发送短信。如果您希望利用特定功能,那么找到适合您的应用程序路线图的平台非常重要。在这里横向评估解决方案变得很困难,因为可用的解决方案在功能上并不完全相同。缺点和疑问虽然此功能对于希望缩短应用程序的总体上市时间并确保跨数字计划的后端一致性的企业来说似乎是理想的选择,但有几个考虑因素:?在大多数情况下,MBaaS解决方案旨在提供一个就成本而言,进入门槛非常低。然而,随着应用程序的使用越来越广泛,成本曲线通常也有相当陡峭的斜率。?由于MBaaS解决方案并不完全符合标准规范,并且由于海量数据迁移并不总是那么简单,因此应用程序与最初选择的MBaaS解决方案紧密相关。这并不是说它不能被替换,但在很多情况下,替换它既昂贵又费力。?MBaaS提供商现在很热门。你只要看看Facebook对Parse的收购,就可以看出MBaaS提供商必然会被收购。对您正在考虑的每个MBaaS提供商的条款进行彻底审查,以弄清楚这可能会如何影响您的应用程序。但是,在许多情况下,利大于弊。由于MBaaS的缺点,彻底调查可能的MBaaS解决方案,然后将其中一个纳入您的应用程序开发计划。MBaaS当然也遭到了质疑。在MBaaS的早期,我经常遇到这类怀疑论者。他们主要关心的是,单一解决方案如何提供每个应用程序所需的灵活性?事实上,没有任何单一的解决方案能够灵活地满足各种需求。体验所有者需要选择最适合所需功能的解决方案以及将用于提供体验的平台。在某些情况下,您会发现找不到合适的。这时,自定义后端将是最好的方式。在我之前提到的用例中,这种方法可能为我节省了几周的开发工作时间。此外,它消除了我监视和管理作为整体解决方案一部分的服务器实例的需要。对我来说,好处是缩短了该原型的上市时间。然而,正如我们将在下一章讨论的那样,这并不是唯一的好处。MBaaS和数字标准我大力提倡在企业(无论规模大小)内建立数字标准。数字标准确实需要深谋远虑,但如果实施得当,它们可以确保整个企业数字项目的高效性和一致性。然而,大多数企业只致力于用户界面标准。在许多情况下,跨多个数字计划使用MBaaS的组织也可以期望在后端交互中实现类似的标准化。在单个项目中采用MBaaS显然对企业有一定的好处,但主要价值在于在多个项目中使用MBaaS所获得的共享经验和一致性。谁应该考虑这个选项?MBaaS对几乎任何规模的企业都很有价值,但好处各不相同:?大型企业对于大型企业,Kinvey等企业级解决方案将为企业的移动应用程序如何执行常见任务奠定基础。结束标准。此外,它还标准化了移动应用程序如何访问MBaaS云外部的数据(使用Kinvey的数据连接器等解决方案)。?中小型企业对于许多小型企业,MBaaS提供了完全不受管理且可扩展的基础架构。企业可以部署不需要专门团队全天候24/7监控基础设施的体验。此外,它大大缩短了上市时间,并大大减少了未来需要维护的代码量。如今,许多公司都在充分利用这种方法。Cadillac、TravelChannel和TheFoodNetwork只是充分利用MBaaS的公司的几个例子。MBaaS提供商支持GovTribe、Hipmunk和Timbre等体验。Parse和Kinvey都提供了几个可以帮助您评估成功经验的客户案例。结论和后续步骤在我的下一篇文章中,我将介绍如何逐步构建跨平台MBaaS应用程序。该文章将重点介绍几个关键领域,在这些领域中,利用MBaaS提供商而不是开发自定义解决方案可以提高效率。如果您现在准备好使用MBaaS,下一步就是查看提供商提供的示例并分析每个平台的功能和价格。以下资源将帮助您确定最适合您体验的解决方案。Kinvey资源?开发中心:http://devcenter.kinvey.com?Kinvey的应用成本估算器工具:http://www.kinvey.com/app-cost-estimator?平台(概览):http://www.kinvey.com/platformParse资源?文档:https://parse.com/docs?价格:https://parse.com/plans?ParseCore:https://parse.com/products/core英文原文:UnderstandingMobile后端即服务布加迪编译