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/

6b7ca499772f1ea867f6133778c77bbe?s=128

Takahiro Tsuchiya

March 11, 2021
Tweet

Transcript

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

  2. 自己紹介 • ころちゃん • 岐阜県に住んでいます • 株式会社キャスター • bosyu /

    bosyu Jobsの開発 @corocn
  3. 今日話すこと • Google App Engine(GAE)でRails運用していた感想 • 綺麗なアーキテクチャではないので参考程度に

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

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

  6. 話のモチベ • bosyuとbosyu JobsというサービスをGCPで動かしている • GCPといえばPythonやGoのイメージが強い(偏見) • アンケートの通り使ってる人少ない • 前職ではAWSを使っていて、現職ではじめてGCPを触った

    • 2年使った結果案外悪くないとなったので、紹介しようかと
  7. 選択肢 https://blog.realkinetic.com/serverless-on-gcp-183fd811a706

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

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

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

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

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

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

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

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

    やるならGKE? ▪ 一度移行しようとして断念している ▪ 社内ツールやデータ基盤っぽいところからGKEを使っていくとい いかも
  17. まとめ • GAE/SEでRubyが公式サポートされた • スモールチームならGAEはちょうどいい • Herokuっぽい

  18. 時間があれば • GCPのミドルウェアの話 • 必要なものは程度揃っている ◦ Cloud SQL: MySQL v8に対応

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