DevOps Best Practices: From Code to Production
A comprehensive guide to implementing CI/CD pipelines, containerization strategies, and monitoring solutions.
CI/CD Pipeline Setup
Here's how I structure my GitHub Actions workflows:
yamlname: CI/CD Pipeline
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run tests
run: |
npm install
npm test
Docker Best Practices
Containerization is key to consistent deployments:
dockerfileMulti-stage build for optimization
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
Monitoring and Logging
Proper monitoring is essential for production systems:
pythonimport logging
from prometheus_client import Counter, Histogram
Metrics
request_counter = Counter('http_requests_total', 'Total HTTP requests')
request_duration = Histogram('http_request_duration_seconds', 'HTTP request duration')
Logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)