コンテンツにスキップ

バックエンドエンジニアが習得すべき8領域:シニアへの道

概要

バックエンドエンジニアがシニアレベルに達するために習得すべき8つの技術領域のリスト。「This is where seniority starts.」

詳細

# 領域 具体的なトピック
1 API Design バージョニング、冪等性(Idempotency)
2 SQL インデックス設計、クエリ最適化
3 Caching キャッシュ無効化戦略、Redis
4 Message Queues Kafka、RabbitMQ
5 Rate Limiting バックプレッシャー制御
6 Distributed Tracing オブザーバビリティ
7 Load Balancing リバースプロキシ
8 Consistency レプリケーション、シャーディング

なぜ重要か / 各領域のポイント

1. API Design / Versioning / Idempotency

  • バージョニング: /v1/, /v2/ or ヘッダーベース。破壊的変更を避けながら進化させる
  • 冪等性: PUT/DELETE は元から冪等。POST を冪等にするには Idempotency-Key ヘッダーを使う
    POST /payments
    Idempotency-Key: uuid-xxx
    

2. SQL / Indexing / Query Optimization

  • EXPLAIN ANALYZE でクエリプランを確認
  • 複合インデックスのカラム順(selectivity の高い順)
  • N+1 問題の検出と JOIN/Eager loading での解決

3. Caching / Invalidation / Redis

  • Cache-aside: アプリがキャッシュ管理(最も一般的)
  • Write-through: 書き込みと同時にキャッシュ更新
  • TTL + イベント駆動無効化: データ変更時にキャッシュを即座に削除

4. Message Queues / Kafka / RabbitMQ

  • Kafka: ログベース、パーティション分割、高スループット、リプレイ可能
  • RabbitMQ: タスクキュー向き、ACK/NACK、Dead Letter Queue

5. Rate Limiting / Backpressure

  • Token Bucket / Sliding Window アルゴリズム
  • バックプレッシャー:上流への「遅くしてくれ」シグナルで連鎖崩壊を防ぐ

6. Distributed Tracing / Observability

  • Metrics: Prometheus + Grafana(集計値)
  • Logs: 構造化ログ(JSON)+ 相関ID
  • Traces: OpenTelemetry + Jaeger(リクエストの追跡)

7. Load Balancing / Reverse Proxies

  • Round Robin / Least Connections / IP Hash
  • Nginx/Envoy をリバースプロキシとして配置

8. Consistency / Replication / Sharding

  • Strong vs Eventual Consistency: トレードオフを説明できること
  • Read Replica: 書き込みはマスター、読み取りはレプリカ
  • シャーディング: Consistent Hashing で均等分散