Slide 1

Slide 1 text

GCPでRubyを動かしてる話 2021/02/22 Misokatsu.rb #1 @corocn

Slide 2

Slide 2 text

自己紹介 ● ころちゃん ● 岐阜県に住んでいます ● 株式会社キャスター ● bosyu / bosyu Jobsの開発 @corocn

Slide 3

Slide 3 text

今日話すこと ● Google App Engine(GAE)でRails運用していた感想 ● 綺麗なアーキテクチャではないので参考程度に

Slide 4

Slide 4 text

みなさんはRuby製のシステムを どこで動かしてますか?

Slide 5

Slide 5 text

N少ないけど・・・ Herokuを選択肢に含めるべきだったかも・・・

Slide 6

Slide 6 text

話のモチベ ● bosyuとbosyu JobsというサービスをGCPで動かしている ● GCPといえばPythonやGoのイメージが強い(偏見) ● アンケートの通り使ってる人少ない ● 前職ではAWSを使っていて、現職ではじめてGCPを触った ● 2年使った結果案外悪くないとなったので、紹介しようかと

Slide 7

Slide 7 text

選択肢 https://blog.realkinetic.com/serverless-on-gcp-183fd811a706

Slide 8

Slide 8 text

選択肢 https://blog.realkinetic.com/serverless-on-gcp-183fd811a706 EC2 赤字はAWSで対応するサービス EKS Fargate Beanstalk Lambda

Slide 9

Slide 9 text

Rubyの対応状況 ● Compute Engine(GCE) ○ 仮想マシンなのでどのバージョンでも ● Kubernetes Engine(GKE) ○ Dockerベースなのでどのバージョンでも ● Cloud Run ○ Dockerベースなので(ry ○ バックグラウンドプロセスは動かない

Slide 10

Slide 10 text

Rubyの対応状況 ● App Engine(GAE) ○ スタンダード環境(Standard Env, SE) ■ Ruby 2.6, 2.7対応(2020/11/21) ○ フレキシブル環境(Flexsible, Env FE) ■ Dockerベースなのでどのバージョンでも ● Cloud Functions ○ Ruby 2.6, 2.7対応(2021/01/11) ※実はbosyu Jobsリリース時は スタンダードがβ版のまま本番運 用していたが、特に問題なかった

Slide 11

Slide 11 text

GAEの良いところ ● 運用が楽 ○ マネージド、オートスケール ○ デプロイコマンドでさっとデプロイ(内部的にはCloud Build) ○ 細かいトラフィック制御が可能 = BlueGreenデプロイができる ○ Google Workspaceと統合して扱えて楽(※GCP全般) ○ Heroku感 基本的に最初に各種設定しとけば、ほとんど面倒みなくていい。 実際に、2年間でインフラ周りの障害はほとんど発生しなかった。 アプリケーションエンジニア 5人で、合計6環境(アプリ4種、ワーカー2種類)動かしている。

Slide 12

Slide 12 text

bosyuとbosyu Jobsの構成 ● アプリ: Rails ○ APIではない。すごく普通の使い方 ● ワーカー: Sidekiq ○ メールや定期バッチ ○ db:migrate もここで ● わりとよく見る構成

Slide 13

Slide 13 text

bosyu Jobs on GAE ● アプリ3種類(スタンダード環境) ○ モノレポ + 内部で動作切り替え ● ワーカー(フレキシブル環境) ○ 立ち上がりに時間かかるのでフレキシブルやめたい ○ なぜワーカーもスタンダードにしないの? ■ できない

Slide 14

Slide 14 text

SE/FEの違い ← sidekiq動かない ← rails c, rails db:migrateできない ← 遅い(20分以上) ← ステージングも動きっ ぱなしになる ← Ruby 3.x使えない ← 遅い(10分近くかかる) https://cloud.google.com/appengine/docs/the-appengine-environments?hl=ja

Slide 15

Slide 15 text

最近の気持ち1 ● バージョン上げたい ○ Railsは6.1にあげた ○ 3系にあげて型付けてぇ ○ スタンダード環境でRuby 3.x が未対応 ○ Cloud Run使えばいいかもしれない? ■ ZennがCloud Run検討して断念したらしい

Slide 16

Slide 16 text

最近の気持ち2 ● デプロイ速度が気になってきた ○ アプリ5分に対してワーカー20分以上 ○ デプロイが速い = すばやく修正反映できる ○ やるならGKE? ■ 一度移行しようとして断念している ■ 社内ツールやデータ基盤っぽいところからGKEを使っていくとい いかも

Slide 17

Slide 17 text

まとめ ● GAE/SEでRubyが公式サポートされた ● スモールチームならGAEはちょうどいい ● Herokuっぽい

Slide 18

Slide 18 text

時間があれば ● GCPのミドルウェアの話 ● 必要なものは程度揃っている ○ Cloud SQL: MySQL v8に対応 ○ Cloud Memorystore: Redis ちょいお高い ○ Stackdriver 便利 ○ BigQuery 便利 ○ Cloud IAP 便利