Skip to content

Course overview ​

Deployment & DevOps Fundamentals follows one application through testing, packaging, deployment, and day-to-day operation. You will work in the same deployment-workshop repository across six lessons, adding a new capability at each stage.

The course is for developers who know basic JavaScript and want practical experience getting an application online and keeping it working.

What you will build ​

Your main project starts as a small Node.js/Express API. It becomes a Notes API that stores records in MySQL, runs in Docker, and can be deployed on Render.

Alongside the application, you will build the tools needed to verify and operate it:

  • Vitest and Supertest checks for API behavior.
  • A GitHub Actions workflow that validates changes.
  • A Dockerfile and a Compose configuration for the API and database.
  • Structured request logs and separate liveness and readiness endpoints.
  • A MySQL backup, a restore exercise, and a versioned SQL migration.

A small Netlify website in Lesson 1 introduces static hosting. It remains a separate project within the same repository; connecting a full frontend to the Notes API is outside the main exercises.

Learning path ​

LessonFocusYour checkpoint
1 · Deployment & Cloud HostingEnvironments, hosting models, and first deploymentsOpen your Netlify site and Render API using public URLs.
2 · CI/CDAutomated tests, pull requests, and deployment checksSee passing tests locally and in GitHub Actions.
3 · Containerization with DockerImages, containers, ports, and troubleshootingBuild an API image and reach it through a local port.
4 · Docker Compose & ConfigurationService networking, MySQL, environment variables, and volumesSave notes and retrieve them after recreating the containers.
5 · Cloud DeploymentRender services, private networking, and CI-gated deploymentVerify the public API and, with paid database resources, its MySQL-backed routes.
6 · Monitoring, Logging & OperationsLogs, health signals, backups, and migrationsTrace a request, restore a backup, and add a column without losing notes.

Follow the lessons in order the first time. Each exercise assumes you have kept the code and configuration from the preceding lessons.

Before you start ​

You should be comfortable editing JavaScript, running terminal commands, and making Git commits. Prior experience with Docker, MySQL administration, or cloud deployment is not required.

Prepare for each stage ​

WhenWhat you need
Lesson 1A code editor, terminal, Node.js and npm, Git, and GitHub, Netlify, and Render accounts.
Lesson 2Node.js 22.12 or newer and GitHub Actions enabled for your application repository. The examples use Node.js 22 in CI.
Lessons 3–4Docker Desktop on macOS/Windows, or Docker Engine on Linux, with the Docker Compose plugin. MySQL runs in a container.
Lesson 5Your Render account and repository. The full MySQL deployment needs a paid private service and persistent disk. DigitalOcean is optional.
Lesson 6Your local Compose application and sample notes. A live Render service and external uptime monitor are optional.

Use a browser, Insomnia, or curl to verify HTTP responses. Each lesson explains the tools used in its exercises.

Accounts and costs ​

Review the provider's current plans before creating cloud resources. The complete Render database deployment in Lesson 5 requires paid resources; the lesson includes an API-only path and an instructor demonstration option for the database.

You can complete the Docker, Compose, logging, backup, and migration exercises locally. You do not need a DigitalOcean account unless you choose to follow the optional server demonstration.

How to work through a lesson ​

  1. Check the starting point. Confirm that the previous lesson's application and tests still work.
  2. Make the change. Follow the examples in your application repository.
  3. Verify the result. Check responses, logs, or database records against the expected output.
  4. Explain what happened. Answer the knowledge questions before opening the suggested answers.
  5. Save your progress. Commit the relevant code and configuration, then complete the final checklist.

Keep the application and course website separate

The exercise repository is deployment-workshop. Place the API, its tests, Dockerfiles, and GitHub Actions workflow there. This VitePress website is the course material.

What to keep between lessons ​

Keep your application source, tests, lockfile, Docker and Compose configuration, and SQL scripts in Git. Keep real .env files, passwords, database exports, and sensitive logs out of the repository.

After merging a pull request, switch back to local main and pull the merged changes before starting the next exercise. A merge on GitHub does not update your local checkout automatically.

Use the same repository throughout, but remember that local and cloud databases are separate. Saving a note locally does not copy it to Render, and a local migration does not update the cloud schema.

Ready to begin ​

Start with Lesson 1 — Introduction to Deployment & Cloud Hosting. You will publish two small applications and learn why their hosting requirements differ.