今日は、日々の学びをアップします。
Google CloudにCloud Runというコンテナをサーバレスで建てられるフルマネージドのサービスがあるのですけど、こちらの方を実際に使ってみました。
WEBアプリ、バックエンドAPI等いろいろできるのですが、今回は いつもGoogle Colab上で動かしている株のスクリーニングプログラムをクラウド上で定期的に自動で動かすようにしてみました。
Google Cloud Runとは?
Google Cloud Runは、Googleがフルマネージドで提供するサーバーレスコンテナ環境です。従来のコンテナ実行基盤と違い、クラスターのプロビジョニングやノードの管理、自動スケーリングなどの運用作業が一切不要になります。開発者はアプリケーションのコード記述とDockerイメージのビルドに専念できるため、生産性が大幅に向上します。
料金もコンテナインスタンスの実行時間に応じた従量課金なので、アプリケーションがアイドル状態の時はコストがかかりません。従ってバッチ処理やタスクスケジューリングなどの用途に最適なサービスだと言えるでしょう。
構築した環境の概要
さて、今回構築したのは定期的に株価のスクリーニングを行い、その結果をGoogleスプレッドシートに書き出すバッチ処理ツールです。利用したGCPサービスは以下の通りです。
- Cloud Run (コンテナ実行環境)
- Cloud Scheduler (バッチ実行のトリガー)
- Cloud Build (CI/CDパイプライン)
- Google Drive API (スプレッドシート出力)
無料枠の対象になるCloud Run のインスタンスタイプが一部のリージョンでしか提供されていないため無料枠を利用する場合は注意が必要です。
私は今回 asia-east1(台湾)リージョンに構築しました。
Dockerfile
FROM python:3.11-slim
COPY ./ /auto-screening
WORKDIR /auto-screening
RUN pip install --no-cache-dir -r requirements.txt
ENTRYPOINT ["python"]
CMD ["main.py"]
やったこと
- Dockerfile書く
- Cloud Build に CI/CDパイプライン の設定を作る
- Cloud Run を立てる
- Cloud Scheduler に定期的に起動する設定を作る
これだけです。 笑
ほぼポチポチでできてしまいました。
設定も難しいところはなく、ほとんど調べたりすることもなかったです。
簡単過ぎて拍子抜けしてしまいました。
気になったところをガチャガチャいじって色々試しても1日でできちゃいました。
CI/CDパイプライン
gitlab-flow 想定としました。
- GitHub の releaseブランチにマージ
- Cloud Buildが自動でトリガー
- Dockerfileに従ってイメージがビルドされる
- (ビルドが成功すると) イメージがArtifact Registryにプッシュされる
- Cloud Runにデプロイされる
無償で高度な機能が利用できる
短時間で簡単にフルマネージドのサーバーレス株スクリーニングツールが構築できました。
これならインフラ構築や運用の手間が全くかからず、素晴らしい開発体験が得られますね。
料金も従量課金なので、バッチの実行中のみの課金になります。私のように個人的な用途で使う場合は、Google Cloud の 無料枠でほぼすべてのサービスが利用できてしまうのです。つまり今回の構成を実現するのにまったくコストがかからなかったというわけです。
まとめ
いかがでしたか? Cloud Runを中心とした今回の構成で、小規模ながらサーバーレスなバッチ処理環境が手軽に実現できました。
Cloud Runは、WEBアプリも構築できるようなので次はそちらを試してみたいと思っています。
コメント