【プロジェクト管理】SRE(Site Reliability Engineering) - j-komatsu/myCheatSheet GitHub Wiki
SRE(Site Reliability Engineering)とは?
初学者向け解説
SRE(Site Reliability Engineering)は、Googleが開発したシステム運用とソフトウェアエンジニアリングの融合手法です。
主な目的は、システムの信頼性(Reliability)を高めながら、運用コストを削減することです。
SREの特徴
特徴 | 説明 |
---|---|
自動化 | 手動作業を減らし、効率的な運用を目指す |
信頼性向上 | 障害を未然に防ぎ、システムの安定稼働を確保 |
エラーバジェット | 許容可能なエラー率を定義し、開発と運用のバランスを取る |
モニタリング | システムの状態を可視化し、問題発生時に迅速に対応 |
SREの一般的なフロー
graph TD;
A[開発] -->|コードのリリース| B[デプロイ]
B -->|システム監視| C[モニタリング]
C -->|問題検出| D[インシデント対応]
D -->|フィードバック| A
例:エラーバジェットの考え方
例:
- 許容される年間ダウンタイム: 43分(99.99%の可用性)
- もし年間ダウンタイムが43分を超えた場合、新機能のリリースは一時停止し、信頼性の向上に注力する。
専門者向け解説
SREの役割とスキルセット
役割 | 詳細 |
---|---|
モニタリングとアラート設計 | システムの状態を常に監視し、適切な閾値でアラートを設定 |
インフラ管理 | IaC(Infrastructure as Code)を活用し、インフラをコードで管理 |
CI/CDの最適化 | 継続的デリバリーとデプロイの自動化を推進 |
キャパシティプランニング | システムの負荷を予測し、適切なリソースを確保 |
ポストモーテム | 障害発生後の分析を行い、再発防止策を策定 |
SREの技術スタック
分野 | 使用技術 |
---|---|
モニタリング | Prometheus, Grafana, Datadog |
CI/CD | Jenkins, GitHub Actions, ArgoCD |
インフラ管理 | Terraform, Kubernetes, Helm |
ロギング | ELK Stack, Loki, Fluentd |
クラウド | AWS, GCP, Azure |
SREの問題対応プロセス
sequenceDiagram
participant Dev as 開発チーム
participant SRE as SREチーム
participant System as システム
System->>SRE: アラート発生
SRE->>Dev: インシデント報告
Dev->>SRE: 初期診断と対応策検討
SRE->>System: 応急処置適用
System->>SRE: 状態確認
SRE->>Dev: ポストモーテム作成
Dev->>SRE: 改善策実装
例:Kubernetes環境でのAuto Healing
入力:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app:v1
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 3
periodSeconds: 5
出力:
- Kubernetesが
/health
チェックを定期的に行い、異常を検出したらPodを再起動。 - システムの可用性向上。
このように、SREはシステムの信頼性向上のための様々な手法を提供し、自動化や可観測性を活用して運用の効率化を図ります。