Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GCPでRubyを動かしている話 / ruby on gcp

GCPでRubyを動かしている話 / ruby on gcp

Misokatsu.rb にお誘い受けたので話してきました。
GAE/SEのRubyがGAになった記念です。

口頭で補足しつつなので、だいぶ雑な資料ですいません。
https://misokatsu-web.connpass.com/event/198867/

Takahiro Tsuchiya

March 11, 2021
Tweet

More Decks by Takahiro Tsuchiya

Other Decks in Programming

Transcript

  1. Rubyの対応状況 • Compute Engine(GCE) ◦ 仮想マシンなのでどのバージョンでも • Kubernetes Engine(GKE) ◦

    Dockerベースなのでどのバージョンでも • Cloud Run ◦ Dockerベースなので(ry ◦ バックグラウンドプロセスは動かない
  2. 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リリース時は スタンダードがβ版のまま本番運 用していたが、特に問題なかった
  3. GAEの良いところ • 運用が楽 ◦ マネージド、オートスケール ◦ デプロイコマンドでさっとデプロイ(内部的にはCloud Build) ◦ 細かいトラフィック制御が可能

    = BlueGreenデプロイができる ◦ Google Workspaceと統合して扱えて楽(※GCP全般) ◦ Heroku感 基本的に最初に各種設定しとけば、ほとんど面倒みなくていい。 実際に、2年間でインフラ周りの障害はほとんど発生しなかった。 アプリケーションエンジニア 5人で、合計6環境(アプリ4種、ワーカー2種類)動かしている。
  4. bosyuとbosyu Jobsの構成 • アプリ: Rails ◦ APIではない。すごく普通の使い方 • ワーカー: Sidekiq

    ◦ メールや定期バッチ ◦ db:migrate もここで • わりとよく見る構成
  5. bosyu Jobs on GAE • アプリ3種類(スタンダード環境) ◦ モノレポ + 内部で動作切り替え

    • ワーカー(フレキシブル環境) ◦ 立ち上がりに時間かかるのでフレキシブルやめたい ◦ なぜワーカーもスタンダードにしないの? ▪ できない
  6. SE/FEの違い ← sidekiq動かない ← rails c, rails db:migrateできない ← 遅い(20分以上)

    ← ステージングも動きっ ぱなしになる ← Ruby 3.x使えない ← 遅い(10分近くかかる) https://cloud.google.com/appengine/docs/the-appengine-environments?hl=ja
  7. 最近の気持ち1 • バージョン上げたい ◦ Railsは6.1にあげた ◦ 3系にあげて型付けてぇ ◦ スタンダード環境でRuby 3.x

    が未対応 ◦ Cloud Run使えばいいかもしれない? ▪ ZennがCloud Run検討して断念したらしい
  8. 最近の気持ち2 • デプロイ速度が気になってきた ◦ アプリ5分に対してワーカー20分以上 ◦ デプロイが速い = すばやく修正反映できる ◦

    やるならGKE? ▪ 一度移行しようとして断念している ▪ 社内ツールやデータ基盤っぽいところからGKEを使っていくとい いかも
  9. 時間があれば • GCPのミドルウェアの話 • 必要なものは程度揃っている ◦ Cloud SQL: MySQL v8に対応

    ◦ Cloud Memorystore: Redis ちょいお高い ◦ Stackdriver 便利 ◦ BigQuery 便利 ◦ Cloud IAP 便利