Slide 1

Slide 1 text

Google Cloud で シンプルなブログサイトを つくろう Cloud Run ハンズオン 2024.8.24 みなさま、休日の昼間にありがとうございます グルーヴノーツ様、会場ありがとうございます

Slide 2

Slide 2 text

クラメソZennチームで働いている和田といいます クラスメソッドへ入社 2016年2月 AWS EC2、Scala、Backend API サーバーレス(FaaSベース)アプリ開発 2018年7月 AWS Lambda、Node.js、Backend API, React SPA Zennをきっかけに Google Cloud の世界へ 2021年7月 Cloud Run、Next.js、Ruby on Rails、Zenn全般

Slide 3

Slide 3 text

Zenn とは Zennは「知見を共有するエンジニアに対価を」 というコンセプトでつくられた 技術情報共有コミュニティです。

Slide 4

Slide 4 text

3種類の投稿形式で、その時々に合った粒度で知見を残すことができます ひとまず 雑にメモ したい あのテーマ で誰かと 議論したい 最近学んだ あの話を記事 にしよう 労力が かかった分 有料で販売 しよう あの話を まとめて 本にしよう

Slide 5

Slide 5 text

クラスメソッドはAWSがメインですが… Zenn は Google Cloud メインで構築され ています アプリケーションフレームワークとRDBの 組み合わせの開発体験が良く、ビジネスに 集中できる Cloud Run と Cloud SQL でシンプルかつ スケーラブルに実現できる この良さを体験し、持ち帰っていただくの が今日の目的です

Slide 6

Slide 6 text

今日つくるアプリ: Xenn ごくシンプルな記事投稿アプリ 記事の作成と編集、閲覧が可能 簡単のためログイン機能はなし

Slide 7

Slide 7 text

今日つくるアプリ: Xenn Ruby on Rails: APIサーバー Next.js: HTML/JS/CSS サーバー ※Cloud Run 第一世代 Cloud SQL: 記事の情報を保存 xenn IAM xenn IAM Xenn User Next.js Cloud Run Cloud SQL Ruby on Rails Cloud Run Xenn Developer Artifact Registry Cloud Build

Slide 8

Slide 8 text

xenn IAM xenn IAM ハンズオンの流れ Google Cloud の Cloud コンソールへ行 き、ご自身が利用できるプロジェクトで Cloud Shell を開く チュートリアルを進める 前半: リソースのデプロイと確認 後半: アプリケーションの修正 さいごにリソースを削除します Xenn User Next.js Cloud Run Cloud SQL Ruby on Rails Cloud Run Xenn Developer Artifact Registry Cloud Build

Slide 9

Slide 9 text

Cloud Shell を開く Google Cloud の Cloud コンソールへ行き、ご自身が利用できるプロジェクトで Cloud Shell を開く

Slide 10

Slide 10 text

チュートリアルリポジトリをクローンする git clone https://github.com/zenn-dev/google-cloud-workshop-202311-xenn.git cd google-cloud-workshop-202311-xenn teachme tutorial_ja.md ※コンパスのイベントページで↑コピペできます

Slide 11

Slide 11 text

Terraform クラウドプラットフォームのリソース群をソースコードで管理するためのいわゆ る Infrastructure as Code ツールのひとつ Google Cloud のリソース管理にもよく使われる おそらく Cloud Development Manager よりも使われている(感覚です) AWSやAzureにも使えるため、触っておいて損はないと思います Terraformの設定値からGoogle Cloud の API を コールし、リソースを作成する

Slide 12

Slide 12 text

APIの有効化 まっさらなプロジェクトだといくつか追加で有効にする必要あり Terraformによるデプロイのタイミングで「APIを有効にしてください」 出力されたURLに遷移してAPIを有効にすればOK ※何度か繰り返す可能性あります

Slide 13

Slide 13 text

チュートリアルをすすめる 5 / 17 を目指します 質問や詰まった箇所があれば遠慮なくどうぞ! ※ コードは、Cloud Shell へコピーではなくクリップボードへコピーを利用

Slide 14

Slide 14 text

Terraform で作成したリソース Cloud Run のサービスアカウント => Cloud Run のアプリをどのよ うな権限で起動するか指定するの に必要 Cloud SQL インスタンス => ここにデータベースやユー ザーを作っていきます Artifact Registy => Google Cloud管理下の Dockerイメージリポジトリ。デプ ロイで使います xenn IAM xenn IAM Xenn User Next.js Cloud Run Cloud SQL Ruby on Rails Cloud Run Xenn Developer Artifact Registry Cloud Build

Slide 15

Slide 15 text

Terraform と gcloud コマンド 実質両者は同じことができますが、管理したいリソース対象で分けると良いと思 います。 Terraform は 作成したリソースの状態を記録できるため、一度だけ作成するよう なリソース管理に向いています glcoud コマンドは都度オプションを指定するため、ステートレスに何度も実行す るような作業に向いています Zennでは、アプリケーションデプロイ時の作業はgcloudコマンドで行い、それ以 外のアプリケーションを動かすのに必要なリソースはTerraformで管理していま す

Slide 16

Slide 16 text

チュートリアルをすすめる 8 / 17 完了を目指します 質問や詰まった箇所があれば遠慮なくどうぞ!

Slide 17

Slide 17 text

チェックポイント: gcloud run gcloud builds submit: ソース側のDockerfileを使ってイメージをビルドします gcloud run jobs deploy: Cloud Run Jobs をデプロイします => イメージを使って任意のコマンドを実行できる便利なサービスです => ここでは、Railsのイメージを使ってDBマイグレーションを実行します gcloud run deploy: URLを持つ Cloud Run サービスをデプロイします 今回はこれらを個別に実行していますが、Cloud Build でまとめて実行すること も可能です。Zennではそのようにしています。

Slide 18

Slide 18 text

チュートリアルをすすめる 11/17完了を目指します 質問や詰まった箇所があれば遠慮なくどうぞ! 休憩

Slide 19

Slide 19 text

おつかれさまでした Google Cloud Shell を使いました Terraform を使って Cloud SQL、Artifact Registry、Cloud IAM をデプロイし ました gcloud コマンドを使ってアプリケーションをビルドしました Rails コマンドで DBマイグレーションを実行しました Next.js と Rails を Cloud Run へデプロイし、Cloud SQLとつないでブログアプ リを構築しました 修正・再デプロイを体験しました

Slide 20

Slide 20 text

感想戦 アプリケーションフレームワークとRDBの組み合わせはいつの時代も強力 小規模なアプリではありますが、ほとんどすべてのリソースが Google Cloud で 完結できるのは魅力 Webアプリを構築・運用するのに Google Cloud は優れた選択肢といえます ほかにも、Google Analytics、BigQuery、Cloud Logging、Cloud Armor (WAF)、Cloud Load Balancing とWebアプリにおいてほしい機能がサービス として展開されています。うまく組み合わせることでグロースフェーズにも活用 できます

Slide 21

Slide 21 text

おわりに クラウドの選択肢が多様化しています 選び放題なのはありがたいのですが、キャッチアップにも一苦労 Zennの開発・運用をしていて言えることは、デベロッパーが主導できるような体 制には Google Cloud が向いている Google Cloud Japan様やクラスメソッドとデベロッパーとして繋がらせてくださ い。キャッチアップの高速化やマルチクラウドの検討、クラウドの移行やスター トアップなど、さまざまなシーンで情報交換させてください

Slide 22

Slide 22 text

No content