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

Backendはつらいよ - 複雑性をコントロールする技術/Backend_is_Hard_-...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Backendはつらいよ - 複雑性をコントロールする技術/Backend_is_Hard_-_Techniques_for_Controlling_Complexity.pdf

以下のイベントでの登壇資料です

Backendを語る会 in 福岡 #1
https://backend-fk.connpass.com/event/391337

Avatar for hirai.kazushi

hirai.kazushi

May 15, 2026

More Decks by hirai.kazushi

Other Decks in Technology

Transcript

  1. ⼤規模プラットフォームの運⽤ LINEのエコシステムを⽀える主要なバックエンドシステムを担当 LINE STORE スタンプ‧着せかえ等、LINEの デジタルアイテムを販売する公式 オンラインストア。 収益基盤となるプラットフォー ム。 担当プロダクトとシステム規模

    システム規模 数千万規模の⼤量データを扱う、 極めてスケーラブルなアーキテク チャ。 トラフィック 秒間数万リクエストの⾼負荷環境 下で、低遅延かつ⾼可⽤性を 維持。
  2.  Application Java / Kotlin Spring Boot Armeria  Data

    / Cache MySQL / MongoDB Elasticsearch Redis / Kafka  Infrastructure Verda (Private Cloud) Kubernetes / VM Microservices 技術スタック
  3. スケールのつらさ:大量データの罠 Q. 1000万件のバッチ処理 1件の処理に10秒かかる場合、完了までにどのくらいが必要か? 1,000万件 × 10秒 = 約3年 24時間回し続けても終わらない...

    並列度10でも約116⽇、1000は約28時間だが... 並列化だけでは解決しない 並列度を上げれば解決するように⾒えるが:  CPUリソースの限界  外部DB/APIへの負荷増⼤  サーバー増設によるコストの壁
  4. 「1件を速くする」のが正攻法 ボトルネックの徹底追求 10s → 1s → 0.1s → 0.01sへと叩く。 クエリ最適化

    インデックス追加、N+1問題の解消。 通信コスト削減 外部APIをローカル処理やキャッシュに寄せる。 基礎体⼒の向上 1件の速さがスケール戦略の「限界値」を決定する。 「1件の速さ」の積み重ねこそが、 巨⼤なスケールを⽀える唯⼀の道。
  5.  緊急性のレベル分け ERROR: 即対応が必要なもの。オンコールエンジニアが⼀次 対応すべきもの。 WARN: 様⼦⾒。翌営業⽇に確認すべき、潜在的な問題の 兆候。 INFO: ログ保存のみ

     RUNBOOKの整備 アラートに対する⼿順書。背景と対処⼿順を明確にして、開 発者のパニックを防ぎ、誰でも対応可能にする。 アラート通知にRUNBOOKへのリンクを設置すると初動対応 が迅速化。 アラートを形骸化させない 過剰なアラートは「オオカミ少年」状態を招き、重要な通知の軽視や無視に繋がる。
  6.    ⼿順の⼀般化 ⾃動化の推進 運用負荷を手順・自動化・技術で抑え込む 職⼈芸を排し、⼿順書を整備。誰 でも対応可能な組織状態を構築。 ⼈による操作をなくして、ミスのリス クと作業⼯数を最⼩限に。再現性の

    ⾼い安全なプロセスの確⽴。 新技術によるリスク回避 新技術により、作業のリスクを回避また は最⼩化。DBバージョンアップなどを サービス無停⽌‧即時ロールバック可能 に。 e.g. Kafka Connect
  7. 未来は、誰にも予測できない。 「予測」して備えることには限界がある。情勢やビジネス⽅針は突然変わる。 前提は常に崩れ去る。 防御策:いかに後で変えられるかを重視する  疎結合 コンポーネントを独⽴させ、変化へ の柔軟性を確保する。 e.g. イベント駆動アーキテクチャ

     分割 影響範囲を極⼩化し、予期せぬ副作 ⽤を封じ込める。 e.g. マイクロサービス  抽象化 実装の詳細に依存させず、インター フェースで変化を吸収する。 e.g. クリーンアーキテクチャ