Skip to content
Back to skills

Platform Deployment

ASecurity

Provides deployment patterns for modern applications: cloud platforms, Docker, Kubernetes, and CI/CD. 자연어 트리거: '배포 파이프라인 설정해줘', 'Vercel 배포해줘', 'Dockerfile 작성해줘', '쿠버네티스 배포 구성'.

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 2, 2026
ai-agentsgonextjsnodedockerkubernetesawstestinggitdatabasefrontend

Works with

  • cursor
  • cli

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add Yoodaddy0311/artibot --skill platform-deployment --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Platform Deployment?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Platform Deployment
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/yoodaddy0311-platform-deployment/badge)](https://www.skillsdirectory.com/skills/yoodaddy0311-platform-deployment)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
context: fork
name: platform-deployment
description: "Provides deployment patterns for modern applications: cloud platforms, Docker, Kubernetes, and CI/CD. 자연어 트리거: '배포 파이프라인 설정해줘', 'Vercel 배포해줘', 'Dockerfile 작성해줘', '쿠버네티스 배포 구성'."
lang: [en]
level: 2
triggers: ["deploy", "deployment", "Vercel", "Railway", "Docker", "Kubernetes", "CI/CD", "blue-green", "zero-downtime"]
agents: ["devops-engineer", "backend-developer"]
tokens: "~4K"
category: "platform"
platforms: [claude-code, gemini-cli, codex-cli, cursor]
source_hash: 48c533cc
whenNotToUse: "Local development environment setup, manual one-off deploys, or hobby projects without a repeatable pipeline; also not applicable when the target platform is not covered (e.g., bare-metal, on-premise)."
---

# Deployment Patterns

## Contents
- [When This Skill Applies](#when-this-skill-applies)
- [Core Guidance](#core-guidance)
- [Anti-Patterns](#anti-patterns)
- [Quick Reference](#quick-reference)

## When This Skill Applies
- Setting up deployment pipelines for new projects
- Configuring cloud platform deployments (Vercel, Railway, Fly.io)
- Containerizing applications with Docker
- Orchestrating containers with Kubernetes
- Implementing CI/CD workflows (GitHub Actions, GitLab CI)
- Designing zero-downtime deployment strategies

## Core Guidance

### 1. Platform Selection

| Platform | Best For | Deploy Model | Scaling |
|----------|----------|-------------|---------|
| Vercel | Next.js, frontends, edge | Git push / CLI | Auto (serverless) |
| Railway | Full-stack, databases, workers | Git push / CLI | Auto + manual |
| Fly.io | Global edge, containers | CLI (`fly deploy`) | Auto + regional |
| AWS ECS/Fargate | Enterprise containers | CI/CD pipeline | Auto + rules |
| Google Cloud Run | Stateless containers | CI/CD / CLI | Auto (request-based) |
| Kubernetes | Complex orchestration | Manifests / Helm | HPA, VPA, custom |

### 2. Docker Best Practices

**Multi-Stage Build Pattern**:
```dockerfile
# Stage 1: Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production && npm cache clean --force
COPY . .
RUN npm run build

# Stage 2: Runtime
FROM node:20-alpine AS runtime
WORKDIR /app
RUN addgroup -g 1001 -S appgroup && adduser -u 1001 -S appuser -G appgroup
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
USER appuser
EXPOSE 3000
CMD ["node", "dist/server.js"]
```

**Container Security Rules**:
- Use specific version tags, never `latest`
- Run as non-root user
- Use `.dockerignore` to exclude secrets, node_modules, .git
- Scan images for vulnerabilities (`trivy`, `snyk container`)
- Keep base images minimal (alpine, distroless)
- No secrets in image layers (use build args or runtime env)

### 3. Deployment Strategies

| Strategy | Downtime | Rollback Speed | Risk | Use When |
|----------|----------|---------------|------|----------|
| Rolling update | None | Moderate | Low | Default for most apps |
| Blue-green | None | Instant | Low | Critical services |
| Canary | None | Fast | Very low | High-traffic, risky changes |
| Recreate | Brief | Fast | Moderate | Dev/staging, breaking changes |
| Feature flags | None | Instant | Very low | Gradual rollout, A/B testing |

**Blue-Green Deployment**:
```
Load Balancer
     |
     +-- Blue (current v1.0) <-- traffic
     |
     +-- Green (new v1.1) <-- deploy, test, verify

Switch: Route traffic Blue -> Green
Rollback: Route traffic Green -> Blue (instant)
```

**Canary Deployment**:
```
Load Balancer (weight-based routing)
     |
     +-- Stable (95% traffic) -- v1.0
     |
     +-- Canary (5% traffic)  -- v1.1

Monitor metrics -> increase canary % -> promote or rollback
```

### 4. CI/CD Pipeline Design

**Standard Pipeline Stages**:
```
Trigger (push/PR)
  -> Lint & Format Check
  -> Type Check
  -> Unit Tests
  -> Build
  -> Integration Tests
  -> Security Scan (SAST, dependency audit)
  -> Container Build (if applicable)
  -> Deploy to Staging
  -> E2E Tests (against staging)
  -> Deploy to Production
  -> Smoke Tests
  -> Notify
```

**GitHub Actions Best Practices**:
- Use specific action versions (`@v4`, not `@main`)
- Cache dependencies (`actions/cache`, `setup-node` with cache)
- Run independent jobs in parallel
- Use environments with protection rules for production
- Store secrets in GitHub Secrets, never in workflow files
- Use OIDC for cloud provider auth (no long-lived credentials)

### 5. Kubernetes Essentials

**Resource Configuration**:
```yaml
resources:
  requests:
    cpu: "100m"       # Guaranteed minimum
    memory: "128Mi"
  limits:
    cpu: "500m"       # Maximum allowed
    memory: "512Mi"
```

**Health Checks**:
```yaml
livenessProbe:        # Restart if unhealthy
  httpGet:
    path: /healthz
    port: 3000
  initialDelaySeconds: 10
  periodSeconds: 15

readinessProbe:       # Remove from LB if not ready
  httpGet:
    path: /readyz
    port: 3000
  initialDelaySeconds: 5
  periodSeconds: 5
```

**Key Patterns**:
- Use `Deployment` for stateless, `StatefulSet` for stateful workloads
- Configure HPA (Horizontal Pod Autoscaler) for auto-scaling
- Use `PodDisruptionBudget` for availability during updates
- Store config in `ConfigMap`, secrets in `Secret` (or external vault)
- Use namespaces for environment separation

### 6. Zero-Downtime Checklist

- [ ] Health check endpoints implemented (`/healthz`, `/readyz`)
- [ ] Graceful shutdown handles in-flight requests (SIGTERM handler)
- [ ] Database migrations are backward-compatible
- [ ] Rolling update strategy configured with proper surge/unavailable settings
- [ ] Connection draining configured on load balancer
- [ ] Rollback procedure documented and tested
- [ ] Smoke tests run automatically after deployment
- [ ] Monitoring and alerting active for deployment metrics

### 7. Environment Management

| Environment | Purpose | Deploy Trigger | Data |
|------------|---------|----------------|------|
| Development | Local dev, experiments | Manual | Seed/mock |
| Preview | PR review, feature testing | PR open/update | Seed/clone |
| Staging | Pre-production validation | Merge to main | Sanitized prod |
| Production | Live traffic | Manual approval or tag | Real |

**Environment Variables**:
- Use platform-native secrets management (Vercel env, Railway variables, K8s secrets)
- Validate all required env vars at startup (fail fast)
- Never share secrets between environments
- Rotate secrets on a schedule (90 days minimum)

## Anti-Patterns

- Deploying directly from local machines to production
- Missing health checks or graceful shutdown handlers
- Running database migrations that break backward compatibility
- Using `latest` tag for container images
- Storing secrets in container images or git history
- No rollback strategy or untested rollback procedures
- Skipping staging environment for "small changes"

## Quick Reference

**Deployment Decision**:
```
Static site / frontend? -> Vercel, Cloudflare Pages
Full-stack + DB? -> Railway, Fly.io, Cloud Run
Complex microservices? -> Kubernetes, ECS
```

**Pipeline Minimum**:
```
lint -> typecheck -> test -> build -> deploy-staging -> e2e -> deploy-prod
```

## Rationalizations
> 이 절은 참고 자료다 — 아래 변명·반박은 모델이 작업 중 스스로 지름길을 점검하는 데 쓰고, 사용자에게 묻는 질문 목록이나 별도 게이트로 쓰지 않는다. 반박에 비추어 스스로 바로잡을 수 없으면 이 스킬의 Step·Checkpoint 규칙을 따른다.

The following table captures common excuses agents make to skip the rigor of this skill, paired with factual rebuttals.

| Excuse | Rebuttal |
|--------|----------|
| "manual deploy is fine for now" | manual deploys skip validation and are how incidents happen at 2am — automate from day one |
| "Docker is overkill" | containers are the artifact contract between dev and prod — without them "works on my machine" wins |
| "blue-green is overengineering" | rollback without blue-green is a prayer; with it, rollback is a routing flip |
| "Kubernetes for a small app" | agreed — use a PaaS instead; the point is: pick the right tool, not skip deployment automation |
| "I will add health checks after launch" | no health checks means no safe restart and no safe autoscale — add them on day one |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.