Google App Engineについて知りたい
はじめまして。インフラ初心者のPapillon6814です。
今まではGCE
とDocker
なら多少触ったり使ったりしたことがある程度です。
しかしこれから開発でApp Engineを使うので、知識を得ておかなければと思った次第であります。
しかし、GAEのドキュメントが難しくてなかなかスムーズに読み進んでいけません。
なので、自分の理解を文字に起こしながら読み進めていきます。
まだ知識がとても浅いので、とりあえず今回は環境について調べていきます。
Google App Engineとは
この概要の文章を読んでも、初心者の僕にはまったくわかりません。
さらに選択の言語にElixirがありません!(Elixirでやりたい)
しかし止まってしまうと進まないので、とりあえずApp Engine
がどういう感じかを掴みたいので進めていきます。
スタンダード環境とフレキシブル環境
GAEにはスタンダード環境とフレキシブル環境の2つがあるみたいです。
スタンダード環境
スタンダード環境は、「指定した言語のアプリケーションをGAEが管理するセキュリティ保護された環境内(サンドボックス内)で実行する環境」らしいです。参考
このスタンダード環境は、デベロッパが開発に集中できる(インフラの手間が少ない)ことが特徴の1つのようです。
スタンダード環境ではリクエストを複数のサーバーに分散し、
通信の量に合わせてサーバーの強さを変更してくれるみたいです。
そのため、アプリケーションを安全性と信頼性の高い環境で実行できます。
スタンダード環境で使えるのは、
- Python
- Java
- Node.js
- PHP
- Ruby
- Go
の6つの言語に限定されているようです。
次は、フレキシブル環境についてです。
フレキシブル環境
まず、フレキシブル環境がスタンダード環境と違うところは、
- スタンダード環境はGAEのサンドボックス内コンテナで実行される。
- フレキシブル環境はGCEの仮想マシン上でコンテナが実行される。
という部分が挙げられます。
こちらはGCEが使われており、Dockerfileで自由に環境を構築できるのでスタンダード環境よりもカスタマイズできる幅が広いらしいです。
サポートされている機能も多く、CDNやらSQLやらがサポートされているようです。
さらに、重要なOSの更新は自動で適用してくれたり、AppEngineのインスタンスに対するヘルスチェックを行ってくれたりと様々な特徴があります。
フレキシブル環境でサポートされているのは、
- Go
- Java 8
- PHP 5 / 7
- Python 2.7 / 3.6
- .NET
- Node.js
- Ruby
- カスタム
のランタイムのようです。
ランタイムというのは、コンピュータに実行されるプログラム群のことを指します。
しかしスタンダード環境と違い、フレキシブル環境では無料運用ができないみたいです。
どっちを選ぶ?
スタンダード環境は
- スタンダード環境でサポートされているプログラミング言語とバージョンで記述されている。
- 低コストでの運用を目的とする。
- 通信の急激な増加があったりして、即時のスケーリングを必要とする。
フレキシブル環境は
- フレキシブル環境でサポートされているプログラミング言語で記述されている。
- サポートされていないプログラミング言語で書かれたものをDockerコンテナで実行する。
- Compute Engineネットワークにあるリソースにアクセスする。
といったときに利用されるようです。
ざっくりわかったのでまとめ
- スタンダード環境は、指定されたランタイムなら簡単に迅速に整備ができる。
- フレキシブル環境は、カスタムで色々なことができる分スタンダードよりもやることが重い
という感じでした。
まだまだわからないことがとても多いので、少しずつ詳しくなっていけたらなと思います。
参考リンク
https://cloud.google.com/appengine/docs?hl=ja
https://www.serversus.work/topics/5jbu7y90jk81kcdqfzf0/
https://cloud.google.com/appengine/docs/the-appengine-environments?hl=ja