The Hong Kong University of Science and Technology · FACULTY OF COMPUTER SCIENCE

MAIE6000C Chap.9 Reproducible Deployment

- one subject, every graph, every model, every mark
8 Chapters4-page Bible
Our own words - no uploaded lecturer files
Updated for this semester
Chapter 9 of 11 · MAIE6000C

Reproducible Deployment

The standard, stated twice and bluntly

Engineering has not really happened while a system leans on machine state nobody recorded, setup moves nobody wrote down, or the particular laptop of one member of the team. And reproducibility is not there yet while exactly one person on the team can start the thing.

Both sentences are claims about the repository rather than about the code, which is why the week's work is an audit rather than a feature.

The clean-clone procedure, gate by gate

Clone into an empty directory, which proves nothing outside version control is required. Copy the example configuration, which proves no secret exists only on your machine.

Check that the configuration parses, which proves no machine-specific path is baked in. Build and start the services, which proves no image was built by hand. Apply the schema, which proves no table was created manually. Then submit one item end to end, which proves no step is being performed off screen.

Each gate proves one negative, which is why the order matters and why the exercise has to start from nothing.

Containers are a documentation decision

The taught vocabulary is deliberately plain: an image is the recipe, a container is a running copy of that recipe, and the multi-container tool runs several together, in this case the request-handling service, the database, the worker and the internal AI service.

What that buys is not isolation for its own sake.

The recipe is a file in the repository, so a reviewer reading it can see every dependency the system has, which is the question the operations document exists to answer and the one a hand-built environment makes unanswerable.

Reset has two levels and the difference matters

Stopping and removing containers is one operation; also removing the stored data is a different one, and the course flags that the second should be used carefully.

That distinction is what makes the clean-clone test possible at all, because a project whose database volume survives every restart has never been observed starting from an empty schema.

Most first-time clean runs fail at exactly that gate, because a table somebody created by hand months earlier has been quietly present ever since.

The hidden dependency is never exotic

In a semester project it is one of five things: a table created by hand, a configuration value that exists only in one person's environment file, a data file outside version control, a locally built image nobody described, or a command somebody runs before the demonstration and has stopped noticing.

None is difficult to fix once named, and all five are invisible from the inside. That is why the procedure begins by destroying the thing you are standing on rather than by reading code.

Release candidate thinking, eight weeks early

The module asks you to prepare a cleaner release candidate, which in a semester project means a state of the repository you would be willing to have assessed without warning.

Applying that standard from Week 9 onward is cheap insurance, because the final milestone and the oral defence both inspect a tagged state rather than a demonstration, and a team that keeps the main line in that condition never has a bad week to explain.

In this chapter

What this chapter covers

  • 01

    Six clean-clone gates, and the negative each one proves

  • 02

    The published three-command startup path and the two health payloads

  • 03

    Which tools you install locally and which run inside containers

  • 04

    Images, containers and the multi-container tool in plain terms

  • 05

    The two reset levels, and why the second makes the test possible

  • 06

    Five hidden dependencies that account for almost every failure

  • 07

    What the operations document has to answer

  • 08

    Release candidate thinking from Week 9 onward

Worked example · free

A clean clone that starts and then cannot answer

Q [8 marks]. AskSia-authored practice. A reviewer clones the repository into an empty directory on a new machine and follows the readme. The build succeeds, the services start, and the first submission fails with an error about a missing table. Walk the failure back and name the repair. The marks shown are an AskSia study allocation, not the University's marking scheme.
  • 2Say what the successful start already rules out.
  • 3Explain why the team never sees this failure.
  • 3Give the repair and the way to prove it.
The services started, so the images built and the configuration was readable; the failure is at the first query, which means the schema the application expects does not exist in the database it connected to. On the team's own machines it does exist, because somebody created it by hand months ago and the data volume has survived every restart since, so the migration step has been unnecessary on every machine that matters to them and essential everywhere else. The repair is to run migrations as part of startup, which the starter already demonstrates by applying its initial revision when the service comes up. The proof is to destroy the local volumes, start again from nothing and submit one item.
Sia tip — Do the clean run with the operations document open beside you and write down every decision you had to make that the document did not already answer. That list is the week's work.
Glossary

Key terms

Clean Clone
A start from an empty directory on a machine that has never run the project, which is the only test that exposes hidden local state.
Environment File
The configuration a service reads at startup, supplied as an example in the repository so that no value exists only on one person's machine.
Container Image
The recipe from which a running container is created, described by a file in the repository so that every dependency is visible to a reader.
Release Candidate
A repository state the team would be willing to have assessed without warning, which is a useful standard from the deployment week onward.
Operations Document
The required repository file answering how to run the system, how to test it, and what is and is not currently supported.
Hidden Dependency
State a system needs that exists outside version control and outside the written instructions, and is therefore invisible to everyone except the machine that has it.
Startup Migration
Applying schema changes as part of bringing the system up, which is what makes an empty database reach the shape the application expects.
FAQ

Reproducible Deployment FAQ

What does a clean-clone test actually prove?

Each step proves one negative, which is why the order matters. Cloning into an empty directory proves nothing outside version control is required. Copying the example configuration proves no secret exists only on your machine. Checking that the configuration parses proves no machine-specific path is baked in. Building and starting proves no image was built by hand. Applying the schema proves no table was created manually.

Submitting one item proves no step is being performed off screen. Skipping to the last step on a machine that already works proves only that the machine already works.

Why did my system work for months and fail on a reviewer's machine?

Almost always because a piece of state has been quietly present on the team's machines since early in the semester. The five usual candidates are a database table created by hand, a configuration value that exists only in one person's environment file, a data file sitting outside version control, a container image built locally and never described, and a command somebody runs before the demonstration and has stopped noticing.

None is hard to fix once named, and all five are invisible from inside, which is why the audit starts by destroying your own local state rather than by reading code.

Do I need to install the database and the framework myself?

No. The course states that the application framework, the server, the database, the object-relational layer, the migration tool and the test runner come with the supplied repository and execute within containers, so installing them individually creates version conflicts you then have to debug.

What you install locally is a version-control client, a container runtime with its multi-container tool, a code editor, and optionally a recent Python interpreter for editor support. Three version-check commands confirm the prerequisites, and the starter itself is verified by copying the example configuration and starting the stack.

Study strategy

Assessment move

Do the clean-clone run twice: once in Week 9 to find the gaps, and once in the week before the final demonstration on the machine you will present from. The second run is not paranoia. Almost every demonstration failure in a project of this shape is local state that was working right up to the moment somebody else's laptop was plugged in.

Working through Reproducible Deployment in MAIE6000C? Sia is AskSia’s AI Computer Science tutor — ask any MAIE6000C Reproducible Deployment question and get a clear, step-by-step explanation grounded in how MAIE6000C is taught and assessed. Read this chapter free, then take your hardest questions to Sia.

A+Everything unlocked
Unlocks this Bible + your other The Hong Kong University of Science and Technology subjects - and 1,000+ Bibles across every Australian university.
Sia - your MAIE6000C tutor, unlimited, worked the way the exam marks it
The full 4-page Bible + practice bank with worked solutions
Chrome extension - sync your LMS so Sia knows your deadlines
Bilingual EN / Chinese on every Bible and every Sia answer
$0.99 Trial
30-day money-back · cancel in one tap · how it works