バックエンドエンジニアが習得すべき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ヘッダーを使う
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 で均等分散