In this lab, you will design and implement either a frontend or backend application using your chosen framework, adhering to core principles of distributed systems and cloud-native development. Follow the instructions carefully, ensuring proper external configuration and applying the 12-factor methodology.
Put your names, repos and technologies into the spreadsheet. Don't reuse technologies already listed.
-
Application Setup
- Choose a framework (frontend or backend) for your application.
- Implement the provided
REST_API.json
specifications from either a client or server perspective.
-
Configuration and 12-Factor Compliance
- Externalized Configuration: Ensure all configurations are externalized—no hardcoded ports, URLs, or connection properties.
- 12-Factor Principles: Apply 12-factor app methodology, and document your approach for each factor applied.
- Documentation: Comment your code and write a short summary explaining how you applied the 12-factor principles.
-
Containerization
- Docker: Write Dockerfiles to containerize your application.
- Docker Compose: Set up a
docker-compose.yml
file to define and run multi-container Docker applications. - Kubernetes: After Docker, create Kubernetes manifests (deployment files) for deploying your application in a Kubernetes environment.
-
CORS Settings
- Configure CORS to allow requests from all origins (note: this approach is temporary and potentially insecure in production environments).
-
Framework Selection
- Select a backend framework other than Spring Boot (consider using other JVM frameworks like Micronaut or Quarkus).
-
Documentation and Status Codes
- Implement in-code documentation using Swagger or a similar API documentation tool.
- Make sure to handle appropriate HTTP status codes in your responses.
-
Database Configuration
- Skip Database Configuration: Database setup will be covered in the following lab, so you do not need to implement it here.
-
Framework Selection
- Use a framework other than Python Flask that supports server-side rendering (SSR) for easier configuration and adaptability in distributed systems.
-
External Communication
- Ensure that the client application can communicate with the backend on a non-localhost network to simulate real-world deployment.
-
Status Code Handling
- Incorporate status code handling in your client code to ensure appropriate responses to successful and unsuccessful requests.
- Everything in an own git repo / Link in Spreadsheet. Repo must be public.
- Application code implementing
REST_API.json
specifications. - Dockerfile(s) and
docker-compose.yml
. - Short documentation on 12-factor principle application.
- If applicable, Kubernetes manifest files.
- Code documentation (comments and/or README). a. Provide instructions how to build, containerize and test app