Skip to content

Checkpoint 3

Checkpoint 3 happens during the 12th week of the course, during phase 3, where the main topics were setting up the application in Kubernetes, automating deployment to Kubernetes and monitoring your application.

Introduction

During the checkpoint, you are asked to demonstrate the development, operations, and documentation requirements of phase 3. All the tasks given in the phase are mandatory, but we will check a random subset of them.

The process is rather straightforward:

  1. Prepare your project, systems, and team for the checkpoint.
  2. During your allocated time slot, come to the session. In the case of an in-person class, please wait until you're invited to the class.
  3. Connect your devices, and prepare to present.
  4. During the presentation, TAs ask you to show specific functionalities of your application or demonstrate how you've done something.
    • Try to keep it short and concise, as it helps you have time for the rest of the session.
    • This is to earn the 15 team-wide points which everyone shares.
  5. During the presentation, we will also direct specific questions to random members of the team.
    • This is to earn the 5 individual points.
  6. After you're done with the presentation, we'll give you an overview of how you did, and you can leave the session.
    • We might not give you the score right then - sometimes we'll go to check the work done in GitLab afterward, if there's anything ambiguous.
  7. At the end of the week, we'll add the points to the SIS.

Here is a quick overview of development, operations, and documentation tasks required for checkpoints. For detailed descriptions see the lab guides mentioned previously.

Info

During the checkpoint, we will be asking you to demonstrate a subset of the tasks below.

Attention

When you are coming to present.

  • All team members should have their application ready and opened on their laptops .
  • All team members should have their code editors open with the project loaded and ready to go.
  • All team members should have their project repo open in Gitlab.
  • All team members should have access to the Kubernetes cluster.
  • All team members need to be familar with their project.

Operational requirements

Deployment in Kubernetes:

  • Show us that your application is deployed to Kubernetes using Deployment with 1 replica. The container must have an uptodate image of your application.

GitLab pipeline:

  • Show us your pipeline stage where the image of your application is built. The image must be uploaded to GitLab registry in your project.

Automated deployment via GitLab:

  • Show us your pipeline stage where your application is deployed to Kubernetes using appropriate Kubernetes resources.
  • Demonstrate that GitLab is able to access your teams' Kubernetes namespace and manage resources there. This must be done using ServiceAccount, Role and RoleBinding resources.

Data persistence:

  • Show us that after restarting your application Pod all data remains.
  • One of these storage solutions must be used for database storage and image storage:
    • longhorn PVC and volume or
    • S3 using operator (and longhorn-single StorageClass) or your own custom S3 setup.
  • The database should be in a separate Pod from the main application.

Data management:

  • Show us that you use Secrets for sensitive data and ConfigMaps for other environment variables. The Deployment/StatefulSet/Pod must use these resources to mount the data.
  • There can be no secrets in the pipeline nor no hard coded environment variables in your code.

External access to your app:

  • Show us that application is accessible from a browser using a proper domain name. The connection must be secured through HTTPS using a certificate. This has to be set up in Kubernetes using Service, Ingress and cert-manager operator for the certificate.

Unit tests:

  • Show us your GitLab banner where it is visible that the backend unit test coverage is still more than 50 %.

Development requirements (points mixed with operations)

Grafana dashboard:

  • Show us your Grafana dashboard that monitors your application. There must be 4 custom metrics, disk usage and component health status visualized.
  • Points:
    • The instrumentation endpoint is implemented in the application code and at least 4 metrics collected which are served on a separate container port - 1.5p for development.
    • The Grafana board has all the necessary visualizations with proper labels and units - 1p for operations.

Healthpoints:

  • Show us that your application has working health points implemented (1.5p for development).
  • Show us that you have set up liveness and readiness probes in your Kubernetes deployment and when checking them they answer appropriately (1p for operations).

Attention

All the previous development requirements are still mandatory if they have not been 'overwritten' by other requirements. Making changes should not break other parts of your application.

Documentation requirements

  • How the application is deployed to Kubernetes.
  • Pipeline stages and access solutions.
  • Implementation of monitoring in your application code.
  • Proper explanation how monitoring setup and metrics + probes have implemented in Kubernetes. Explanation of the monitoring workflow.
  • Banner for unit test coverage in your Documentation page/file.
  • Link to your application web page.
  • Usage of AI - if you did not use AI this must be mentioned in the documentation in a separate paragraph as well. Explain what did you use AI for. Did AI excel at all tasks? Where were shortcomings?

Attention

The documentation must form a coherent whole. All the requirements presented in phases 1 and 2 are still mandatory if they are not overwritten by a new requirement. The documentation must still give an understandable overview of the parts that were not changed in this phase.

Scoring

The maximum score for the checkpoint is 20 points. Of these, 15 are team points and 5 are individual points.

  • If any requirements are not met, the team will lose points.
  • Team points are distributed as follows: 3 points for development tasks, 8 points for operations tasks, and 4 points for documentation tasks.
  • If a team member does not contribute and/or cannot answer individual questions, they will lose individual points.

Warning

Penalty for team member not present during the presentation

It is mandatory for all team members to attend the checkpoint presentation. If a team member is not present they will loose their 5 individual points and 50% of their project points. This means that if the teams project gets the maximum of 15 points the two members present will get 15 points from the team points and the member not present will get 7.5 and loose their individual 5 points as well.

Info

Personal points graded as follows:

  • Adhere to the 10 minute time window
  • Answer what is asked of you in a concise manner
  • Demonstrate application functionality and code familiarity
  • NB! Not fitting the demonstration into the 10 minute time window can result in ending the session, in which case, if any questions are unanswered, the team won't be able to earn those points.

Info

If a team member can not participate due to health related issues the must notify the TAs 24h beforehand and provide proof from familiy doctor.