返回 登录
0

我也搭上PokemonGO热潮 ——BaaS真是应用软件开发人员的救星

【转载】本文作者JerryChan来自宝岛台湾,拥有15年的互联网开发经验

今年,Pokemon Go在全球各地陆续开放,热潮席卷男女老少,当然我的手机也被强势攻占。起初就是个一般玩家,抓宝、收集、打道馆;后来发现宝可梦是有隐藏属性的,可以通过CP(Combat Power)/HP(Hit Points)来计算。当时下载了几套评价还算不错的APP使用,但都必须手动输入数值才能计算,使用上不太方便。由于本身就有涉猎过图像处理的技术,因此玩性一起,决定自己来写一套可自动识别宝可梦图片并计算IV数值的APP「SmartIV」给大众使用,开发环境就是DroiBaaS。

【邂逅BaaS,相见恨晚】
2015年,朋友在一个偶然的聚会提到BaaS(Backend-as-a-Service),这是我第一次听到这个名词,后来回去一查,才发现BaaS早在2012年就在欧美如日中天,在移动互联网这个产业,三年的差距就像电力被发现的前后时代差别一样,对于BaaS只觉得相见恨晚。

不久后,我所在企业因为一些合作关系成为了DroiBaaS的α开发者,我也由此有幸接触到了DroiBaaS,深入了解和使用后,真心感受到何为先进的生产工具。倘若在2012年就接触到如DroiBaaS这样的服务,便可以减少很多硬件成本以及网络架构的相关问题,此外网络连接、数据库存取和推送服务等都有现成且稳定的服务可以使用。若上述的问题都由服务提供商妥善处理维护,我们的团队只需要确保应用程序的UI设计、实际存取的数据内容和相关商业逻辑。这一方面大幅减少了人员配置的成本,另一方面网络的架构和完全性都由专业的BaaS服务团队负责,实际上也提升了我们产品的服务品质,有些东西还是要闪开让专业的来啊!

【DroiBaaS实战分享】
现在进入正题,谈到SmartIV的开发,首先必须要定义应用程序的基础功能:
1、需使用图像识别判读CP/HP数值以及宝可梦的等级
2、通过判读出来的数值计算CP素质以及每个属性组合
3、需提供在线更新识别引擎参数
4、需提供上传图片以增加未来识别引擎辨识能力
5、需记录并统计使用人员的使用习惯

其中除了CP素质的公式以及数据是可以直接从网络上获取以及图像识别判读是外部功能以外,在线更新、上传图片以及统计用户的使用习惯都需要使用云端数据库。为了满足这个需求,尝试了一些常见且自己使用过的服务,如Google Analytics 提供SDK在iOS上使用,Google Firebase也提供BaaS,但其在iOS的api设计使用上非常不方便,所有要上传的Property都需要自己使用put/get去设定。而这些问题在DroiBaaS上都变得简单许多。

DroiBaaS对iOS的支持让开发变得方便许多,不需要使用put/get去设定上传/下载属性,只需跟Android一样直接在Property上方加入DroiExpose就可以将数据上传。如果只是要做上传数据这样简单的动作,甚至只要描述想上传数据的相关属性即可。后续我会针对所使用的DroiBaaS其中三个功能做比较详细的说明。

《图片上传》
在图片上传功能的撰写部分,我直接使用DroiBaaS提供的SDK来完成这个功能。下图是我的上传数据的类别:

图片描述

其中DroiFile是DroiBaaS作为档案存储的类别,接着只需设置上述四个Property,即完成图片上传,下图是上传的代码:

图片描述

可以看到,过程中只用了短短几行代码就完成了上传功能,没有写道任何一行关于网络传输的代码。是不是非常简单方便?

《识别参数更新》
在线更新识别引擎参数的情况,必须是查询到识别引擎参数的版本和建立日期比目前使用的新才需要更新下载。下图是我用于在线更新引擎参数的数据类别

图片描述

