ストーリー
1時間格闘した末、原因は外部決済サービスのレスポンス遅延だった。しかしそれを突き止めるまでに、何十個ものサーバーのログを手動で確認しなければならなかった。
翌週、高橋アーキテクト があなたに声をかけた。
こうして、あなたのオブザーバビリティへの旅が始まります。
現代のシステムはなぜ見えにくいのか
マイクロサービス、コンテナ、サーバーレスなど、現代のシステムは分散化・動的化が進んでいます。
graph LR
subgraph "従来のモノリス"
C1["Client"] --> WS["Web Server"] --> DB1[("DB")]
end
subgraph "現代の分散システム"
C2["Client"] --> GW["API Gateway"]
GW --> Auth["Auth Service"]
Auth --> User["User Service"] --> DB2[("DB")]
GW --> Order["Order Service"] --> Pay["Payment API"]
GW --> Notif["Notification Service"] --> Email["Email/SMS"]
end
| 時代 | アーキテクチャ | 障害特定の難易度 |
|---|---|---|
| 2000年代 | モノリス + 物理サーバー | 低い |
| 2010年代 | SOA + 仮想マシン | 中程度 |
| 2020年代 | マイクロサービス + コンテナ | 高い |
オブザーバビリティとは何か
オブザーバビリティ(Observability)は、制御工学に由来する概念です。
「システムの外部出力から、内部状態を推測できる度合い」
つまり、ログ、メトリクス、トレースなどの「出力」を見ることで、システム内部で何が起きているかを理解できる能力のことです。
// オブザーバビリティが低いコード
async function processOrder(orderId: string) {
const order = await getOrder(orderId);
const result = await chargePayment(order);
await sendNotification(order);
return result;
}
// オブザーバビリティが高いコード
async function processOrder(orderId: string) {
const span = tracer.startSpan('processOrder', { attributes: { orderId } });
logger.info('Processing order started', { orderId });
const order = await getOrder(orderId);
metrics.orderProcessingCount.add(1, { status: 'started' });
const result = await chargePayment(order);
logger.info('Payment charged', { orderId, amount: order.total });
await sendNotification(order);
span.end();
metrics.orderProcessingCount.add(1, { status: 'completed' });
return result;
}
オブザーバビリティがもたらす価値
| 観点 | オブザーバビリティなし | オブザーバビリティあり |
|---|---|---|
| 障害検知 | ユーザーからの報告で気づく | アラートで即座に検知 |
| 原因特定 | 数時間のログ調査 | 数分でトレースを追跡 |
| 影響範囲 | 推測に頼る | ダッシュボードで可視化 |
| パフォーマンス | ユーザーが遅いと感じてから対応 | SLO違反で事前に対応 |
| 改善 | 勘と経験 | データに基づく判断 |
まとめ
| ポイント | 内容 |
|---|---|
| 背景 | 分散システムの複雑化で「見えない」問題が増加 |
| 定義 | 外部出力から内部状態を推測できる度合い |
| 価値 | 障害の早期検知・原因特定・データ駆動の改善 |
| 目標 | システムの脈拍を常に把握できる状態にする |
チェックリスト
- 現代の分散システムが抱える可視化の課題を理解した
- オブザーバビリティの定義を説明できる
- オブザーバビリティがもたらす具体的な価値を把握した
次のステップへ
次は「モニタリング vs オブザーバビリティ」を学びます。従来のモニタリングとオブザーバビリティの違いを明確にしましょう。
推定読了時間: 15分