| name | devops |
| description | DevOps patterns: containerization, CI/CD, deployment strategies, monitoring. Use when containerizing apps, setting up pipelines, or deploying services. |
| allowed-tools | Read, Write, Edit, Bash, Grep, Glob |
DevOps ๆจกๅผ
ๆฌๆ่ฝๆไพ DevOps ๅฎ่ทต็ๆไฝณๅฎ่ทตๅๆจกๅผ๏ผๆฏๆๅคๅนณๅฐๆ้ๅ ่ฝฝใ
่งฆๅๆกไปถ
- ๅฎนๅจๅๅบ็จ๏ผDocker๏ผ
- ้
็ฝฎ CI/CD ๆตๆฐด็บฟ
- ้จ็ฝฒๆๅกๅฐไบๅนณๅฐ
- ่ฎพ็ฝฎ็ๆงๅๅ่ญฆ
- ๅบ็ก่ฎพๆฝๅณไปฃ็
ๅนณๅฐไธๅฑๆจกๅผ
ๆ นๆฎ้กน็ฎ้ๆฑ๏ผๅ ่ฝฝๅฏนๅบ็ๅนณๅฐไธๅฑๆไปถ๏ผ
| ๅนณๅฐ | ๅ ่ฝฝๆไปถ | ๅ
ๅฎน |
|---|
| Docker | docker.md | ๅฎนๅจๅใComposeใ้ๅไผๅ |
| CI/CD | ci-cd.md | GitHub ActionsใGitLab CI |
ๅ ่ฝฝๆนๅผ: ๆฃๆต้กน็ฎไธญ็ Dockerfile/.github/workflows/k8s/ ็ญๆไปถ็กฎๅฎ้ๆฑใ
้็จ DevOps ๅๅ
12-Factor App ๅๅ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 12-Factor App ๆ ธๅฟๅๅ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 1. Codebase ไธไธชไปฃ็ ๅบ๏ผๅคไธช้จ็ฝฒ โ
โ 2. Dependencies ๆพๅผๅฃฐๆไพ่ต โ
โ 3. Config ้
็ฝฎๅญๅจๅจ็ฏๅขๅ้ไธญ โ
โ 4. Backing Services ๅฐๅ็ซฏๆๅก่งไธบ้ๅ ่ตๆบ โ
โ 5. Build/Release/Run ไธฅๆ ผๅ็ฆปๆๅปบใๅๅธใ่ฟ่ก โ
โ 6. Processes ไปฅๆ ็ถๆ่ฟ็จ่ฟ่กๅบ็จ โ
โ 7. Port Binding ้่ฟ็ซฏๅฃ็ปๅฎๅฏผๅบๆๅก โ
โ 8. Concurrency ้่ฟ่ฟ็จๆจกๅๆฉๅฑ โ
โ 9. Disposability ๅฟซ้ๅฏๅจๅไผ้
็ปๆญข โ
โ 10. Dev/Prod Parity ไฟๆๅผๅใ้ขๅใ็ไบง็ฏๅขๅฐฝ้็ธไผผ โ
โ 11. Logs ๅฐๆฅๅฟ่งไธบไบไปถๆต โ
โ 12. Admin Processes ๅฐ็ฎก็ไปปๅกไฝไธบไธๆฌกๆง่ฟ็จ่ฟ่ก โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
็ฏๅข็ฎก็
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็ฏๅขๆต่ฝฌ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Development โ Staging โ Production โ
โ โ โ โ โ
โ ๆฌๅฐๅผๅ ้ขๅ้ช่ฏ ็บฟไธ็ฏๅข โ
โ .env.local .env.staging .env.production โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
็ฏๅขๅ้็ฎก็:
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
REDIS_URL=redis://localhost:6379
API_KEY=your-api-key-here
DATABASE_URL=postgresql://dev:dev@localhost:5432/myapp_dev
้จ็ฝฒ็ญ็ฅ
| ็ญ็ฅ | ็น็น | ้็จๅบๆฏ |
|---|
| ่็ปฟ้จ็ฝฒ | ๅ็ฏๅขๅๆข๏ผ้ถๅๆบ๏ผๅๆปๅฟซ | ๅ
ณ้ฎไธๅก๏ผ้ถๅๆบ่ฆๆฑ |
| ๆปๅจ้จ็ฝฒ | ้ๅฎไพๆฟๆข๏ผmaxSurge/maxUnavailable ๆงๅถ | ๆ ๅ K8s ้จ็ฝฒ |
| ้ไธ้ | 5-10% ๆต้่ฏ้ช๏ผๆธ่ฟๅข้๏ผ็ๆง้่ฏฏ็ๅๅ
จ้ | ้ซ้ฃ้ฉๅ่ฝๅๅธ |
่ฏฆ็ป้
็ฝฎๅๆต็จๅพ่ง docker.md ๅๅไบๅนณๅฐๆๆกฃใ
็ๆงไธๅฏ่งๆตๆง
ไธๅคงๆฏๆฑ
| ๆฏๆฑ | ็จ้ | ๅทฅๅ
ท |
|---|
| Metrics | ่ๅ็ๆฐๅผๆฐๆฎ | Prometheus, Datadog |
| Logs | ็ฆปๆฃ็ไบไปถ่ฎฐๅฝ | ELK, Loki |
| Traces | ่ฏทๆฑ็ๅๅธๅผ่ฟฝ่ธช | Jaeger, Zipkin |
ๅ
ณ้ฎๆๆ (Golden Signals)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅไธช้ป้ไฟกๅท โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Latency ๅๅบๆถ้ด - p50, p95, p99 โ
โ Traffic ๆต้ - QPS, ่ฏทๆฑๆฐ/็ง โ
โ Errors ้่ฏฏ็ - 5xx ๆฏไพ, ๅคฑ่ดฅ่ฏทๆฑ โ
โ Saturation ้ฅฑๅๅบฆ - CPU, ๅ
ๅญ, ็ฃ็ไฝฟ็จ็ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๅ่ญฆ่งๅ็คบไพ
groups:
- name: application
rules:
- alert: HighErrorRate
expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.05
for: 5m
labels:
severity: critical
annotations:
summary: "้ซ้่ฏฏ็: {{ $value | humanizePercentage }}"
- alert: HighLatency
expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 1
for: 5m
labels:
severity: warning
annotations:
summary: "P95 ๅปถ่ฟ่ถ
่ฟ 1s"
ๅบ็ก่ฎพๆฝๅณไปฃ็ (IaC)
| ๅทฅๅ
ท | ็จ้ | ๅ
ณ้ฎๅๅ |
|---|
| Terraform | ๅบ็ก่ฎพๆฝ็ผๆ | ๅฃฐๆๅผใๆจกๅๅใ็ฏๅข้็ฆป |
| Ansible | ้
็ฝฎ็ฎก็ | ๅน็ญๆงใPlaybook ๅฏๅค็จ |
| Scripts | ้จ็ฝฒ/ๅๆป | deploy.sh + rollback.sh ๆๅฏน |
็ฎๅฝ็ปๆๅ Terraform ็คบไพ่ฏฆ่ง ci-cd.mdใ
ๅฎๅ
จๆไฝณๅฎ่ทต
้ๅๅฎๅ
จ
# โ
ไฝฟ็จ็นๅฎ็ๆฌ๏ผ้ latest
FROM node:20-alpine
# โ
ไปฅ้ root ็จๆท่ฟ่ก
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
# โ
ๆซๆๆผๆด
# docker scan myimage:tag
ๅฏ้ฅ็ฎก็
| ๆนๆก | ้็จๅบๆฏ | ๅทฅๅ
ท |
|---|
| ็ฏๅขๅ้ | ๅผๅ/็ฎๅ้จ็ฝฒ | .env ๆไปถ |
| ๅฏ้ฅ็ฎก็ๆๅก | ็ไบง็ฏๅข | AWS Secrets Manager, Vault |
| K8s Secrets | Kubernetes | kubectl create secret |
kubectl create secret generic app-secrets \
--from-literal=db-password=mysecretpassword \
--from-literal=api-key=myapikey
็ฝ็ปๅฎๅ
จ
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: api-network-policy
spec:
podSelector:
matchLabels:
app: api
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- port: 8080
ๆฅๅฟ็ฎก็
็ปๆๅๆฅๅฟ
{
"timestamp": "2025-01-23T10:00:00Z",
"level": "info",
"service": "user-service",
"traceId": "abc123",
"message": "็จๆท็ปๅฝๆๅ",
"userId": "user_456",
"duration": 45,
"environment": "production"
}
ๆฅๅฟ็บงๅซๆๅ
| ็บงๅซ | ็จ้ | ็ไบง็ฏๅข |
|---|
| DEBUG | ่ฏฆ็ป่ฐ่ฏไฟกๆฏ | ๅ
ณ้ญ |
| INFO | ๆญฃๅธธๆไฝไบไปถ | ๅผๅฏ |
| WARN | ๆฝๅจ้ฎ้ข | ๅผๅฏ |
| ERROR | ้่ฏฏไฝๅฏๆขๅค | ๅผๅฏ |
| FATAL | ่ดๅฝ้่ฏฏ | ๅผๅฏ |
ๅนณๅฐไธๅฑๅ
ๅฎน
่ฏฆ็ป็ๅนณๅฐไธๅฑๅฎ็ฐ่ฏทๅ่๏ผ
- Docker: docker.md - ๅฎนๅจๅใComposeใ้ๅไผๅ
- CI/CD: ci-cd.md - GitHub ActionsใGitLab CI
๐ก Kubernetes ๅบ็กๆฆๅฟตๅทฒๅ
ๅซๅจๆฌๆไปถไธญ๏ผ้จ็ฝฒ็ญ็ฅใ็ฝ็ป็ญ็ฅ็ญ๏ผ๏ผๅฆ้ๆทฑๅ
ฅๅญฆไน ่ฏทๅ่ๅฎๆนๆๆกฃใ
ๆไฝณๅฎ่ทต
- ้
็ฝฎๅค้จๅ - ไธๅจไปฃ็ ไธญ็กฌ็ผ็ ้
็ฝฎ
- ๆ ็ถๆ่ฎพ่ฎก - ๅบ็จๅฎไพๅฏ้ๆถ้ๆฏ้ๅปบ
- ๅฅๅบทๆฃๆฅ - ้
็ฝฎ liveness ๅ readiness ๆข้
- ไผ้
็ปๆญข - ๅค็ SIGTERM ไฟกๅท๏ผๅฎๆ่ฟ่กไธญ็่ฏทๆฑ
- ๆฅๅฟๆ ๅๅ - ็ปๆๅๆฅๅฟ๏ผ็ปไธๆ ผๅผ
- ็ๆงๅ่ญฆ - ๅ
ณ้ฎๆๆ ็ๆง๏ผๅๆถๅ่ญฆ
- ๅๆป่ฝๅ - ไฟ็ๅคไธช็ๆฌ๏ผๆฏๆๅฟซ้ๅๆป
- ๅฎๅ
จๆซๆ - ้ๅๆผๆดๆซๆ๏ผไพ่ตๆฃๆฅ
- ่ตๆบ้ๅถ - ่ฎพ็ฝฎ CPU/ๅ
ๅญ้ๅถ๏ผ้ฒๆญข่ตๆบ่ๅฐฝ
- ๆๆกฃๅฎๅ - ่ฎฐๅฝ้จ็ฝฒๆต็จๅๆ
้ๅค็
Maintenance
- Sources: 12-Factor App, CNCF, ๅไบๅนณๅฐๆๆกฃ
- Last updated: 2025-01-23
- Pattern: ้็จๅๅ + ๆ้ๅ ่ฝฝๅนณๅฐไธๅฑ
่ฎฐไฝ: DevOps ็็ฎๆ ๆฏ่ชๅจๅไธๅๅฏ้ๅค็ๆไฝโโๆๅจๆญฅ้ชค่ถๅฐ๏ผๅบ้ๆฆ็่ถไฝใ