まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

Google App EngineがECSやGKEの代わりになるようなコンテナを動かす環境として使えるのだろうか軽く調べた

きっかけ

ECSやGKEを使ってインフラ設定や運用をやってきた中、数年先はコンテナオーケストレーション層の管理はおそらくやらないでいいようになるだろうと思ってた。

ちょうど同じような考え方をこの前のJapan Container Daysで登壇してる方が話していて共感したんだけど、そのときに、AWSのFargateやAzureのAzure Container Instanceが例にあげられていて、ふむ、分かる。と思ってて、でも登壇者の方がGoogle App Engineはあえて外しますと話していて、気になった。 ブログ見返して見たら、それについては触れられていなかったけどそう言っていたのは覚えてるw

toris.io

「VM + コンテナ」は例えば Kubernetes とそれによって管理された VM のクラスターでコンテナを動かすことを、「VM レスコンテナ」は AWS Fargate や Azure Container Instances、Google App Engine FE(の、コンテナイメージをそのまま動かすやつ) などを指しています.

で、あと、そもそもGAE触ったことないのと、GAE/goみたいな事例もタイムラインとかで眺めたこともあったり、Dockerfileも使えるよみたいなのも見たことあったし、もしかして未来はもうきてるのか?って思ってたけど、登壇者の方が外した理由を知りたくてちょっとGAEまわりを現状のECSやGKEの代替となるかという観点で調べてみた

GAEにはStandard環境とFlexible環境がありcustomのDockerfileが使えるのはFlexible環境

試しにGAEやってみる

GCPプロジェクト作ってみてGAEやろうとしてみたら、まずtutorialで何かしら作らないとうんともすんともいわない。無駄にnode.jsのなんかhelloworldをデプロイさせられる。辛く厳しい道。cloudshellというやつで色々チュートリアルをこなさないといけない。マジかこれ。この時点でなんかもう全然期待していたものと違うのではという気になってきた。

f:id:masato47744:20180502124023p:plain

f:id:masato47744:20180502124702p:plain

ひえっ消すにはプロジェクトを消さないといけないらしい

f:id:masato47744:20180502130132p:plain

インスタンス?普通にsshできてしまうVMが立ち上がるみたい

f:id:masato47744:20180502130200p:plain

制限が厳しそう

app.yamlというGAE固有のものを書かないといけないし、portの強制など色々なんかECSやGKEみたいな自由な環境では全然なかった。 結局VMが立ち上がってるみたいだし。VMを意識したくないのに。

マイクロサービスみたいにサービス間通信をするには?

実際試した訳じゃないけど、色々記事をあさってあたりをつけた感じだと、以下のような感じかなと思った。

app.yamlでserviceを複数定義して、

stackoverflow.com

あとは、こんな感じのservice名.アプリ名.appspot.comというドメインで特別なGCP内のルーティングで速い感じで接続できるみたい。

Contracts, Addressing, and APIs for Microservices  |  App Engine standard environment for Python  |  Google Cloud

http://my-app.appspot.com
http://user-service.my-app.appspot.com

あとStandard環境の話だけど、microserivicesをGAEで実現するわかりやすい資料。要は結構どっぷり、GAE固有の概念や設定でやっていくしかなさそうだ。 Microservices Architecture on Google App Engine  |  App Engine standard environment for Python  |  Google Cloud

こちらの記事が分かりやすかったです、ありがとうございます。

qiita.com

これを見ると、networkの設定するってことは要はVMのインスタンスのネットワーク設定をしてるような雰囲気。コンテナが立ち上がると言っても1VMにつき1コンテナという感じなのかな。

app.yaml によるアプリの構成  |  Java の App Engine フレキシブル環境に関するドキュメント  |  Google Cloud

まとめ

GAE/FEをあえて外すと言った登壇者の意図が分かってきました。ちなみに、この記事はGAEをディスりたい訳じゃなく、ECSやGKEの代わりになるかという観点で調べたものなので、初めからGAEに合わせてアプリケーションを開発するという方向でやっていくという選択肢はとてもよいと思っています。VMレスコンテナみたいな文脈で使いたいから調べたけどなんか違うってだけで、GAEは素晴らしいと思います。 そして、GAEのことをまともに使っていない人間が調べた内容なので的が外れている可能性は非常にあるので、そのときはすみません