至于判断是否有新的识别引擎参数可以下载则是使用下图所示的代码,直接将目前使用的参数版本及日期作为判断条件,去查询出是否有比目前使用的版本和日期更新的资料可下载:

图片描述

在这边一样可以看到,我没有自行撰写任何的网络连接代码就完成了这个功能。查询的条件会经过preprocessor产生出相对应的代码来帮助开发人员撰写应用。

《沙盒模式 Sandbox Mode和生产模式 Production Mode》
第三个想进一步说明的,也是我认为非常重要的功能是DroiBaaS将程序上分为「沙盒模式(Sandbox Mode)」和「生产模式(Production Mod)」,这是DroiBaaS对开发人员一项非常友善的设计。DroiBaaS将一个应用软件区分成测试版本(沙盒模式)以及正式Release版本(生产模式),两者的云端数据库跟云端代码都是分开且隔离的。在沙盒模式中,开发人员可以自由地新增及修改每个Table的Schema(通过程序存取也是如此),当应用软件发布生产模式后,DroiBaaS首先会将沙盒模式最终的Table Schema复制一份到生产模式中(只会复制Schema,并不会复制资料库内的资料),然后将所指定版本的沙盒模式云端代码也部署至生产模式的服务器之中。这个过程可以用下图来表示:

图片描述

区分沙盒模式跟生产模式的好处:
沙盒模式跟生产模式在服务器上是分开且隔离的。当开发新版的软件时,不会因为在沙盒模式的软件代码撰写出问题而导致生产模式的软件也连带出错。

当APP发布生产模式后,开发人员可以持续开发新版软件。等到开发完成后直接将沙盒模式的软件切换至生产模式,这样可以达到持续开发的目的。

沙盒模式的服务器相关记录比较多。由于在开发期间,在沙盒模式的服务器下相关log会比較详细,越详细的log可以在发生错误时更容易debug;而在生产模式为了整体的执行速度及效能的考量,会将log的数量減少。这样的设计是考量到生产模式是直接面对使用者,反应速度及执行效率是最重要的指标。

【结语】
总的来说,SmartIV的开发之所以那么轻松快速(真的只花了一星期就完成),都可以归功于DroiBaaS强大的开发环境,其中的关键在于,虽然我使用了很多云端功能(云端资料库及云端存储),却不需要自己写任何一行有关网络的代码,整个开发过程就像是在本地端撰写程序一样非常方便。再补充一点,DroiBaaS还使用了AES 256等级的加密算法以确保数据传输的安全性。(详见DroiBaaS官网介绍)
现在,全世界每天有上千个应用上架,要想在一片红海中杀出一条血路,最重要的是应用程序的概念想法和核心价值,以及开发速度。对于没有足够资源的个人开发者和创业者来说,我们更希望能专注在应用的核心功能发展,以及使用者体验的提升。有一个完整且方便灵活的后端云开发环境,真的是一大助力。

【我的应用软件开发背景】
2008年开始接触移动应用软件开发,那时还不依赖网络数据,后来几年才转变为数据都储存在云端。到2012年,开发通过网络存取数据库还是使用传统的开发配置,开发团队包括前端工程师、后端工程师和运维人员,除了前端工程师在网络存取数据库有经验之外,后端工程师和运维人员都是第一次接触负责的工作项目。尽管最后将产品推出,由于那时的考虑不周,陆续碰到很多问题,例如:网络连线安全性问题、同时大量连接数问题、硬件架构扩充问题、开发时数据库环境等问题等等。当时仅是网络架构和服务器的门外汉,遇到很多与架构有关的问题都不知道如何解决,导致很多问题都被搁置,或使用更新硬件设备这种强硬派的做法撑过去,直到接触BaaS后,一切的问题都开始有了改善。

最后附上入口,方便大家了解吧,俗话说得好是骡子是马拿出来溜溜
——DroiBaaS 全产业链整合云服务提供商

评论