DevOps for JavaScript Developers — From Localhost to Global Scale

"From Localhost to Global Scale"

DevOps কোনো টুল নয়, এটি একটি কালচার। ডেভেলপার (Dev) এবং অপারেশন (Ops) টিমের মেলবন্ধন। একজন সিনিয়রের কাজ শুধু server.js রান করা নয়, অ্যাপকে কন্টেইনারাইজ করা, অটোমেট করা এবং মনিটর করা।

⭐ ১. Docker: The Shipping Container 🐳

🎯 Core Concepts:

  • Dockerfile: অ্যাপ রান করার রেসিপি
  • Image: রেসিপি থেকে তৈরি রান্না করা খাবার (Read-only)
  • Container: ইমেজ যখন রান হয় (Running Instance)
  • Volume: ডাটা সেভ রাখার জায়গা

🐳 Dockerfile (Production Grade)

# 1. Base Image (Alpine ~5MB)
FROM node:18-alpine

# 2. Work Directory
WORKDIR /app

# 3. Copy dependencies first (Layer Caching)
COPY package*.json ./

# 4. Install only production deps
RUN npm ci --only=production

# 5. Copy source code
COPY . .

# 6. Security (Don't run as root)
USER node

# 7. Port expose
EXPOSE 3000

# 8. Start command
CMD ["node", "src/index.js"]

🐳 Docker Compose (Multi-Service)

version: "3.8"
services:
  api:
    build: .
    ports: ["3000:3000"]
    depends_on: [postgres, redis]

  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_PASSWORD: secret
    volumes: [pgdata:/var/lib/postgresql/data]

  redis:
    image: redis:alpine

volumes:
  pgdata:

💡 কমান্ড: docker compose up -d

⭐ ২. Kubernetes (K8s): The Ship Captain 🚢

Pod: ছোট ঘর
Deployment: হোটেল ম্যানেজার
Service: রিসিপশন ডেস্ক
Ingress: হোটেলের মেইন গেট

📦 K8s Deployment (deployment.yaml)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-node-app
spec:
  replicas: 3    # সবসময় ৩টা কপি চলবে
  selector:
    matchLabels:
      app: node-api
  template:
    metadata:
      labels:
        app: node-api
    spec:
      containers:
        - name: node-api
          image: my-node-app:v1
          ports:
            - containerPort: 3000

⭐ ৩. CI/CD: The Automation Factory 🤖

⚙️ GitHub Actions (.github/workflows/deploy.yml)

name: Production Build
on:
  push:
    branches: [ "main" ]

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Use Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      - run: npm ci
      - run: npm test

      - name: Build & Push Docker Image
        run: |
          docker build -t myuser/myapp:latest .
          docker push myuser/myapp:latest

      - name: Deploy via SSH
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SERVER_IP }}
          script: |
            docker pull myuser/myapp:latest
            docker compose up -d --build api

⭐ ৪. Reliability: Load Testing (k6) 🏋️‍♂️

📊 load-test.js

import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
  vus: 100,        // ১০০ ভার্চুয়াল ইউজার
  duration: '30s', // ৩০ সেকেন্ড ধরে
};

export default function () {
  http.get('http://localhost:3000/api/products');
  sleep(1);
}

💡 কমান্ড: k6 run load-test.js

⭐ ৫. Monitoring & Logging: The Dashboard 📊

📈 Prometheus

CPU, RAM, Request Count

📊 Grafana

চার্ট এবং গ্রাফ

📝 Winston/Pino Logging

const logger = require('pino')();
logger.info({ user_id: 123, action: 'login' }, 'User logged in');

// Output: {"level":30,"time":167...,"user_id":123,"msg":"User logged in"}

⭐ ৬. Deployment Strategies (Zero Downtime) 🚀

🟢🔵 Blue-Green Deployment

Blue (Live v1) → Green (v2) ডেপ্লয় → টেস্ট → রাউটার সুইচ → No Downtime!

🐦 Canary Deployment

5% → 10% → 50% → 100% ইউজার (Google, Facebook style)

🧠 ৭. Senior Interview Questions

Q1: Docker এবং VM এর পার্থক্য?

A: VM এর নিজস্ব OS থাকে (GBs ভারী), Docker হোস্ট OS এর কার্নেল শেয়ার করে (MBs হালকা)

Q2: Horizontal vs Vertical Scaling?

A: Vertical = RAM/CPU বাড়ানো (লিমিটেড), Horizontal = নতুন সার্ভার যোগ করা (আনলিমিটেড)

Q3: Kubernetes এ Ingress এর কাজ কী?

A: ক্লাস্টারের বাইরের ট্রাফিককে ভেতরের সার্ভিসে রাউট করা, SSL, ডোমেইন হ্যান্ডলিং

🚀 অধ্যায় ২৯ সারাংশ (Checklist)

  • Container: Docker দিয়ে অ্যাপ পোর্টেবল করা
  • Orchestration: Kubernetes দিয়ে স্কেল করা
  • Automation: GitHub Actions দিয়ে CI/CD
  • Safety: k6 লোড টেস্ট + Prometheus/Grafana মনিটরিং
  • Strategy: Blue-Green দিয়ে Zero Downtime

Next Step: আমাদের জার্নি প্রায় শেষ। এখন সব নলেজ একত্রিত করে একটি "Complete Enterprise-Level Project Blueprint" তৈরি করব।

🔒 কপিরাইট সুরক্ষিত কন্টেন্ট 🔒

কপি, স্ক্রিনশট, প্রিন্ট করা সম্পূর্ণ নিষিদ্ধ।