AWS移动服务在游戏中的应用AWS解决方案架构师陈琳涛这场我们会了解到什么?•如何使用AWS移动服务构架移动应用•UnityonAWS•演示–Unity应用使用AWS的游戏公司认证&同步分析用户行为运行商业逻辑存储用户内容存储数据推送信息移动应用MobileSDK记录实时事件设备测试管理用户认证和跨设备同步配置记录活跃用户运行托管的无状态的客户端代码跨设备,操作系统测试存储并共享用户产生数据通过可靠的发送信息留存客户高速存储和查询跨用户和设备的NoSQL数据收集实时事件日志并做出快速响应AmazonCognito认证&同步AmazonMobileAnalytics分析用户行为AWSLambda运行商业逻辑AmazonS3AmazonDynamoDB存储用户内容存储数据AmazonSNSMobilePush推送信息AWS上的移动应用MobileSDK记录实时事件AmazonDeviceFarm设备测试AmazonKinesis好的,我们来打造一个应用吧!应用例子:“Find-a-Like”•场景:创建一个兴趣属性,当周围有志趣相投的用户时,收到通知。•功能:–创建兴趣属性并上传内容–持续跟踪位置信息–当附近出现志趣相投的用户时,获得通知–记录并分析应用行为逐层考虑一下创建用户信息,上传内容,并记录跟踪行为跟踪位置和用户兴趣点匹配并通知用户应用关注“你”活动关注“你做什么”用户关注“他们&我”123创建用户信息,上传内容,并记录跟踪行为1用户认证:AmazonCognito•认证匿名用户或者通过第三方提供商•生成临时证书并强制定期更新从而限制证书有效时间(STS)•跨设备和身份验证提供商的单一用户•使用IAMroles提供安全最佳实践创建你的配置文件:CognitoSync•创建你的配置文件并在Cognito本地数据集存储•会在你所有的设备上同步数据集•Cognito数据集内容为键/值对AWSCognito*syncClient=[AWSCognitodefaultCognito];AWSCognitoDataset*subs=[syncClientopenOrCreateDataset:@”UserProfile];[datasetsetString:”OliforKey:@”name];[datasetsetString:”50kmforKey:@”interestRadius];[datasetsynchronize];上传用户内容:AmazonS3•AmazonS3–高可用的对象存储–设计持久性99.999999999%–提供HTTP/HTTPS连接点•S3传输方法–从设备上直接上传–在后台传输数据–直接二进制上传,不必在本地先存为文件AmazonS3记录用户行为:AmazonMobileAnalytics•收集,可视化并分析用户的移动应用行为•无缝的扩展到每天处理数十亿个事件•你拥有数据完整的控制和所有权AmazonMobileAnalyticsAWSMobileAnalytics*analytics=[AWSMobileAnalyticsmobileAnalyticsForAppId:@yourAppId”identityPoolId:@cognitoId];逐层考虑一下创建用户信息,上传内容,并记录跟踪行为跟踪位置和用户兴趣点匹配并通知用户应用关注“你”活动关注“你做什么”用户关注“他们&我”123跟踪位置和用户兴趣点2AWSLambda自适应聚焦在商业逻辑,而不是底层架构上免维护Lambda根据事件速率自动调整架构适应你自己的代码“Runyourcodeinthecloudinresponsetoeventsandscalewithoutanyserverstomanage”使用JavaScript,Java或者Python编写代码AWSLambda•无状态的代码Lambda函数•在你的移动应用中直接调用Lambda函数•根据事件触发函数(状态转换)导入其他服务:–在你的对象存储中存入新文件–在你的NoSQL数据库中加入新栏目–在你的通知服务中添加新的信息AmazonLambdaAmazonDynamoDB•管理的NoSQL数据服务–稳定的低延迟性能–无缝的可扩展性–没有存储容量限制–高持久性和可用性–3个设施上复制DynamoDBtableitemsattributes如何收集位置和兴趣信息?后端逻辑数据库移动端“位置跟踪”和“兴趣”微服务AmazonLambdaAmazonAPIGatewayAmazonDynamoDB•/location•/interests•reportLocation()•likeInterest()•createInterest()•listInterest()Microservice•location-table•interest-table概念说明:Geohash•GeoHash是一个将空间划分为网格上桶位置的经纬地理编码系统•可以数据化展示e.g.6093522776912656819将地球分为6个区(A,B,C,D,E,F),例如立方体的6个面。将每个区分成子区,再将子分区划分更多的子分区。图上红点表示的位置为A224。结合DynamoDB!怎么工作的?AmazonDynamoDBGeo库•Java函数库很方便的创建和查询使用GeoHashes存在DynamoDB中的地理空间数据GeoPointpoint=newGeoPoint(47.62,-122.34);//findplaces250mofSeattle’sSpaceNeedleQueryRadiusRequestrequest=newQueryRadiusRequest(point,250);QueryRadiusResultresult=geoDataManager.queryRadius(request);结合Lambda!逐层考虑一下创建用户信息,上传内容,并记录跟踪行为跟踪位置和用户兴趣点匹配并通知用户应用关注“你”活动关注“你做什么”用户关注“他们&我”123匹配并通知用户3DynamoDB数据流Cognito同步触发S3事件通知AWSLambda:事件驱动计算基于兴趣找出大致的匹配/locationRESTAPIProfile(proximitysetting)InteresttableAWSSDKcallreportLocation()InvokefindMatch()DynamoDBStreamsGeoHashtableAWSSDKcallInteresttablelikeInterest()/interestDynamoDB数据流处理:findMatch()exports.handler=function(event,context){//Processalltherecordsinthestreamevent.Records.forEach(function(record){varnewLocation=record.dynamodb.NewImage.geohash.S;if(findProximityMatch(newLocation)){//Foundmatch!}});context.succeed();};我们找到了匹配。现在怎么办?AmazonSNS移动信息推送•AmazonSNS是个完全托管的,跨平台的移动推送中间服务•完全扩展到百万级别设备支持。•允许你创建各种主题(例如.基于地理,兴趣,使用类型等等)。AmazonSNSAppleAPNSGoogleGCMAmazonADMWindowsWNSandMPNSBaiduCPAndroidphonesandtabletsAppleiPhonesandiPadsKindleFiredevicesAndroidphonesandtabletsinChinaiOSWindowsphonedevicesAmazonSNS找到匹配:通知用户!AWSSDKcallfindMatch()DynamoDBStreamsGeoHashtableInteresttableAmazonSNS当我调整了我的属性呢?InterestRadiusCognito同步触发–AWSLambda代码exports.handler=function(event,context){if(event.eventType==='SyncTrigger'){event.datasetRecords.forEach(function(item){if(item.interestRadius.op=='replace'){//Newinterestradiusset-processfindMatch()varparams={FunctionName:'findMatch',InvocationType:'Event',//makesitasyncPayload:'{user:'+item.identityId+'}’};lambda.invoke(params,function(err,data){[..]});}}}context.succeed(event);};逐层考虑一下创建用户信息,上传内容,并记录跟踪行为跟踪位置和用户兴趣点匹配并通知用户应用关注“你”活动关注“你做什么”用户关注“他们&我”123MobileAppMobileSDKAmazonAPIGatewayAWSLambdaAmazonS3AmazonDynamoDBAmazonCognitoAmazonMobileAnalyticsAmazonSNS最终架构AWSDeviceFarm•在部署在AWS云上的真实设备上测试你的应用•完全托管和可扩展的测试平台•提供许多不同类型的智能电话和平板设备•完全内建的测试套件•集成客户的测试框架(例如Appium,Calabash等等)AWSDeviceFarm“AWS有你所需要的全部,但是…它有点太复杂了”1.你需要哪些服务?2.如何连接这些服务?认证服务商的SDKs+=例子:登陆界面&集成代码+SDK应该还有更好的方法…AWSMobileHub(Beta)已经可用!•已经出现在AWSManagementConsole中•网址•服务部署在US-East-1•计划近期增加东京、都柏林•AWSMobileHub是一个免费的服务•只需要为你使用的服务付费(例如:S3)•现在就可以体验…介绍:TheAWSMobileHub(Beta)创建工程并添加功能