365連休

にわかのandroidとかの開発メモ。

【GCP】無料でAndroidアプリ用サーバを立てるための考察【無料】

追記

GCPを使ったチャットアプリ構築例はこちら

neet-rookie.hatenablog.com

 

 

本文 

 

Androidアプリと連携する無料サーバを立てるための検討をした。

 

古典的に自鯖といえば、国内のレンタルサーバがあるが、

  • 固定費がかかる
  • 無料だが極めて不安定

のいずれかである。

 

そこで、無料枠のあるクラウドサービスのGoogle Cloud Platformを利用することにする。

個人開発から大規模開発まで様々な案件に対応可能な、耐久性、コンピュータリソース、堅牢性、安定性があり、様々なプロダクトがある。

 

無料枠については次のリンクを参照

cloud.google.com

 

構成

サーバとの連携方法は、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(スタンダード環境のみ無料枠あり)

※執筆時時点の無料枠
28 時間分の「F」インスタンス(1 日あたり)
9 時間分の「B」インスタンス(1 日あたり)
下り(外向き)1 GB(1 日あたり)

同系統のサービスに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モード)

※執筆時時点の無料枠
1 GB のストレージ
50,000 回の読み取りオペレーション
20,000 回の書き込みオペレーション
20,000 回の削除オペレーション
(全て1 日あたりの制限)

同系統のサービスにCloud SQLがあるが、こちらは無料枠無し。

Cloud Storageにはファイルしか置けないためデータベース代わりに使うには力不足。逆に言えば、ファイルを置く用途ならCloud Storage一択。

※なお、いずれネイティブFirestoreはDatastoreモードへ完全に移行するらしいので、最初からDatastoreモードを使用したほうが良さげ。

※名前から分かるようにFirebaseと関係がある。FirebaseサイドでFirestoreをDatastoreモードで扱うのか?とか、どうなるかは不明。今後完全にGCPの一員になる?

サーバレスのWebAPI

Google Cloud Functions

※執筆時時点の無料枠
200 万回の呼び出し(1 か月あたり、バックグラウンド呼び出しと HTTP 呼び出しを含む)
400,000 GB 秒のメモリ、200,000 GHz 秒のコンピューティング時間
5 GB の下り(外向き)ネットワーク(1 か月あたり)

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

※執筆時時点の無料枠
5 GB-月の Standard Storage
5,000 回のクラス A オペレーション(1 か月あたり)
50,000 回のクラス B オペレーション(1 か月あたり)
1 GB の北米から全リージョン宛ての下り(外向き)ネットワーク(1 か月あたり、中国とオーストラリアを除く)
無料枠を利用できるのは、us-east1、us-west1、us-central1 のみ

アプリからCloud Storageへ直接接続をすると、中国とオーストラリアから利用した場合に費用が掛かるはず。

暗黙的に各サービスから利用されるらしく作った覚えのないバケットが連動して作成される。

その他関連して使用するクラウドサービス

Google Cloud Build

App EngineやCloud Functionsなどのデプロイ時に、Google Cloud Buildが使用される。

執筆時時点で無料枠は無いが、費用は1円/月 未満になる場合が多い。

 

Google Cloud Repository

ローカルにインストールしたCloud SDKとビルドシステム(MavenやGradle)があれば開発機から直接デプロイすることができるが、
Google Cloud Repositoryを使用すると、Githubプロジェクトをリンクし、デプロイすることができる。

Google Cloud Repository自体でソースファイルを管理することもできる。

※執筆時時点の無料枠
最大 5 ユーザー分のアクセス、50 GB のストレージ、50 GB の下り(外向き)容量の無料枠を含む、さまざまな Git リポジトリの非公開ホスティング

 

 

 

試用期間

90日間の300$分無料トライアル。

クレジットカードの登録が必要だが、
PlayStoreデベロッパ登録など、以前に支払情報をGoogleへ入力しているとそれが初期値として入力されていて、どん引く。

 

300$を使い切るか90日が過ぎると試用期間は終了する。

試用期間を終了するとプロジェクトへアクセスできなくなり、場合によっては削除される。

試用期間から本利用へアップグレードしても、300$の残額は90日間を満了するまで使用可能。

試用期間中に本番サービスを展開するのは規約違反

cloud.google.com

 

 

注意点1

Google Cloup Platformの各種プロダクト間の通信のうち、リージョンをまたぐ外向き通信は課金対象になるため、全てのプロダクトで同じリージョン(Google Cloud Storageに合わせ、us-east1、us-west1、us-central1のいずれか)で統一したほうが良いと思う。

Google Cloud StorageのStorageブラウザで[バケット]-[場所]を確認できる。

 

 

注意点2

GCP試用期間を過ぎると課金登録をしないと継続使用ができない。

完全無料のプロダクト以外では、自動スケールアップか従量課金になるため、こまめに課金ステータスや請求書をチェックしたほうが良い。

以前は課金上限が設定できた、今はむり。

 

 

注意点3

Webサービス(Webサイト)として公開する場合、ドメイン名はプロジェクト名を含んだ非常に長いものになる。

独自ドメインの設定にはGoogle Domainsなどからドメイン購入が必要。

また、独自ドメインに紐づけたSSL証明書も用意しなければならない。