#概要
Parseの移行を実際にリリースしているアプリで検証してみようと思います。
今回の検証は「データベースのmLabへの移行」となります。
検証終了後、データベース以外はParseで動き続けます。Parse Serverの移行も後日検証するのですが、既によい投稿があるようですので、私も投稿するかは未定です。。。
##想定移行パターン
想定する移行パターンは、データベースをmLab, Parse ServerをHerokuが担当する移行パターンです。Parseが推奨する移行パターンのうちの1つとなります。
今回の検証対象はデータベースのみの移行で、移行先はmLabとなります。
mLabへ移行するパターンも少なくとも2つの方法があります。
- HerokuからmLabをアドオンして移行
- Herokuを使わずに(Herokuにアカウントがなくても)mLabに移行
今回はHerokuを使わない方法でして、こちらもParseが想定するやり方の1つとなります。
「とにかくデータベースは移行する!」「サーバーの移行先はまだ確定したくない!」場合は、こちらの方法の方がよいかと思います。
-
mLab + Heroku移行パターン
データベース | サーバー | 補足 |
---|---|---|
Mongo DB | Parse Server | mLabは旧Mongo Lab |
また、検証に使う人柱的アプリはnicomeというiPhoneアプリとなります。
Parseの利用が限定的で、移行時に問題が発生してもあまり影響を受けないアプリです。ニコニコ動画のプレーヤー的暇つぶしアプリなのですが、DL数がないに等しい(2016/3/24現在)ので、せめてここで活躍させてあげようかと...
- アプリのParseの利用範囲
Parseの機能 | アプリでの用途 | 補足 |
---|---|---|
ユーザー管理 | ニコニコ動画ユーザーと連動 | 個人開発者はニコニコOAuthシステムを使えないので、ParseのUserを使っている。 |
カスタムオブジェクト | アプリ情報のバックアップ | データベースとして利用 |
#事前作業
- mLabへサインアップ&ログイン
#移行作業: mLabの準備
Qiitaへの投稿は今回が初めてでして、ファイルのアップロードサイズの上限(2M)があるため、画像のアップロードがあまりできません。1度投稿すると上限が大幅に増えるようですので、不足画像の挿入は後日致します。
-
以下のように選択。データベースに名前を付けて、"Create new MongoDB deployment"をクリック
ここでは無料のサンドボックスを選択している。
-
"Add new database user"というポップアップ画面が出てくるので、usernameとpasswordを入力して"Create"ボタンをクリックする。※Make read-onlyはチェックしない。
-
"To connect using a driver via the standard MongoDB URI:"以下の1行をコピーする。尚、コピーした文字列の<dbuser>の部分は先ほど作成したデータベースユーザー名を、<dbpassword>にはそのパスワードを入れて使用することになる。
ここまででmLab側の準備が整いました!
#移行作業:Parseでの移行作業
-
Parseにログインして、ダッシュボードを開いておく。(新しい方のダッシュボード)
-
サイドメニューの"App Settings"をクリックする。もし"General"が選択されていない場合は"General"をクリックする。
-
"Migrate to external database"の、"Migrate"ボタンをクリックして、移行作業を開始する。
-
すると"Migrate app"というタイトルのポップアップウインドウが表示され、データベースへのconnection stringを聞いてくる。
-
ここに、mLabの準備でコピーしておいた文字列をペーストし、<dbuser>と<dbpassword>もデータベースユーザー名とそのパスワードを指定する。
-
準備が出来たら、"Begin the migration"ボタンをクリックする。
-
移行作業が開始されると、"Copy Snapshot", "Sync", "Verify"という3つのステップの状態が表示される。
-
"Sync"が終了(チェックマークが入り、色がグリーンになる)するまで待つ。相応の時間がかかるので、別の事をするか休憩する...
-
"Sync"が終了したら、とりあえず、「何もしない!」
表示されているボタンはまだ押さない!
"Sync"終了時点で既に、移行が終了し、mLabが使われている状態となっている。ただ、Parseのデータベースの方も使用されている状態で、2重に管理されている。 -
アプリケーションをテストし、mLabとの連携がうまくいっていることを確認する。
-
問題なければ、"Finalize"ボタンをクリックする。(キャンセルしたい場合は、"Stop the migration"ボタン)
Finalizeすると、Parse側のデータベースは使用せず、mLabのみ使用するようになり、移行終了!