BLOGTUTORIAL

DevOps Without the Overwhelm

AO
Aisha OkonkwoDevOps Lead · DevSoc
28 JAN 20258 min read
devopsdockergithub actions

CI/CD, containers, cloud — it sounds like a lot. But for a student side project or society app, you only need a small fraction of it. Here's what matters and in what order.

Start With Automated Tests and CI

Before containers, before Kubernetes, before anything else: set up a GitHub Actions workflow that runs your tests on every push. This single change will prevent more bugs from reaching production than any other DevOps investment. It takes 20 minutes to set up and pays dividends for the entire life of the project.

A basic workflow: checkout the code, install dependencies, run linting, run type checking, run tests. If any step fails, the PR is blocked. No configuration, no infrastructure — just a YAML file in `.github/workflows/`. Start here.

yaml
name: CI
on: [push, pull_request]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: 20 }
      - run: npm ci
      - run: npm run lint
      - run: npm run typecheck
      - run: npm run test

Docker: When You Actually Need It

You don't need Docker for a Next.js app deployed to Vercel. You do need it when your app has infrastructure dependencies that are hard to install locally (PostgreSQL, Redis, a specific version of a CLI tool), or when you're deploying to a VPS rather than a managed platform.

The mental model: a Dockerfile describes an environment, a container is a running instance of that environment, and Docker Compose lets you define multiple containers that work together. For most student projects, `docker-compose up` to spin up a local database is the only Docker you'll need.

Deployment: The Simplest Path

Vercel for frontend (Next.js, React). Railway or Render for backend APIs and databases. Both have free tiers that are generous enough for society projects. Connect your GitHub repo, push to main, and it deploys automatically. That's your entire CD pipeline.

Add secrets as environment variables in the platform's dashboard, never in your code. Check the deployment logs when something breaks. Understand that your free-tier database goes to sleep after 15 minutes of inactivity — not a bug, a cost optimisation you need to work around in development.

AO
Aisha OkonkwoDevOps Lead · DevSoc

3rd year CS student, cloud infrastructure enthusiast, and the person responsible for DevSoc's GitHub Actions pipelines.

Rotating vector

JOIN US

Privacy policy

Cookie policy

Terms & Conditions

2024 DevSoc