GAE/Java8尝试(第0篇:”关于App Engine”)
请你用中文将下面的句子改写一下,仅提供一个选项:
お題
为了理解 Google App Engine(GAE),试着亲自制作并部署一个应用程序。
首先,总结一下 App Engine 的特点。
动机
我越是阅读GAE的文档,就越觉得“如果是Web应用程序,只要将其部署到GAE上,包括运营方面,应该就足够可以顺利地投入生产运行了吧?”。
虽然我也在学习GKE(k8s),但是如果只用REST而不是gRPC的话,我觉得选择GAE可能在运营成本方面更加轻松。
然而,由于只是稍微做了一些教程,因此实际上是用现成的东西,没有遇到任何障碍,因此不知道实际上自己创建Web应用程序并部署到GAE上进行运营有多么困难(或容易)。
因此,我决定试一试。
假设
スタンダード環境での開発とする。
自動スケーリングタイプを採用する。
关于App Engine
-
- PaaSなので、決まった方式に沿って開発すると、あとの面倒(主にインフラ面)はGCP側で見てくれる。
-
- デフォルトで「[プロジェクトID].appspot.com」のドメインでアクセスできる。(別途調達したドメインを用いることも可能)
- オートスケールが早い(Javaで5秒、Goで40ミリ秒)
結構
+----------------------------------------------------------------------------------+
|[App Engine] |
| |
| +-------------------------------------+ +-------------------------------------+ |
| |[Service-A] | |[Service-B] | |
| | | | | |
| | +---------------------------------+ | | +---------------------------------+ | |
| | |[Version-1] | | | |[Version-1] | | |
| | | | | | | | | |
| | | +-------------+ +-------------+ | | | | +-------------+ +-------------+ | | |
| | | |[Instance-a] | |[Instance-b] | | | | | |[Instance-e] | |[Instance-f] | | | |
| | | | | | | | | | | | | | | | | |
| | | +-------------+ +-------------+ | | | | +-------------+ +-------------+ | | |
| | | | | | | | | |
| | +---------------------------------+ | | +---------------------------------+ | |
| | | | | |
| | +---------------------------------+ | | +---------------------------------+ | |
| | |[Version-2] | | | |[Version-2] | | |
| | | | | | | | | |
| | | +-------------+ +-------------+ | | | | +-------------+ +-------------+ | | |
| | | |[Instance-c] | |[Instance-d] | | | | | |[Instance-g] | |[Instance-h] | | | |
| | | | | | | | | | | | | | | | | |
| | | +-------------+ +-------------+ | | | | +-------------+ +-------------+ | | |
| | | | | | | | | |
| | +---------------------------------+ | | +---------------------------------+ | |
| | | | | |
| +-------------------------------------| +-------------------------------------+ |
| |
+----------------------------------------------------------------------------------+
应用引擎
- 1GCPプロジェクトに1つだけ存在する。
服务
-
- 1 App Engineにつき、プログラミング言語別(Python, Java, Node.js, PHP, Go)に複数のServiceを持てる。
-
- Service間の通信は、RESTによるやりとりや、Datastore、Memcache、タスクキューにより可能。
- オートスケール、負荷分散、インスタンスタイプはService毎に独立して管理される。
版本
-
- 1 Serviceにつき、複数のVersionを同時にデプロイできる。
-
- 各Versionはパーセンテージでリクエストの振り分けができるため、下記が可能。
A/Bテスト
スモークテスト
Blue/Greenデプロイメント
カナリアリリース
デプロイの高速ロールバック
例子
- 1 Versionにつき、複数のInstanceがオートスケールする。
注意事项
-
- 一度作ると、リージョンの変更は不可
-
- 1リクエストは60秒以内に処理する必要がある(タスクキューの場合は10分以内)
- アプリがファイルを書き込めるパスは「/tmp」のみ