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

Go + SQS + Fargate で速度、品質、低コストを実現する

Go + SQS + Fargate で速度、品質、低コストを実現する

スペースマーケットの予約サービスに必要な性能とコストの最適化という課題を解消すべくGo + SQS + Fargate でシステムをリニューアルしました。
各要素技術に対して課題と効果をご紹介します。

Yosuke Tsuchiya

August 26, 2021
Tweet

Other Decks in Programming

Transcript

  1. 19 処理速度の高速化 • オンライン処理の応答性能 ◦ 平均およそ 500 ms から数十 ms

    に向上 ◦ 性能テストの結果、平常時トランザクションの約5倍まで劣化なし 学習コスト • 各BEエンジニアがキャッチアップしながらの開発・保守が行えている Go + キャッシュ方式を採用した結果
  2. 22 事前計算方式の課題 • 反映されるまでにタイムラグがある ◦ 平均15分 ▪ インスタンス起動時間 ▪ ジョブ間の待機時間

    ▪ 処理対象がない場合でも5分程のインターバルが発生 • 全件同期がしづらい ◦ 現状の作りだと前の処理が終わらないと次の差分が反映されない ▪ 全件同期を行うと処理対象が大量となるため、全件同期中に発生し た新たな変更については反映されるまでにかなり時間がかかってし まう SQSを使い始めた背景
  3. 38 スケールアウト時のコストを抑える Fargate Spot採用にあたっての留意事項 • べき等性が担保された処理 ◦ サーバーが落ちて処理が中断しても問題ないこと ◦ 再実行すればあるべきデータ状態にリカバリできる

    • キャパシティープロバイダー戦略 ◦ 仮に全部のFargate Spotが落ちた場合であってもキャッシュ更新処理が 完全に止まらないように一定割合はFargateを利用
  4. 39 キャパシティープロバイダー戦略 Fargate : Fargate Spot = 1 : 5

    の割合で使用 最初の1台はFargate 2台目-6台目はFargateSpot 7台目はFargate 8-13台目はFargateSpot ...
  5. 43 • Go + キャッシュ方式 ◦ 高速なキャッシュ作成バッチを構築 • SQS ◦

    カレンダー反映のタイムラグを解消 ◦ 高優先、低優先を分けることで全件同期を日次で実行できるようになった • Fargate ◦ マネージドサービスのため管理が容易 ◦ コストの最適化 ▪ Auto Scaling ▪ Fargate Spot • サーバーコストを30%削減 まとめ
  6. 44 Go + SQS + Fargate 方式のバッチ処理の適用範囲を広げていきたい 従来のRails + AWS

    Batch方式のバッチ処理が未だに一部存在 これらには以下のような課題がある • 反映に時間がかかる • インフラコストの最適化の余地がある 今後の展望