はじめに
運用を開始する前に、システムは 運用準備レビュー を受ける必要があります。この記事では、マイクロサービスとマイクロ フロントエンドの両方に関する包括的なチェックリストを提供します。
1. セキュリティチェックリスト
1.1 アプリケーションのセキュリティ
✅ OWASP Top 10 reviewed:
├── SQL Injection → Parameterized queries
├── XSS → CSP headers, output encoding
├── CSRF → SameSite cookies, CSRF tokens
├── Broken Auth → OAuth2/OIDC, MFA
├── Security Misconfiguration → Hardened defaults
├── Sensitive Data Exposure → Encrypt at rest + transit
├── Broken Access Control → RBAC, resource-level checks
└── Injection → Input validation, allow-lists
1.2 秘密の管理
❌ Secrets in code / environment variables:
DB_PASSWORD=mysecretpassword
✅ External secret management:
├── HashiCorp Vault
├── AWS Secrets Manager
├── Kubernetes External Secrets
└── Sealed Secrets (GitOps-friendly)
1.3 ネットワークセキュリティ
# Kubernetes Network Policy
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: product-service
spec:
podSelector:
matchLabels:
app: product-service
policyTypes: [Ingress, Egress]
ingress:
- from:
- podSelector:
matchLabels:
app: api-gateway
ports:
- port: 8080
2. 信頼性チェックリスト
2.1 ヘルスチェック
// Liveness: is the process alive?
app.get('/health/live', (req, res) => {
res.status(200).json({ status: 'alive' });
});
// Readiness: can it serve traffic?
app.get('/health/ready', async (req, res) => {
const dbOk = await checkDB();
const redisOk = await checkRedis();
if (dbOk && redisOk) {
res.status(200).json({ status: 'ready' });
} else {
res.status(503).json({ status: 'not ready', db: dbOk, redis: redisOk });
}
});
2.2 サーキットブレーカー
Normal: Service A ──► Service B (responding)
Open: Service A ──✕ Service B (down, circuit open)
Half-Open: Service A ──? Service B (testing 1 request)
Closed: Service A ──► Service B (recovered)
Settings:
├── Failure threshold: 5 failures in 30s → OPEN
├── Reset timeout: 30s → try HALF-OPEN
├── Success threshold: 3 successes → CLOSE
└── Fallback: return cached/default data
2.3 正常なシャットダウン
// Handle SIGTERM gracefully
process.on('SIGTERM', async () => {
console.log('SIGTERM received, shutting down...');
// 1. Stop accepting new requests
server.close();
// 2. Wait for in-flight requests (max 30s)
await waitForInflightRequests(30000);
// 3. Close DB connections
await db.close();
// 4. Close message broker connections
await kafka.disconnect();
console.log('Shutdown complete');
process.exit(0);
});
2.4 リソース制限
# K8s resource limits
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
# HPA (auto-scaling)
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
spec:
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
3. 実稼働準備チェックリスト
INFRASTRUCTURE:
☐ Kubernetes cluster with node pools
☐ Auto-scaling (HPA) configured
☐ Resource limits set for all pods
☐ Network policies defined
☐ Ingress/Load balancer configured
☐ SSL/TLS certificates (auto-renew)
SECURITY:
☐ OWASP Top 10 reviewed
☐ Secrets in Vault (not env vars)
☐ RBAC policies configured
☐ Container image scanning
☐ Dependency vulnerability scanning
☐ CSP headers configured
RELIABILITY:
☐ Health checks (liveness + readiness)
☐ Circuit breakers for external calls
☐ Graceful shutdown handlers
☐ Retry policies with backoff
☐ Timeouts configured
☐ PodDisruptionBudget set
OBSERVABILITY:
☐ Structured logging (JSON)
☐ Metrics (RED method)
☐ Distributed tracing
☐ Alerting rules defined
☐ Dashboards created
☐ On-call rotation set
DATA:
☐ Database backups (automated, tested)
☐ Database migration strategy
☐ Data retention policies
☐ GDPR/privacy compliance
☐ Encryption at rest
DEPLOYMENT:
☐ CI/CD pipeline tested
☐ Rollback strategy documented
☐ Canary deployment configured
☐ Feature flags for risky features
☐ Runbook documented
4. 災害復旧
| コンポーネント | RPO | RTO | 戦略 |
|---|---|---|---|
| ポストグレSQL | 1分 | 15分 | ストリーミングレプリカ + WAL アーカイブ |
| レディス | 5分 | 5分 | Redis Sentinel + AOF |
| カフカ | 0 | 5分 | マルチブローカー、レプリケーション要素 3 |
| MFE アセット | 0 | 1分 | マルチリージョン CDN |
| K8sクラスター | 該当なし | 30分 | マルチ AZ、バックアップされた etcd |
概要
- セキュリティ: OWASP、シークレット管理、ネットワーク ポリシー
- 信頼性: ヘルスチェック、サーキットブレーカー、正常なシャットダウン
- 可観測性: ログ、メトリクス、トレース、アラート
- 災害復旧: バックアップはテスト済み、RPO/RTO は定義済み
- チェックリスト: 実稼働展開の前に必ず確認してください