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. GCPでRubyを動かしてる話
    2021/02/22 Misokatsu.rb #1
    @corocn

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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リリース時は
    スタンダードがβ版のまま本番運
    用していたが、特に問題なかった

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide