Checkpoint 2¶
Checkpoint 2 happens during the 8th week of the course, during phase 2, where the main topics were authentication, real-time updates, deployment to a virtual machine, observability and automated CI/CD pipeline.
Introduction¶
During the checkpoint, you are asked to demonstrate the development, operations, and documentation requirements of phase 2. While all the tasks are mandatory to complete, we will ask only a subset of them to demonstrate your knowledge.
The process is rather straightforward:
- Prepare your project, systems, and team for the checkpoint.
- 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.
- Connect your devices, and prepare to present.
- 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 10 team-wide points which everyone shares.
- During the presentation, we will also direct specific questions to random members of the team.
- This is to earn the 5 individual points.
- 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.
- 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 need to be familar with their project
Development requirements¶
Functionalities that are to be demonstrated live:
- Show us if the application works without signing up
- Show us how account creation works - username, passwords, logging in
- Show us how to create anonymous posts
- Show us how a user stays in control of their posts - anonymous, public, private, posts with username attached
- Show us how to change the user's password
- Show us how to make a public post private and demonstrate that it is removed from the feed
- Show us how your bidirectional communication protocol performs
- Show us how your voting logic works
- Show us how your API endpoints require authentication
- Show us whether the XSS mitigation works
Operational requirements¶
Persistent storage:
- Demonstrate how data persistence is ensured - no data loss may occur when restarting the server.
Unit tests:
- Demonstrate that your backend code has at least 50 % of unit test coverage.
- Demonstrate three unit tests and a logic error that causes a test to fail.
- (You can prepare this beforehand.)
Deployment to the cloud:
- Demonstrate with a succeeded pipeline how your application gets deployed to the cloud.
- (You can prepare this beforehand.)
Secrets detection:
- Demonstrate how your pipeline fails with exposed secrets in the pipeline logs.
- (You can prepare this beforehand.)
Observability: - Demonstrate which metrics your application exposes, and where they get the data from. - Make sure you can demonstrate the mandatory app_build_info metric with some version label. - (You can prepare this beforehand.)
Documentation requirements¶
Documentation must include everything that has been described in the previous labs' guides. This includes:
- How the application is deployed to the cloud.
- Implementation of real-time updates
- Authentication system implementation
- Database and data structure overview
- Cross-Site Scripting mitigation
- Overview of CI/CD pipeline Secrets detection
- How the automatic deployment to the cloud is implemented
Analysis¶
Both analysis artifacts from the week 7 lab guide must exist in your repository (recommended paths as follows):
docs/analysis/phase2-stack-review.mddocs/analysis/phase2-delivery-metrics.md
During the checkpoint we will ask you to:
- Open
docs/analysis/phase2-stack.mdand walk us through your predicted difficulties, and how they fared against real life. - Open
docs/analysis/phase2-delivery-metrics.mdand explain the phase 2 additions to the table: which metris you're using, where they get data from, what you consider to be a deployment and a failure.
Info
There is no single correct answer to either analysis. Two teams can result in completely different justifications to their metrics. We are grading the reasoning, not the choice.
Scoring¶
The maximum score for the checkpoint is 15 points. Of these, 10 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: 5 points for development tasks, 5 points for operations tasks, and 2 points for documentation tasks, and 3 points for analysis 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 lose points - how much depends on communication with the other team members, and analysis of the git history.
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.