Skip to content
Back to skills

Operational Patterns

ASecurity

Security architecture, observability, CI/CD pipelines, database migrations, and environment strategy patterns for production-ready systems

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 27, 2026
devopspythongosqlreactnextjsnodeexpressdjangodockeraws

Works with

  • cli
  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add navraj007in/architecture-cowork-plugin --skill operational-patterns --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Operational Patterns?

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

Security grade badge for Operational Patterns
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/navraj007in-operational-patterns/badge)](https://www.skillsdirectory.com/skills/navraj007in-operational-patterns)

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
---
name: operational-patterns
description: Security architecture, observability, CI/CD pipelines, database migrations, and environment strategy patterns for production-ready systems
---

# Operational Patterns

Patterns and recommendations for security, observability, CI/CD, database migrations, and environment management. Use when generating the Security Architecture, Observability, and DevOps Blueprint deliverables.

---

## Security Architecture

### Auth Strategy Selection

| Project Type | Recommended Auth | Rationale |
|-------------|-----------------|-----------|
| Simple app, few roles | Clerk or Supabase Auth | Managed service, minimal setup, built-in UI components |
| Multi-tenant SaaS | Auth0 or Clerk (organizations) | Organization-level isolation, role management, SSO |
| API-only / B2B | API keys + JWT | Simple machine-to-machine auth |
| Enterprise / compliance-heavy | Auth0 or Keycloak (self-hosted) | Fine-grained control, audit logs, compliance certifications |
| Mobile app | Firebase Auth or Clerk | Native SDK support, social login, biometrics |

### API Security Checklist

Every REST API service should implement these protections:

| Protection | Implementation | Priority |
|-----------|---------------|----------|
| **Rate limiting** | Express-rate-limit, Upstash Ratelimit, or API gateway rate limits | Must-have |
| **Input validation** | Zod schemas on all request bodies and query params. Reject unknown fields. | Must-have |
| **CORS** | Whitelist specific origins. Never use `*` in production. | Must-have |
| **Helmet headers** | `helmet` middleware for security headers (CSP, X-Frame-Options, HSTS) | Must-have |
| **SQL/NoSQL injection** | Parameterized queries only. Never interpolate user input into queries. | Must-have |
| **XSS prevention** | Sanitize HTML output. Use frameworks with built-in escaping (React, Next.js). | Must-have |
| **CSRF protection** | SameSite cookies + CSRF tokens for cookie-based auth. Not needed for bearer-only APIs. | Conditional |
| **Request size limits** | Limit body size (e.g. 1MB default, higher for file uploads) | Should-have |
| **Authentication** | Verify JWT/session on every protected route. Middleware, not per-route. | Must-have |
| **Authorization** | Check user roles/permissions after authentication. Separate middleware. | Must-have |

### Data Protection

| Concern | Recommendation |
|---------|---------------|
| **Encryption at rest** | Use database provider's built-in encryption (RDS, Supabase, MongoDB Atlas all encrypt by default) |
| **Encryption in transit** | TLS 1.3 on all endpoints. Enforce HTTPS redirects. Internal service-to-service can use HTTP if within VPC. |
| **PII handling** | Identify PII fields (email, name, phone, address, IP). Log them only when necessary. Mask in non-prod environments. |
| **Secrets management** | Never hardcode secrets. Use platform env vars (Vercel, Railway) or a secrets manager (Doppler, AWS SSM). Rotate API keys periodically. |
| **Data retention** | Define retention periods per data type. Implement soft deletes for user data. Support data export/deletion for GDPR. |
| **Backups** | Automated daily database backups with point-in-time recovery. Test restores quarterly. |

### OWASP Top 10 Quick Reference

When assessing security, check against these common threats:

1. **Broken Access Control** — Ensure authorization checks on every endpoint, not just authentication
2. **Cryptographic Failures** — Don't store passwords in plaintext (use bcrypt/argon2 via auth provider), don't log tokens
3. **Injection** — Parameterized queries, input validation, no eval/exec of user input
4. **Insecure Design** — Rate limit auth endpoints, implement account lockout, use CAPTCHA on public forms
5. **Security Misconfiguration** — Remove default credentials, disable debug mode in production, review CORS
6. **Vulnerable Components** — Keep dependencies updated, run `npm audit` / `pip audit` in CI
7. **Authentication Failures** — Use a managed auth provider, implement MFA for admin roles
8. **Data Integrity Failures** — Verify webhook signatures, validate JWT signatures, use CSP headers
9. **Logging Failures** — Log auth events, access denials, and input validation failures
10. **SSRF** — Validate and whitelist URLs before making server-side requests

---

## Observability

### Observability Stack Recommendations

| Project Size | Logging | Tracing | Metrics | Alerting | Monthly Cost |
|-------------|---------|---------|---------|----------|-------------|
| **MVP / startup** | Axiom (free tier) or console + Vercel logs | Not needed yet | Vercel/Railway built-in | Sentry (free tier) | $0 |
| **Growing (1K-10K users)** | Axiom or Betterstack | Sentry performance | PostHog + Sentry | Sentry + Slack webhooks | $20-50/mo |
| **Production (10K+ users)** | Datadog or Grafana Cloud | OpenTelemetry → Jaeger/Datadog | Prometheus + Grafana or Datadog | PagerDuty + Datadog | $100-500/mo |
| **Enterprise** | Datadog or Splunk | Datadog APM or Honeycomb | Datadog or custom Prometheus | PagerDuty + Datadog | $500+/mo |

### Structured Logging

All services should use structured JSON logging:

```json
{
  "level": "info",
  "timestamp": "2026-02-07T10:30:00.000Z",
  "service": "api-server",
  "requestId": "req_abc123",
  "userId": "usr_xyz",
  "action": "create_order",
  "duration_ms": 145,
  "message": "Order created successfully"
}
```

**Logging rules:**
- Use log levels consistently: `error` (broken), `warn` (degraded), `info` (business events), `debug` (dev only)
- Include `requestId` for request correlation across services
- Include `userId` for audit trail (mask in logs if compliance requires)
- Never log: passwords, tokens, full credit card numbers, API keys
- Always log: auth failures, permission denials, input validation errors, external API errors

### Key Metrics to Track

| Category | Metric | Alert Threshold |
|----------|--------|----------------|
| **Availability** | Uptime percentage | < 99.5% over 24h |
| **Latency** | Request duration p50, p95, p99 | p99 > 2s |
| **Error rate** | 5xx errors / total requests | > 1% over 5 minutes |
| **Throughput** | Requests per second | Unusual spike or drop (>3x baseline) |
| **Queue depth** | Jobs waiting in queue | > 1000 for > 5 minutes |
| **Database** | Connection pool usage, query duration | Pool > 80%, queries > 500ms |
| **AI/LLM** | Token usage, response time, failure rate | Failure rate > 5%, response > 30s |
| **Business** | Signups, conversions, active users | Unusual drops (context-dependent) |

### Health Check Pattern

Every service exposes `/health` with tiered checks:

```json
{
  "status": "healthy",
  "service": "api-server",
  "version": "1.2.3",
  "uptime_seconds": 86400,
  "checks": {
    "database": { "status": "healthy", "latency_ms": 5 },
    "redis": { "status": "healthy", "latency_ms": 2 },
    "external_api": { "status": "degraded", "latency_ms": 1500, "note": "slow but responding" }
  }
}
```

- `/health` — quick liveness check (returns 200 if process is running)
- `/health/ready` — readiness check (returns 200 only if all dependencies are reachable)
- Used by load balancers, container orchestrators, and monitoring

---

## CI/CD Pipeline

### Pipeline Templates by Provider

**GitHub Actions (recommended for most projects):**

```
Stages: lint → test → build → deploy

Triggers:
  - Push to main → deploy to production
  - Push to develop → deploy to staging
  - Pull request → run lint + test only
  - Manual dispatch → deploy to any environment
```

**Pipeline stages:**

| Stage | What It Does | Tools |
|-------|-------------|-------|
| **Lint** | Code style, formatting, type checking | ESLint, Prettier, tsc --noEmit / Ruff, mypy |
| **Test** | Unit tests, integration tests | Jest, Vitest, pytest |
| **Build** | Compile, bundle, Docker image | tsc, next build, docker build |
| **Security** | Dependency audit, secret scanning | npm audit, pip audit, Trivy, GitGuardian |
| **Deploy** | Push to hosting provider | Vercel CLI, Railway CLI, AWS CDK, Docker push |

### Branch Strategy Selection

| Team Size | Recommended Strategy | Workflow |
|-----------|---------------------|----------|
| Solo / 1-2 devs | github-flow | `main` + feature branches. Merge via PR. Deploy on merge to main. |
| 3-5 devs | github-flow | Same, but require PR reviews. Use staging environment for pre-prod testing. |
| 5-10 devs | gitflow or trunk-based | Gitflow if you need scheduled releases. Trunk-based if you deploy continuously. |
| 10+ devs | trunk-based with feature flags | Short-lived branches (<1 day). Feature flags for incomplete features. |

### Environment Promotion

```
Feature branch → PR review → merge to develop → auto-deploy to staging →
manual promote to production (merge develop → main) → auto-deploy to production
```

For simpler projects:
```
Feature branch → PR review → merge to main → auto-deploy to production
```

---

## Database Migrations

### Migration Tool Selection

| Stack | Recommended Tool | Alternatives |
|-------|-----------------|-------------|
| Node.js + PostgreSQL | Prisma Migrate | Knex, TypeORM, Drizzle Kit |
| Node.js + MongoDB | Mongoose (schema-on-read) | migrate-mongo |
| Python + PostgreSQL | Alembic | Django migrations, SQLAlchemy-migrate |
| Python + MongoDB | No formal migrations needed | mongomock for testing |

### Migration Strategy

| Concern | Recommendation |
|---------|---------------|
| **Versioning** | Sequential numbered migrations (001_create_users.sql, 002_add_orders.sql). Never edit applied migrations. |
| **Rollback** | Every migration has an up and a down. Test rollbacks before deploying. |
| **CI integration** | Run pending migrations automatically in CI before tests. Run in staging before production. |
| **Zero-downtime** | Avoid breaking changes in one step. Add column → backfill → make required → remove old. |
| **Seed data** | Dev seeds: faker/factory data for local development. Staging seeds: anonymized subset of production data. |
| **Production** | Run migrations before deploying new code. Use advisory locks to prevent concurrent migrations. |

### Common Migration Patterns

| Pattern | When | Example |
|---------|------|---------|
| **Add nullable column** | Safe, no downtime | `ALTER TABLE users ADD COLUMN phone TEXT;` |
| **Rename column** | Requires migration in 2 steps | Step 1: Add new column + backfill. Step 2: Drop old column. |
| **Add index** | Can lock table on large datasets | Use `CREATE INDEX CONCURRENTLY` on PostgreSQL |
| **Change column type** | Risky — may lose data | Create new column, migrate data, drop old column |

---

## Environment Strategy

### Environment Definitions

| Environment | Purpose | Data | Access | Deploy Trigger |
|------------|---------|------|--------|---------------|
| **Local** | Developer machine | Seed data / Docker Compose | Developer only | Manual |
| **Development** | Shared dev environment | Seed data | Dev team | Push to `develop` |
| **Staging** | Pre-production testing | Anonymized prod data or rich seeds | Dev team + QA | Push to `staging` or manual promote |
| **Production** | Live users | Real data | Restricted access | Push to `main` or manual promote |

### Config Management

**Environment variable categories:**

| Category | Examples | Where Stored |
|----------|---------|-------------|
| **Service config** | PORT, NODE_ENV, LOG_LEVEL | .env file (local), platform env vars (deployed) |
| **Database** | DATABASE_URL, REDIS_URL | Platform env vars, secrets manager |
| **Third-party API keys** | STRIPE_SECRET_KEY, SENDGRID_API_KEY | Secrets manager (Doppler, AWS SSM) |
| **Feature flags** | ENABLE_AI_AGENT, ENABLE_BETA_FEATURES | Feature flag service or env vars |
| **Internal service URLs** | API_SERVER_URL, AGENT_SERVICE_URL | Platform env vars, service discovery |

**Config validation:**
- Validate all environment variables on service startup using Zod, envalid, or pydantic-settings
- Fail fast with clear error messages if required vars are missing
- Log which environment the service is running in (but never log secret values)

### Feature Flags

| Approach | When to Use | Tool |
|----------|------------|------|
| **Environment variables** | Simple on/off for 1-2 features | `ENABLE_FEATURE_X=true` |
| **Config file** | Multiple flags, no runtime changes needed | `features.json` loaded on startup |
| **Feature flag service** | Runtime toggling, gradual rollouts, A/B testing | LaunchDarkly ($10/mo), Unleash (open source), PostHog (free tier) |

---

## Choosing What to Include

Not every project needs all operational patterns. Use this guide:

| Project Stage | Include | Skip |
|-------------|---------|------|
| **MVP / proof of concept** | Basic auth, console logging, simple CI (lint + test + deploy), env vars | Tracing, alerting, feature flags, multi-environment |
| **Early startup (pre-product-market fit)** | Managed auth, structured logging, Sentry, GitHub Actions CI/CD, staging env | APM, custom metrics, PagerDuty, complex migration strategy |
| **Growing product (1K+ users)** | All security checklist items, observability stack, full CI/CD pipeline, migration tooling, staging + production | Enterprise compliance, self-hosted tooling |
| **Production / enterprise** | Everything above + compliance audits, APM, distributed tracing, PagerDuty, feature flags, multi-region | Nothing — you need it all |

When generating blueprints, match the depth to the project's stage and complexity. Don't overwhelm an MVP with enterprise patterns.

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.