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

Railsの限界を超えろ!「家族アルバム みてね」の画像・動画の大規模アップロードを支えるアー...

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Railsの限界を超えろ!「家族アルバム みてね」の画像・動画の大規模アップロードを支えるアーキテクチャの変遷

Avatar for Ojima Hikaru

Ojima Hikaru

July 23, 2025
Tweet

More Decks by Ojima Hikaru

Other Decks in Technology

Transcript

  1. 2 ©MIXI ⾃⼰紹介 ⽣島 光 @ojima_h 2019年から『家族アルバム みてね』のSREチームで 活動しています。 海が好きです。

    ⽇々感謝の気持ちで⽣きています。 3児の⽗です。 ありがとうございます。
  2. 9 ©MIXI メディアアップロードに関する最初期の構成 • Railsサーバーが⼀度メディアファイルを受信 • その後、S3にファイルを書き込み • サムネイル画像の⽣成などを⾮同期に実⾏ 課題

    • 海外から⽇本のRailsサーバーに対して⼤容量 のファイルをアップロードするのは⾮常に不安 定。 海外に進出します!!
  3. 10 ©MIXI クラウドリソースの有効活⽤ • Railsからクライアントにアップロード⽤の⼀時 URLを払い出す • クライアントは、最寄りのエンドポイントを経由 して直接S3にファイルをアップロードする ◦

    https://speakerdeck.com/kohbis/towards-the-next-dec ade-enhancing-global-service-reliability-through-sre • S3へのアップロードが完了すると、S3から Lambdaにイベント通知を⾏う • Lambdaにてサムネイル画像等を⽣成し、完了し たらRailsサーバーに通知 解決策 • AWSのポテンシャルを最⼤限に活⽤する ◦ AWSのエンドポイントは全世界に分散
  4. 11 ©MIXI トレードオフ • S3の無限のスケーラビリティ • 地理的な最適化 海外進出という事業⽅針こそが最重要 開発や運⽤の困難は受け⼊れるという判断をしました •

    アップロード処理がRailsだけでは完結できなく なった • → 開発環境の構築が困難になり、開発の難易度 が上がった • → システム全体の複雑性が増し、運⽤の難易度 も上がった
  5. 14 ©MIXI 再びRailsに統合 • クライアントからS3へのアップロードが完了する と、Lambda関数の代わりに、SQSにイベントを通 知する。 • Shoryuken (SQSワーカー)

    がイベントを検知し、 サムネイル画像の⽣成を⾏う。 • Shoryuken はRailsアプリケーションに統合されて おり、通常の開発‧運⽤フローに乗る。 解決策 • Lambda関数の処理を再びRailsに統合しまし た
  6. 15 ©MIXI トレードオフ Rails統合によるメリット • アップロードにまつわる処理が全てRailsアプリ ケーションに統合され、スムーズに開発できる ようになった。 • スポットインスタンスを始めとする、EC2イン

    スタンスによるコスト最適化が可能となった Kubernetesの導⼊が進⾏中だったこともあり、 スケーラビリティに対する不安は受容することができました。 Rails統合によるデメリット • Lambda関数のスケーラビリティを放棄すると いうこと 技術スタックが統⼀されているメリットを認識しました。
  7. 17 ©MIXI OpsWorksの限界 • その当時インフラのオーケストレーションは OpsWorks を利⽤していました。 課題 • スケールアウトが遅い

    • 運⽤の⾃動化が困難 • スポットインスタンスの利⽤が困難 OpsWorksの限界 https://speakerdeck.com/isaoshimizu/cnbf-202001?slide=17
  8. 20 ©MIXI 未知の技術 Kubernetes に⽴ち向かうために PoC として、みてねの全ての機能を Kubernetes 上に実装して みることにしました。

    この PoC は1年以上に及びました。 https://gihyo.jp/article/2022/11/mitene-02eks この判断が正しかったのか、今もわかりません。 今思えばもっと良い⽅法があったと思います。でもそれは今だ から⾔えること。
  9. 23 ©MIXI トレードオフ Kubernetesのメリット • ⾼速なスケールアウト • 各種オペレーションの⾃動化 • インフラ構成のセルフサービス化による開発速

    度の向上 Kubernetesのデメリット • インフラ管理の⾼度化‧複雑化 • 増え続けるワークロード • アプリ開発者のキャッチアップが困難に みてねの魅⼒の1つである多様なフォトアイテム‧デジタルコンテン ツを、⾼速かつ安定して開発することが可能になりました。 ⼀⽅で、開発チームの認知負荷に対処するための取り組みが必要に なっています。