Azure 歡迎使用 Parse 的開發人員

本文翻譯自 Azure welcomes Parse developers 一文。

如果您曾使用 Parse 服務做為您行動應用程式的後端平台,現在是個絕佳的機會將您的服務移轉至 Azure 應用程式服務上。由於最近 Parse 服務的公告,Parse 官方也提供了一些搬家工具,如果您還在找尋新的落腳處,我們希望您評估一下 Azure 的服務。

簡單的作法

根據 Parse 的移轉手冊的建議,您可以過在 Express 應用程式上掛載 Parse 伺服器 API 將原本在 Parse 上的程式移轉過來,基於這點,Azure 應用程式服務非常適合來放您 Parse 伺服器端的程式,首先,Azure 行動應用程式服務的 Node.js 後端本身就是一個 Express 應用程式,而為了降低移轉的複雜度,Azure 行動應用程式服務團隊也建立了一個能直接移轉的流程,幫助您完成移轉。

在開始之前,您應該已經看過 Parse 移轉手冊的內容,瞭解在新的 Parse 伺服器中支援與不支援的功能,雖然 Azure 行動應用程式服務本身並不做推播通知(Push Notification)的功能,但是這個可以透過 Azure 通知中樞(Notification Hubs)的服務來完成一模一樣的功能。

一旦完成了移轉程序,您可以繼續使用 Parse 用戶端 SDK 來存取原本的資料,不受影響。(當然,您必須更新至最新版本的 SDK 並且指向移轉後新的伺服器)

在開始之前

在開始進行移轉前,您必須先完成下列幾件事:

建立 Azure 帳戶

如果您尚未擁有 Azure 帳戶,您可以從免費試用這裡開始申請。

建立 Mongo DB

Parse 伺服器的一個必要元件就是 MongoDB(Parse 官方也提供了 MongoDB 需求的建議說明),Parse 也提供了將 Parse 上的資料搬到 MongoDB 的移轉工具,如果您是第一次使用 MongoDB,Parse 官方則建議可以從 MongoLab 所提供的服務協助您管理、延展穩健的 MongoDB 服務,而幸運的是,您可以直接從 Azure 市集中直接訂閱 MongoLab 的服務。而不論您是自建還是選用 MongoLab 的服務,您都必須在新的 Parse 伺服器程式中設定對應的連接方式。

或許,您也可以考慮 Azure DocumentDB 服務,它也是一個 NoSQL、文件式資料庫服務可以支撐 Parse 應用程式的運作,在後續的文章中,我們將介紹如何從 MongoDB 移轉到 DocumentDB,並且介紹它與 Parse 應用程式整合的方式。

取得一個 GitHub 帳號

在本文說明的移轉步驟中會用到 GitHub 帳號,您也可以用這個帳號 clone 或 commit 到這份移轉文件的內容。

在應用程式服務中建立一個新後端

第一步,您需要先在 Azure 應用程式服務中建立一個後端平台來運作您的新 Parse 伺服器應用程式,在 Azure 入口網站上,點擊 +新增 > Web + 行動 > Web 應用程式,然後為您的服務設定一個唯一的名稱,然後按下建立。

如此一來您就建立好了新的後端平台來運作新的 Parse 伺服器程式,而您也許希望使用不同的 App Server 方案,因為這關係到使用服務的價格,當然您隨時可以更換方案,想要瞭解方案的詳情,可以參考 Azure App Service plans in-depth overview

一旦完成建立後,您會看到一個新的服務面板。

應用程式服務提供了多種部署程式的方式,接下來我們就要開始部署應用程式了。

複製 Parse 伺服器程式碼存儲庫並且部署至 Azure

為了讓移轉的程序更簡便,Azure 應用程式服務團隊 fork 了一份 Parse 伺服器範例的程式碼,並且讓它相容於 Azure 應用程式服務,所以您只要到 GitHub 網站,將 Azure Parse server sample 存儲庫 fork 一份到您的帳號下。

接下來您會使用這個 fork 作為您部署到 Azure 的程式,回到您在 Azure 入口網站上建立的 Web 應用程式服務面板,打開設定,往下捲並點擊 連續部署 > 選擇來源 > GitHub,然後點擊 授權 > 授權 讓 Azure 入口網站能夠存取您的 GitHub 帳號,授權的過程中會導向 GitHub 頁面完成授權的動作,最後按下確定完成授權。

現在 Azure 入口網站已經連結您的 GitHub 帳號,選擇 parse-server-example 作為專案,然後分支選擇 master 就按下確定按鈕完成設定。

到這裡,程式部署的方式已經設定完成,Parse 伺服器的程式碼將會從自動從 GitHub 上送到 Azure,如果之後發現沒有自動推送,可以在部署的面板上按下同步的按鈕手動部署。

設定後端平台

Parse 伺服器在運作時還需要透過環境變數來設定一些必要資訊,在 Azure 應用程式服務中就是透過應用程式設定的方式來進行設定。這些資訊包括了 MongoDB 的連接資訊、Parse app ID 以及 master key 這些數值,透過應用程式設定來設定這些變數的值有個好處,那就是不會將這些敏感資訊存放在程式碼中,回到 Web 應用程式面板中的設定面板,點擊 應用程式設定,然後往下捲到 應用程式設定 區域,然後建立以下 Key-Value 對應的設定,完成後按下上方的儲存按鈕完成設定。

Key Value

DATABASE_URI

MongoDB 的連接字串

PARSE_APP_ID

Your Parse app Id

PARSE_MASTER_KEY

Your Parse master key

到這裡,您已經能透過 REST client 來存取您新的 Parse 伺服器了,如果您的 Parse 應用程式還需要設定其它常數,像是 Facebook App ID 等,我們也建議您用相同的方式來進行設定。

用 Hello World 來試試看

這個 Parse 伺服器範例提供了一個名為 hello 的「Hello, World」範例函式,您可以使用像是 cURL 這類工具來試試看是否能順利呼叫。(以下範例請將 Parse App ID 以及新的 Parse 伺服器網址更換成您所設定的值)

 $ curl -X POST \
  > -H "X-Parse-Application-Id: dsXH3syuEuuIZvXi1niEtX49LLilneJK5oIBcLM3" \
  > -H "Content-Type: application/json" \
  > -d '{}' \
  > https://parse-on-azure.azurewebsites.net/parse/functions/hello

這個操作對 Parse 開發人員來說應該是相當熟悉的,如果上面的移轉程序都沒有問題的話,您應該會收到像是這樣的回覆訊息:

 {"result":"Hello from Azure."}

現在您已經驗證 Parse 的程式可以在 Azure 上順利運作,所以您可以開始把您的應用程式程式碼加進來了。

加入您的 Parse 程式碼

既然已經設定好了連續部署,接下來您只需要將 Parse 伺服器應用程式的程式碼放進 fork 的 GitHub 存儲庫,就能直接把這些程式碼部署到 Azure 上。

您可以把您 fork 的存儲庫複製到開發機上,然後把您撰寫的程式碼放進去,一旦您把更新後的程式碼推送回 GitHub,也會一併觸發 Azure 上的部署。

不過要注意的是,這樣的作法程式碼在 GitHub 上是完全公開的,如果您想要隱藏它,您可能需要在 GitHub 上建立私有的存儲庫,或是您可以選擇使用其它的部署方式

更新 Parse SDK

新的伺服器架構在用戶端需要使用新的 Parse SDK 來完成串接,您可以參考移轉手冊中的 Using Parse SDKs with Parse Server 來更新用戶端的 Parse SDK。

那推播通知的功能呢?

當您閱讀 Parse 伺服器移轉手冊時,您會發現:

Parse Server does not implement any push notification functionality. We recommend migrating to a different push provider.

別擔心,Azure 提供了高度延展,並且特別為傳送推播通知設計的服務 -- Azure 通知中樞,就如同您在 Parse 中進行推送通知的作法一樣,通知中樞會儲存每一個推播服務,包括:APNS, GCM, WNS, 甚至是 Kindle, Chrome 以及 Baidu 的推送服務,的驗證機制,而通知中樞的 Node.js 函式庫就能輕易地讓你在應用程式中發送推播通知,我們將在後續的文章中詳細介紹如何運用 Azure 通知中樞來發送通知訊息。

結論

當您完成移轉程序,將您的 Parse 伺服器應用程式放上 Azure 後,建議您可以順便看看 Azure 所提供的服務,也許是原本 Parse 服務並沒有的功能,像是應用程式分析、排程工作、或是整合其它第三方服務如 Twillio(發送簡訊)或 SendGrid (發送郵件),Azure 應用程式服務也提供更多內建的身份驗證選項可供使用。

我們希望在 Azure 上運作您的 Parse 伺服器的功能有良好的體驗,並且期待您順利將 Parse 伺服器應用程式放上 Azure 繼續運作您的事業,祝好運~