GoogleCloudの勉強をはじめてみましたが、やはり本と試験問題集だけでは飽きてきますし、理解にも限界を感じますね。 というわけで、まずは簡単なものから、実際に自分で作ってみて理解を進めてみようと思いました。
今回つくってみたもの
/
にアクセスすると index.html が見える。/api/hello
にアクセスすると私でGoogleアカウントにログインしているときだけ、APIを呼べる
という簡単なWebサービスサンプルのようなものです。
ただ、これだけのものを作るのも、自分でゼロから作ったことがほとんどないので、いろいろ詰まったり、気づいたり、分かったことがありましたので、機能ごとに少しずつ紹介できればと思います。
Cloud Load Balancing
AWSのロードバランサとCloudFrontが身近な人は、初めてGoogleCloudのロードバランサを見ると不思議な感じがすると思います。
- CDNのON/OFFが、ロードバランサのバックエンドサービス単位
- IPアドレスが1個だけど、なんか世界中に分散されているらしい(エニキャストIPっていうらしい?)
- なんとなく、CloudFrontでBehaviourを設定している気持ちになる。
- これまでロードバランサだと思っていたコンセプトのものよりも、なにかずいぶん高性能なんじゃないか?という予感。
いまのところ、わかりやすくて、好きになれそうです。
Cloud CDN
やってみる前の気持ちとしては、AWSのCloudFrontに立ち向かうのと同じくらいの気持ちでいたのですが、やってみたらロードバランサでON/OFFするだけで有効になったようです。
詳細は全然わかっていないですが、知らぬうちにいい感じでコンテンツがネットワークでデリバリーされているって、そういえばそういうことだったんじゃないかなとも思いました。
Cloud Storage
S3と同じように、公開アクセスを可能にするかしないかのところが、何段階にも確認したり設定したりさせる感じで、「よく使われるサービスだけど、みんなうっかり公開しちゃうんだろうな」感がやっぱりあります。
Cloud Run
いわゆるエンジニア体験が良いというのは、こういうことなんだろうかという雰囲気を感じました。
今回は、ローカルでGolangのhello的なソースコードを、go.modとmain.goだけを書いて、
> gcloud run deploy
する方法でやってみたのですが、(たぶんソースコードを配置するための?)バケットや、コンテナイメージを Artifact Registry に登録するところとかも、やってくれていて、すぐにデプロイできました。
モニタリングを見ていると、何もアクセスが無いとコンテナインスタンス数がゼロになりますが、その状態からアクセスしても全然レスポンス早いので不思議です。
Identity-Aware Proxy
組織ポリシーによって、Cloud Storage や Cloud Run を公開アクセスにすることができなかった(allUsesをプリンシパルとして追加することができなかった)のですが、思えば私のやってみた的なものを全世界に公開する必要もないですよね。
というわけで、何かしらの方法で制限してみようと思ったのですが、おもしろそうだったのでこれを使ってみました。(IPアドレスで制限するみたいなことは、これまでもやったことはあったのですが、IPアドレスの追加や削除の運用にあまり楽しかった思い出がなかったことなども思い出され…)
今は、私でGoogleログインしているとアクセスできるようになっています。
社内用のシステムとかなら、Googleグループなどの組織系のものを登録したりすれば、IPで制限してVPN繋がないと社内システムに繋がらない、みたいなのよりも、便利で使いやすいんじゃないかなと思いました。
シングルサインオン的な機能であれば、他にもいろいろな方法はあると思うのですが、Cloudのサービスを直接呼び出す(今回でいうとCloud Runを起動する)ときに、この Identity-Aware を Proxy してくれるというところが、使い勝手が良さそうなんじゃないかなという予感がしています。
詰まりがちだったところ
やはりというかなんというか、コンポーネント同士が繋がらない、というときにどこがいけないのか迷うことが多かったです。
- アクセスしてもCloudRunが返すはずのAPIの値が取れずに403が返ってくる
- IAPに「CloudRun起動元」の権限をつけていなかった。
- ロードバランサのルーティングのパスの設定を間違えていた。
- IAPを有効にしてから、実際に効くようになるまでに少しだけ時間がかかった。
感想
- コンソールのメニューに最初は慣れませんでしたが、実は割りと整理されていて使いやすいような気がしてきました。
- AWSのサービスの理解というか、AWSのサービスのコンセプト的なものも、ちょっと別のサービスを見ることで、わかったことがあったかもしれないです。
- ここに、Cloud Pub/Sub や、Cloud SQL なども足していけば、またもう少しわかってくるのではないかなと思いました。
おわり。