アプリの実装をしつつサーバーについて考えていきます

- 広告 -

サーバーを選定しますよ

以前も一度やりましたが、あれから時が経って状況も変わってきたのでもう一度見直します。
とりあえず、勉強も兼ねて今回はクラウド一択です。
モバイルアプリ向けのサーバーシステムはmBaaS(mobile backend as a Service)とも言います。
クラウドのモバイル向けバックエンドサービスを比較検討して見ることにします。

候補はクラウドサーバーの先駆者[AWS]、Xamarinとの愛称はいいはず[Azure]、Googleもあるよ[GCP]。
今回はこの3つを比較検討していきたいと思います!

機能比較表とか作ってみようと思ったのですが、対応するサービスがよくわかんなかったので、やりたいことに対するハードルで比較することにしました。
そして、アプリのバックエンドとして使うならGCPではなくFirebaseの方が妥当だとわかったので、Firebaseで比較します。

2018.6.1現在

AWS Azure GCP
APIをPython+サーバレスで実装
簡単にDBを実装
アカウント管理ができる(認証)
PUSH通知の実装
アプリ内課金できるか

[APIをPython+サーバレスで実装]
AWS – Lambda
Lambdaを作成するときにpython 2.7と3.6のどちらかを選択する。

Azure – Azure Functions
デフォルトのバージョンは2.7.8だけど3にアップデート可能
*Experimentalサポートと言うところが要注意だけど、今後に期待?

Firebase – Cloud Functions for Firebase
基本的にnode.jsのみ。

[簡単にDBを実装]
AWS – dynamoDB
Azure – Cosmos DB
Firebase – Realtime Database

[アカウント管理ができる]
AWS – Amazon Cognito
Azure – バックエンド サーバー SDK
Firebase – FirebaseAuth

[PUSH通知の実装]
AWS – AWS Mobile SDK
Azure – Azure Notification Hubs
Firebase – Firebase Cloud Messaging

[アプリ内課金できるか]
AWS – サービスのメソッドがあるっぽい

Azure – 自分で実装(サンプルコードあり)
ただしpythonではない。
IAPを検証するAzure関数と言うのがあるらしい。ここだけC#で実装しても問題ないかな。

GCP – 自分で実装?
資料あんまり見当たらない?見つけれませんでした。。。

- 広告 -

初めからAzureに決めてました。(実は出来レースでした)

上の表を見た限りではAWSが最強な気がしますが、アプリをXamarinで作る都合上、Azureの方が相性がいいんじゃないかな?と言うことで、 Azureを使おうかと思います。
では、なんでわざわざ比較検討したの?って話ですが、いざ使い始めて「必要な機能が使えなかった」とか、「別のサービスの方が使いやすかった」とかってなると残念な結果になってしまうからです。
なので、使い始める前に必要な機能が使えるのが、他にもっと良いツールがないかを検討して見ました。

今回の結果を見た感じ、情報の量や機能の充実感だとAWSはダントツ良さげです。Azureはアプリ内課金などの機能は自分で実装する必要がありますが、サンプルコードもあるしネックにはならなさそうです。

そうなると、Xamarinと相性の良いAzureを選ぶのが良さそう。

Zaureを使うとしたらどんな構成になるのでしょう

と思って考えて見たのですが、作ってみないことにはさっぱりわかんないですね。
ということで、実際に試行錯誤しながら作っていこうと思います。

今回はAzureを使うことを前提に機能比較してることもあって、大事なことをやってません。
それは、価格比較。どっちにしろ従量課金なんで正確な料金はわからないですが、なんとなくこんくらいかな〜みたいな感じで算出して見ました。

料金計算ツール

最初の一年はほぼ無料で使えるのでそんなにビビることもないのかもしれませんが。

そもそも、これで全てのリソースなのかも定かではなかったりします。あやふやで申し訳ない。
この辺は実装しながら見つけていこうかなーって感じです。
だれか詳しい人教えて欲しい。。。

- 広告 -