コンテンツにスキップ

ミッドからシニアに上がるために深く学ぶべきバックエンドトピック

原文

Please prepare these backend topics deeply if you want to move from mid-level to senior:

  • concurrency control
  • indexes and query plans
  • async workflows
  • idempotent consumers
  • read/write tradeoffs
  • failure handling
  • observability basics

These matter more than one extra framework.

要約

シニアエンジニアに求められるのは「フレームワークをもう一つ知っている」ではなく、並行制御・クエリ計画・非同期・冪等性・読み書きトレードオフ・障害処理・可観測性という本質的なバックエンドの理解

解説

7つのトピックと深掘りポイント

1. 並行制御(Concurrency Control)

  • 楽観的ロック vs 悲観的ロック の使い分け
  • データベースのトランザクション分離レベル(READ COMMITTED, REPEATABLE READ, SERIALIZABLE)
  • SELECT FOR UPDATE の使い方と罠
  • ゴルーチン・チャネルを使った安全な並行処理(Go)

2. インデックスとクエリプラン(Indexes and Query Plans)

  • EXPLAIN ANALYZE でクエリ実行計画を読む
  • B-tree / Hash / GIN / BRIN インデックスの違い
  • 複合インデックスの順序が重要な理由
  • インデックスが使われない場合(関数適用、型不一致、カーディナリティ低下)

3. 非同期ワークフロー(Async Workflows)

  • メッセージキュー(Kafka / SQS / RabbitMQ)のユースケース
  • バックグラウンドジョブの設計(冪等性・リトライ戦略)
  • Event-Driven Architecture の基礎

4. 冪等なコンシューマー(Idempotent Consumers)

  • 同じメッセージが複数回届いても同じ結果になる設計
  • 実現方法:ユニークキー + upsert / 冪等キー + 処理済みチェック
  • At-least-once delivery の世界では必須

5. 読み書きトレードオフ(Read/Write Tradeoffs)

  • 読み取り最適化:レプリカ・キャッシュ・非正規化
  • 書き込み最適化:バッファリング・バッチ・WAL
  • CQRS(コマンドクエリ責務分離)パターン

6. 障害処理(Failure Handling)

  • サーキットブレーカー・リトライ(指数バックオフ)・タイムアウト
  • 部分的な障害への対応(一部のサービスが落ちても全体が止まらない設計)
  • Graceful Shutdown(処理中のリクエストを完了してから停止)

7. 可観測性の基礎(Observability Basics)

  • メトリクス(Metrics):Prometheus + Grafana
  • ログ(Logs):構造化ログ、ログレベル、集約(Loki / CloudWatch)
  • トレース(Traces):Distributed Tracing(OpenTelemetry、Jaeger)
  • SLI / SLO / エラーバジェットの概念

シニアとミッドの違いを一言で

ミッドは「どうやって動かすか」を知っている。シニアは「なぜ壊れるか」と「どう壊れないようにするか」を知っている。

→ 関連: スタッフエンジニアへの道DBチューニング4ステップ10のシステム設計概念

リンク