🌍 Back-end Web Developement · subject

Back-end Web Developement Server Management Syllabus

The Server Management syllabus for Back-end Web Developement in full: 3 chapters and 7 topics, every one listed below, plus 50 Server Management flashcards with answers.

3Chapters
7Topics
50Flashcards

Server Management syllabus: all 3 chapters

Expand any chapter to see its topics and sub-topics.

  1. Web Servers

    2 topics
    • Nginx
    • Apache
  2. Containerization

    2 topics
    • Docker
    • Kubernetes
  3. CI/CD

    3 topics
    • Jenkins
    • GitHub Actions
    • GitLab CI

Back-end Web Developement Server Management flashcards — 50 questions with answers

  1. What is Nginx and what architecture does it use to handle concurrent connections?

    Nginx is a high-performance web server, reverse proxy, load balancer, and HTTP cache. It uses an asynchronous, event-driven (non-blocking) architecture with a master process and multiple worker processes, letting a single worker handle thousands of concurrent connections in one event loop.

  2. In Nginx, what is the difference between a reverse proxy and a forward proxy?

    A reverse proxy (Nginx's typical role) sits in front of backend servers and forwards client requests to them, hiding the backends. A forward proxy sits in front of clients and forwards their requests out to the internet, hiding the clients.

  3. Which Nginx directive defines a group of backend servers for load balancing, and what is the default balancing method?

    The `upstream` block defines the backend server group. The default load-balancing method is round-robin (requests distributed sequentially); other methods include `least_conn` and `ip_hash`.

  4. What is the purpose of the Nginx `location` block?

    A `location` block matches request URIs and defines how Nginx processes requests to that path — e.g., serving files, proxying (`proxy_pass`), rewriting, or applying access rules. Matching can be exact (`=`), prefix, or regex (`~`, `~*`).

  5. What are the default HTTP and HTTPS ports, and which Nginx directive sets the listening port?

    HTTP defaults to port 80 and HTTPS to port 443. The `listen` directive inside a `server` block sets the port, e.g., `listen 443 ssl;`.

  6. How does the Apache HTTP Server's Multi-Processing Module (MPM) 'prefork' differ from 'event'?

    prefork uses multiple single-threaded processes (one process per connection, no threading — safe for non-thread-safe modules but memory heavy). event is a threaded MPM (worker-based) that dedicates a separate listener thread to manage keep-alive connections, scaling better for high concurrency.

  7. What is the main configuration file of Apache HTTP Server, and what file provides per-directory overrides?

    The main config file is `httpd.conf` (or `apache2.conf` on Debian/Ubuntu). `.htaccess` files provide decentralized, per-directory configuration overrides that Apache reads at request time.

  8. Name one key architectural difference between Nginx and Apache in handling connections.

    Nginx uses an event-driven, asynchronous model where one worker handles many connections without a thread/process per request. Traditional Apache (prefork/worker) tends toward a process/thread per connection, which consumes more memory under high concurrency.

  9. What is a Docker image versus a Docker container?

    A Docker image is a read-only, layered template (built from a Dockerfile) containing application code, dependencies, and runtime. A container is a running (or stopped) writable instance of an image — the live process with its own filesystem layer, network, and namespaces.

  10. What is a Dockerfile and name three common instructions?

    A Dockerfile is a text script of instructions used to build a Docker image. Common instructions: `FROM` (base image), `RUN` (execute a command during build), `COPY`/`ADD` (add files), `CMD`/`ENTRYPOINT` (default runtime command), `EXPOSE` (document a port).

  11. In Docker, what is the difference between the `CMD` and `ENTRYPOINT` instructions?

    `ENTRYPOINT` sets the fixed executable that always runs when the container starts. `CMD` provides default arguments (or a default command) that can be overridden at `docker run`. When both are set, `CMD`'s values are passed as arguments to `ENTRYPOINT`.

  12. What is a Docker volume and why is it used?

    A Docker volume is a persistent storage mechanism managed by Docker, living outside the container's writable layer. It is used to persist data beyond a container's lifecycle and to share data between containers, since container filesystems are ephemeral.

  13. What does Docker layer caching do, and why order Dockerfile instructions carefully?

    Each Dockerfile instruction creates a cached layer; on rebuild, Docker reuses cached layers until it hits a changed instruction, then rebuilds everything after it. Placing rarely-changing steps (like dependency installs) before frequently-changing steps (like copying source) maximizes cache reuse and speeds builds.

  14. What is Docker Compose used for?

    Docker Compose defines and runs multi-container applications using a single declarative YAML file (`docker-compose.yml`). It specifies services, networks, and volumes, and lets you start the whole stack with `docker compose up`.

  15. What is the difference between `docker run` and `docker exec`?

    `docker run` creates and starts a new container from an image. `docker exec` runs an additional command inside an already-running container (commonly `docker exec -it <container> bash` for an interactive shell).

  16. What is Kubernetes and what problem does it solve?

    Kubernetes (K8s) is an open-source container orchestration platform. It automates deployment, scaling, self-healing, load balancing, and management of containerized applications across a cluster of machines.

  17. What is a Pod in Kubernetes?

    A Pod is the smallest deployable unit in Kubernetes — a group of one or more tightly coupled containers that share the same network namespace (one IP), storage volumes, and lifecycle. Containers in a Pod are always co-located and co-scheduled.

  18. What are the main components of the Kubernetes control plane?

    The control plane includes the `kube-apiserver` (front-end API), `etcd` (distributed key-value store for cluster state), `kube-scheduler` (assigns Pods to nodes), and `kube-controller-manager` (runs controllers that reconcile desired vs. actual state).

  19. What runs on a Kubernetes worker node?

    Each worker node runs the `kubelet` (agent that manages Pods and talks to the control plane), a container runtime (e.g., containerd), and `kube-proxy` (maintains network rules for Service routing).

  20. What is a Kubernetes Deployment and what does it manage?

    A Deployment is a controller that declaratively manages a set of identical Pods via a ReplicaSet. It handles scaling, rolling updates, and rollbacks, continuously reconciling the actual state toward the declared desired number of replicas.

Show the other 30 Server Management flashcards
  1. What is a Kubernetes Service and what are the main types?

    A Service provides a stable network endpoint and load balancing for a dynamic set of Pods (selected by labels). Main types: `ClusterIP` (internal only, default), `NodePort` (exposes a port on each node), `LoadBalancer` (external cloud load balancer), and `ExternalName`.

  2. What is the role of etcd in a Kubernetes cluster?

    etcd is the distributed, consistent key-value store that holds the entire cluster state and configuration (the single source of truth). The API server is the only component that reads/writes directly to etcd.

  3. What is a ReplicaSet in Kubernetes and how does it relate to a Deployment?

    A ReplicaSet ensures a specified number of identical Pod replicas are running at all times. Deployments manage ReplicaSets — each rollout creates a new ReplicaSet, enabling versioned rolling updates and rollbacks.

  4. What is the difference between a Kubernetes ConfigMap and a Secret?

    A ConfigMap stores non-sensitive configuration data as key-value pairs. A Secret stores sensitive data (passwords, tokens, keys) and is base64-encoded and handled with additional access controls. Both can be mounted as volumes or exposed as environment variables.

  5. What is a Kubernetes namespace used for?

    A namespace provides a virtual cluster / scope for isolating and organizing resources within a single physical cluster. It enables multi-tenancy, resource quotas, and access control by grouping related objects (e.g., `dev`, `prod`).

  6. What is Jenkins and what is its primary purpose?

    Jenkins is an open-source, self-hosted automation server written in Java, used primarily for Continuous Integration and Continuous Delivery (CI/CD). It automates building, testing, and deploying software through configurable pipelines and a large plugin ecosystem.

  7. What is a Jenkinsfile and what are the two pipeline syntaxes?

    A Jenkinsfile is a text file (checked into source control) that defines a Jenkins Pipeline as code. The two syntaxes are Declarative Pipeline (structured, `pipeline { }` block) and Scripted Pipeline (Groovy-based, `node { }` block, more flexible/imperative).

  8. In a Jenkins Declarative Pipeline, what are `stages` and `steps`?

    `stages` is a block containing one or more `stage` definitions representing distinct phases (e.g., Build, Test, Deploy). Each `stage` contains a `steps` block listing the individual commands/actions executed in that phase.

  9. What is the Jenkins controller/agent (master/agent) architecture?

    The Jenkins controller (formerly master) schedules jobs, stores configuration, and serves the UI. Agents (nodes) are separate machines that execute the build jobs, distributing workload and allowing builds in different environments/OSes.

  10. How can Jenkins jobs be triggered automatically on code changes?

    Via webhooks from the SCM (e.g., GitHub push triggers), SCM polling (`pollSCM` on a cron schedule), scheduled triggers (`cron`), or upstream/downstream job triggers. Webhooks are preferred as they are event-driven rather than polling.

  11. What is GitHub Actions and what event-driven model does it use?

    GitHub Actions is a CI/CD and automation platform built into GitHub. Workflows are triggered by repository events (push, pull_request, schedule, etc.) defined in YAML files, running jobs on GitHub-hosted or self-hosted runners.

  12. Where are GitHub Actions workflow files stored, and in what format?

    They are stored in the `.github/workflows/` directory of the repository as YAML files (`.yml`/`.yaml`). Each file defines one workflow.

  13. Define the GitHub Actions hierarchy: workflow, job, step, and action.

    A workflow is the top-level automated process (one YAML file). A workflow contains jobs (run on a runner, parallel by default). Each job contains steps (sequential). A step runs either a shell command or an action — a reusable unit of code (e.g., `actions/checkout`).

  14. In GitHub Actions, what does the `on` keyword specify, and give an example trigger.

    The `on` keyword specifies the event(s) that trigger the workflow. Examples: `on: push`, `on: pull_request`, `on: schedule` (cron), or `on: workflow_dispatch` (manual trigger).

  15. By default, do jobs in a GitHub Actions workflow run in parallel or sequentially, and how do you make one wait for another?

    Jobs run in parallel by default. Use the `needs` keyword to declare dependencies so a job waits for the listed job(s) to complete successfully first (e.g., `needs: build`).

  16. What is a GitHub Actions runner?

    A runner is the server/machine that executes a workflow's jobs. GitHub-hosted runners are managed by GitHub (fresh VM per job, e.g., `ubuntu-latest`); self-hosted runners are machines you provision and manage yourself, chosen with `runs-on`.

  17. What does the `actions/checkout` action do in a GitHub Actions workflow?

    `actions/checkout` clones the repository's code onto the runner so subsequent steps can access and build it. Without it, the runner's workspace does not contain your source code.

  18. What is GitLab CI/CD and what file configures it?

    GitLab CI/CD is the built-in continuous integration/delivery system of GitLab. It is configured by a `.gitlab-ci.yml` file in the repository root, which defines the pipeline's stages, jobs, and rules.

  19. In GitLab CI, what is a pipeline and what are stages and jobs?

    A pipeline is the top-level component comprising stages that run in sequence. Each stage contains jobs that run in parallel. Jobs define the actual scripts/commands; if any job in a stage fails, later stages (by default) do not run.

  20. What is a GitLab Runner?

    A GitLab Runner is the agent application that executes the jobs defined in `.gitlab-ci.yml`. Runners can be shared, group, or project-specific, and use executors (Docker, shell, Kubernetes, etc.) to run job scripts.

  21. In GitLab CI, what is the purpose of the `stages` keyword and the default stages?

    The `stages` keyword defines the ordered list of stages and their execution sequence. If not defined, the default stages are `build`, `test`, and `deploy`, executed in that order.

  22. In GitLab CI, what do `artifacts` and `cache` do, and how do they differ?

    `artifacts` are files/outputs a job produces that are passed to later stages/jobs and stored/downloadable after the pipeline (e.g., build outputs, reports). `cache` speeds up jobs by reusing files (e.g., dependencies) across pipeline runs. Artifacts move data forward within a pipeline; cache is for reuse across runs and is not guaranteed.

  23. What is the conceptual difference between Continuous Integration (CI) and Continuous Deployment (CD)?

    CI is the practice of frequently merging code changes into a shared repository with automated build and test on each merge. Continuous Deployment automatically releases every passing change to production; Continuous Delivery keeps every change deployable but requires a manual approval to release.

  24. Compare Docker and Kubernetes in one sentence each.

    Docker is a platform for building, packaging, and running individual containers on a host. Kubernetes is an orchestrator that manages, scales, and coordinates many containers across a cluster of hosts. They are complementary, not competitors.

  25. What is a rolling update in Kubernetes and why is it useful?

    A rolling update incrementally replaces old Pods with new ones (a few at a time) rather than all at once, so the application stays available with zero downtime during a deployment. Kubernetes automatically rolls back or pauses if the new version fails health checks.

  26. How do Kubernetes liveness and readiness probes differ?

    A liveness probe checks whether a container is still healthy; on failure Kubernetes restarts it. A readiness probe checks whether a container is ready to receive traffic; on failure the Pod is removed from Service endpoints (but not restarted).

  27. What is the Horizontal Pod Autoscaler (HPA) in Kubernetes and what metric commonly drives it?

    The HPA automatically scales the number of Pod replicas up or down based on observed metrics, most commonly average CPU utilization. Conceptually the desired replica count is $\text{desired} = \left\lceil \text{current} \times \frac{M_{current}}{M_{target}} \right\rceil$, where $M$ is the metric value.

  28. In Nginx, what does the `proxy_pass` directive do?

    `proxy_pass` forwards (proxies) a matched request to a specified backend server or upstream group, making Nginx act as a reverse proxy. Example: `proxy_pass http://backend;` inside a `location` block.

  29. What is an Ingress in Kubernetes?

    An Ingress is an API object that manages external HTTP/HTTPS access to Services in a cluster, providing routing rules (host/path-based), TLS termination, and virtual hosting. It requires an Ingress controller (e.g., Nginx Ingress) to actually fulfill the rules.

  30. What is the difference between Docker `COPY` and `ADD` instructions?

    `COPY` simply copies files/directories from the build context into the image. `ADD` does the same but additionally can extract local tar archives automatically and fetch files from remote URLs. Best practice favors `COPY` unless `ADD`'s extra features are specifically needed.

Back-end Web Developement Server Management FAQ

What is in the Back-end Web Developement Server Management syllabus?

Back-end Web Developement Server Management is split into 3 chapters: Web Servers, Containerization and CI/CD. Together they contain 7 topics.

How many chapters are in Back-end Web Developement Server Management?

3 chapters, containing 7 topics. The largest chapter is CI/CD, with 3 topics.

Are there flashcards for Back-end Web Developement Server Management?

Yes — a 50-card Server Management deck, printed in full in the flashcards section of this page and available in the Examius app with spaced repetition. The free plan covers one exam of your choice, including its flashcards; Examius Pro, a one-time purchase, unlocks every other exam and deck.