我也搭上PokemonGO熱潮 ——BaaS真是應用軟件開發人員的救星

今年,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后,一切的問題都開始有了改善。

來源:CSDN

上一篇: 蘋果和安卓: 那些強大的對手教會我們什么?

下一篇: 一個2年安卓開發者的一些忠告

分享到: 更多
三公大吃小玩法 幸运分分彩计划软件安卓 二四六天天彩资枓免费 网络棋牌通比牛牛 北京pk10技巧公式 澳门押大小骰子有问题吗 百人炸金花怎么玩 黑龙江时时网上购买投注 怎样买足球稳赚不赔 极速彩票网 重庆吋时彩五星个位走势图 七星彩开奖号码走势图 球探比分网下载 重庆时时官网骗局 赌大小单双叫什么软件 打麻将规则及图解