追記
GCPを使ったチャットアプリ構築例はこちら
本文
Androidアプリと連携する無料サーバを立てるための検討をした。
- 固定費がかかる
- 無料だが極めて不安定
のいずれかである。
そこで、無料枠のあるクラウドサービスのGoogle Cloud Platformを利用することにする。
個人開発から大規模開発まで様々な案件に対応可能な、耐久性、コンピュータリソース、堅牢性、安定性があり、様々なプロダクトがある。
無料枠については次のリンクを参照
構成
サーバとの連携方法は、Cloud APIを利用した各種クラウドサービスへの直接接続と、HTTP(S)接続によるWeb APIの2種類が思いつく。
Web APIの方が接続手続き(HTTP(S))が分かりやすく、またWebサービスの同時提供も可能になることから、Web APIを前提とした構成を考える。
※マルチプレイのゲームなど遅延を最小にしたい場合、アプリからクラウドサービスへ直接接続するしかない。さらに、通信ラグの観点から物理的に国内にサーバが必要になるため完全無料のサーバ構築は難しくなる。
フロントエンド |
Android アプリ WebAPIによりサーバと連携する。 Play Storeへのデベロッパー登録に1度だけ25$ ※執筆時時点 |
Webサーバ機能 |
Google Cloud App Engine(スタンダード環境のみ無料枠あり)
同系統のサービスにGoogle Compute Engineがあるが、こちらはLinux サーバ構築からしないといけない。また、中国、オーストラリアへの通信で料金が発生する。 静的ファイルは別サーバへキャッシュされ課金除外にできる。 なお、サーバへのファイル書き込みは原則できない。つまり別途データ保存先が必須。 Python 2.7/3 | Java 8/11 | PHP 5/7 | Ruby | Go 1.11 /1.12+ | Node.js |
データベース |
Google Cloud Firestore(Datastoreモード)
同系統のサービスにCloud SQLがあるが、こちらは無料枠無し。 Cloud Storageにはファイルしか置けないためデータベース代わりに使うには力不足。逆に言えば、ファイルを置く用途ならCloud Storage一択。 ※なお、いずれネイティブFirestoreはDatastoreモードへ完全に移行するらしいので、最初からDatastoreモードを使用したほうが良さげ。 ※名前から分かるようにFirebaseと関係がある。FirebaseサイドでFirestoreをDatastoreモードで扱うのか?とか、どうなるかは不明。今後完全にGCPの一員になる? |
サーバレスのWebAPI |
Google Cloud Functions
GCFからColud Storageへ接続できるため、App Engineを使わない選択肢もある。 Node.js 10 /12 /14 | Python 3.7 /3.8 /3.9 | Go 1.13 | Java 11 | .NET Core 3.1 | Ruby 2.6 /2.7 |
全てのクラウドサービスのストレージ |
Google Cloud Storage
アプリからCloud Storageへ直接接続をすると、中国とオーストラリアから利用した場合に費用が掛かるはず。 暗黙的に各サービスから利用されるらしく作った覚えのないバケットが連動して作成される。 |
その他関連して使用するクラウドサービス |
Google Cloud Build App EngineやCloud Functionsなどのデプロイ時に、Google Cloud Buildが使用される。 執筆時時点で無料枠は無いが、費用は1円/月 未満になる場合が多い。
Google Cloud Repository ローカルにインストールしたCloud SDKとビルドシステム(MavenやGradle)があれば開発機から直接デプロイすることができるが、 Google Cloud Repository自体でソースファイルを管理することもできる。
|
試用期間
90日間の300$分無料トライアル。
クレジットカードの登録が必要だが、
PlayStoreデベロッパ登録など、以前に支払情報をGoogleへ入力しているとそれが初期値として入力されていて、どん引く。
300$を使い切るか90日が過ぎると試用期間は終了する。
試用期間を終了するとプロジェクトへアクセスできなくなり、場合によっては削除される。
試用期間から本利用へアップグレードしても、300$の残額は90日間を満了するまで使用可能。
試用期間中に本番サービスを展開するのは規約違反。
注意点1
Google Cloup Platformの各種プロダクト間の通信のうち、リージョンをまたぐ外向き通信は課金対象になるため、全てのプロダクトで同じリージョン(Google Cloud Storageに合わせ、us-east1、us-west1、us-central1のいずれか)で統一したほうが良いと思う。
Google Cloud StorageのStorageブラウザで[バケット]-[場所]を確認できる。
注意点2
GCP試用期間を過ぎると課金登録をしないと継続使用ができない。
完全無料のプロダクト以外では、自動スケールアップか従量課金になるため、こまめに課金ステータスや請求書をチェックしたほうが良い。
以前は課金上限が設定できた、今はむり。
注意点3
Webサービス(Webサイト)として公開する場合、ドメイン名はプロジェクト名を含んだ非常に長いものになる。