From 5195fb3bd22e5be1614647494006cd3896adc105 Mon Sep 17 00:00:00 2001 From: zanninso Date: Wed, 15 Nov 2023 02:57:39 +0100 Subject: [PATCH 1/8] docs: addes subject and audit for the travel-plan project --- subjects/java/projects/travel-plan/README.md | 41 ++++++++++ .../java/projects/travel-plan/audit/README.md | 76 +++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 subjects/java/projects/travel-plan/README.md create mode 100644 subjects/java/projects/travel-plan/audit/README.md diff --git a/subjects/java/projects/travel-plan/README.md b/subjects/java/projects/travel-plan/README.md new file mode 100644 index 0000000000..78b7ca7d85 --- /dev/null +++ b/subjects/java/projects/travel-plan/README.md @@ -0,0 +1,41 @@ +## Travel-Plan + +### Objectives + +The primary goal of this project is to construct a robust and scalable environment for the Travel Management System and to develop a comprehensive Admin Dashboard that serves as the control center for travel management operations. + +### Instructions + +#### 1. Environment Configuration + +In the initial phase of the Travel Management System, students will configure a microservices architecture following industry best practices to ensure scalability and high availability. This includes implementing multiple replicas of each microservice to support load balancing and failover mechanisms, essential for achieving system resilience and service continuity. The task encompasses the installation and configuration of PostgreSQL and Neo4j databases—both containerized for scalability and replication ease. A Continuous Integration/Continuous Delivery (CI/CD) pipeline, employing Jenkins and SonarQube, will automate code quality checks and testing. Docker, in synergy with Ansible, will facilitate the automated provisioning and deployment of the microservices and allied components. Ansible playbooks must be crafted to deploy every system element, ensuring consistency and scalability. The successful configuration will yield an automated, scalable infrastructure, setting the stage for the Admin Dashboard development and further Travel Management System features. + +#### 2. Development and Design + +- Craft an Admin Dashboard enabling administrators to oversee users, travels, and payment gateways. +- Ensure each travel entry includes a destination or trajectory, dates, duration, activities or itinerary, accommodation, and transportation details. +- Develop an authentication and authorization service to safeguard access and operations. +- Design a responsive and intuitive UI for the Admin Dashboard, ensuring cross-device and browser compatibility. +- Utilize any beneficial packages to enhance development efficiency, with the expectation to justify package selections during project reviews. + +#### 3. Best Practices & Ecosystem Familiarity + +- Adopt a collaborative development workflow using pull requests (PRs) for introducing changes and features. +- Perform thorough code reviews on each PR to maintain code integrity, security adherence, and best practice compliance. +- Integrate a CI/CD pipeline via Jenkins for seamless build, test, and deployment workflows of PRs. +- Ensure all PRs undergo a rigorous review process, securing approval before merging into the main codebase. + +#### 4. Security Measures + +- Implement SSL/TLS encryption for all data in transit. +- Ensure databases and services are accessible only within the internal network or via secure, authenticated endpoints. +- Use secret management tools like HashiCorp Vault to handle sensitive information like API keys and database credentials. +- Apply the principle of least privilege across all levels of the system, particularly in role-based access controls within the Admin Dashboard. +- Regularly update all components to patch known vulnerabilities and ensure compliance with security best practices. + +### Bonus + +- Compose clear and detailed documentation for the application and database schema. +- Incorporate Kubernetes alongside Ansible to enhance service management, orchestration, and load balancing capabilities. +- any other bonus that add a real value to the project. + diff --git a/subjects/java/projects/travel-plan/audit/README.md b/subjects/java/projects/travel-plan/audit/README.md new file mode 100644 index 0000000000..10f683221d --- /dev/null +++ b/subjects/java/projects/travel-plan/audit/README.md @@ -0,0 +1,76 @@ + +#### Comprehension + +##### Describe the microservices architecture implemented. + +###### Did the architecture effectively split functionalities into different microservices based on key factors like scalability and domain separation? + +##### Ask the student to explain one of the Ansible playbook + +###### did he/she clearly explain all the Ansible playbook + +##### Discuss the CI/CD pipeline setup. + +###### Was the CI/CD pipeline, integrating Jenkins and SonarQube, effectively used to improve the development process? + +##### Detail the security measures implemented. + +###### Were comprehensive security measures like SSL/TLS, secret management, and principle of least privilege correctly implemented? + +##### Explain the database schema for PostgreSQL and Neo4j. + +###### Did the data structure in PostgreSQL and Neo4j effectively support the application's requirements? + +#### Functional + +##### Verify the execution of Ansible playbooks. + +###### Did the Ansible playbooks execute without errors and configure the environment as intended? + +###### Were the playbooks able to handle re-running scenarios without causing disruptions or inconsistencies? + +##### Test each microservice API. + +###### Did all microservice APIs function correctly and handle errors effectively? + +##### Verify Admin Dashboard functionality. + +###### Did the Admin Dashboard correctly manage users, travels, and payment gateways? + +##### Test Authentication and Authorization. + +###### Was the authentication service robust and did the role-based access control function correctly? + +##### Simulate load on microservices. + +###### Did the microservices demonstrate effective load balancing and failover under heavy traffic? + +##### Verify Docker and Ansible setup. + +###### Were Docker containers and Ansible playbooks set up correctly and functionally? + +##### Validate CI/CD pipeline and code quality. + +###### Did the CI/CD pipeline function correctly for build, test, and deployment processes, and were code quality standards maintained? + +##### Review project documentation. + +###### Does the project documentation accurately describe the system architecture, database schemas, and setup instructions? + +##### Assess code review and best practices. + +###### Were coding standards, security best practices, and overall code quality maintained in recent pull requests? + +#### Bonus + +##### Documentation Quality + +###### +did the students provides a clear documentation about the application and the database? + +##### Kubernetes Incorporation + +###### +did the students Incorporate Kubernetes alongside Ansible to enhance service management, orchestration, and load balancing capabilities? + +##### Additional Bonuses + +###### +did the student added any valuable bonuses and it works fine without any error \ No newline at end of file From 5738d69b9ce200be6e5639701fb7d65254886f3b Mon Sep 17 00:00:00 2001 From: zanninso Date: Tue, 28 Nov 2023 02:42:11 +0100 Subject: [PATCH 2/8] docs: adding more details to the audit and the subject files --- subjects/java/projects/travel-plan/README.md | 27 +++++++++++++++++-- .../java/projects/travel-plan/audit/README.md | 22 ++++++++------- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/subjects/java/projects/travel-plan/README.md b/subjects/java/projects/travel-plan/README.md index 78b7ca7d85..162035cfd6 100644 --- a/subjects/java/projects/travel-plan/README.md +++ b/subjects/java/projects/travel-plan/README.md @@ -6,16 +6,38 @@ The primary goal of this project is to construct a robust and scalable environme ### Instructions +This is the first part of the last project and for this part the students will be asked to build the working enviroment and impliment the admin part to ease the last part for the project. + #### 1. Environment Configuration -In the initial phase of the Travel Management System, students will configure a microservices architecture following industry best practices to ensure scalability and high availability. This includes implementing multiple replicas of each microservice to support load balancing and failover mechanisms, essential for achieving system resilience and service continuity. The task encompasses the installation and configuration of PostgreSQL and Neo4j databases—both containerized for scalability and replication ease. A Continuous Integration/Continuous Delivery (CI/CD) pipeline, employing Jenkins and SonarQube, will automate code quality checks and testing. Docker, in synergy with Ansible, will facilitate the automated provisioning and deployment of the microservices and allied components. Ansible playbooks must be crafted to deploy every system element, ensuring consistency and scalability. The successful configuration will yield an automated, scalable infrastructure, setting the stage for the Admin Dashboard development and further Travel Management System features. +##### Configure a Microservices Architecture: +- Follow industry best practices for scalability and high availability. +- Implement multiple replicas of each microservice for load balancing and failover mechanisms. + +##### Database Installation and Configuration: +- Set up PostgreSQL and Neo4j databases. +- Ensure databases are containerized to facilitate scalability and replication. + +##### Continuous Integration/Continuous Delivery (CI/CD) Pipeline: +- Employ Jenkins for CI/CD and unit testing. +- Employ SonarQube for automating code quality checks + +##### Use of Docker and Ansible: +- Docker to support automated provisioning and deployment of microservices. +- Ansible for creating playbooks to deploy all system elements consistently and scalably. + +##### Outcome: +- Achieve an automated, scalable infrastructure. +- Prepare the groundwork for Admin Dashboard development and additional features of the Travel Management System.* #### 2. Development and Design - Craft an Admin Dashboard enabling administrators to oversee users, travels, and payment gateways. +- the admin should be able to add, edit or delete any user, travel, payment method and all the related part correctly (cascading!!!) - Ensure each travel entry includes a destination or trajectory, dates, duration, activities or itinerary, accommodation, and transportation details. +- for the payment gatways you can search about it to know what you need to support the most you have to support at least strip and paypal. - Develop an authentication and authorization service to safeguard access and operations. -- Design a responsive and intuitive UI for the Admin Dashboard, ensuring cross-device and browser compatibility. +- Design a responsive and intuitive UI for the Admin Dashboard that shows well in diffirent screen sizes, ensuring browser compatibility at least for mozila and chrome. - Utilize any beneficial packages to enhance development efficiency, with the expectation to justify package selections during project reviews. #### 3. Best Practices & Ecosystem Familiarity @@ -37,5 +59,6 @@ In the initial phase of the Travel Management System, students will configure a - Compose clear and detailed documentation for the application and database schema. - Incorporate Kubernetes alongside Ansible to enhance service management, orchestration, and load balancing capabilities. +- impliment integration tests and E2E tests one of them or both of them. - any other bonus that add a real value to the project. diff --git a/subjects/java/projects/travel-plan/audit/README.md b/subjects/java/projects/travel-plan/audit/README.md index 10f683221d..3ff4945c10 100644 --- a/subjects/java/projects/travel-plan/audit/README.md +++ b/subjects/java/projects/travel-plan/audit/README.md @@ -1,7 +1,7 @@ #### Comprehension -##### Describe the microservices architecture implemented. +##### Ask the student to describe the microservices architecture implemented. ###### Did the architecture effectively split functionalities into different microservices based on key factors like scalability and domain separation? @@ -11,13 +11,15 @@ ##### Discuss the CI/CD pipeline setup. -###### Was the CI/CD pipeline, integrating Jenkins and SonarQube, effectively used to improve the development process? +###### is there unit tests for each functionality and are the test run for each PR. + +###### is SonarQube report free from any error or warning that can break the CI/CD Process. ##### Detail the security measures implemented. ###### Were comprehensive security measures like SSL/TLS, secret management, and principle of least privilege correctly implemented? -##### Explain the database schema for PostgreSQL and Neo4j. +##### Ask the student to explain the database schema for PostgreSQL and Neo4j. ###### Did the data structure in PostgreSQL and Neo4j effectively support the application's requirements? @@ -31,7 +33,9 @@ ##### Test each microservice API. -###### Did all microservice APIs function correctly and handle errors effectively? +###### Are all microservice APIs is role based and doesn't work with a admin role based user authenticated except the login api? + +###### Are all microservice APIs function correctly and handle errors effectively? ##### Verify Admin Dashboard functionality. @@ -41,7 +45,7 @@ ###### Was the authentication service robust and did the role-based access control function correctly? -##### Simulate load on microservices. +##### Ask the student to Simulate load on microservices. ###### Did the microservices demonstrate effective load balancing and failover under heavy traffic? @@ -53,13 +57,13 @@ ###### Did the CI/CD pipeline function correctly for build, test, and deployment processes, and were code quality standards maintained? -##### Review project documentation. +##### Assess code review and best practices. -###### Does the project documentation accurately describe the system architecture, database schemas, and setup instructions? +###### Is the code consistence and well structured, also do they follow naming convention in recent pull requests? -##### Assess code review and best practices. +###### Are all the used libraries supported and not deprecated and not having any depracted methods in use, in recent pull requests? -###### Were coding standards, security best practices, and overall code quality maintained in recent pull requests? +###### Are the security vulnerabilities found by sonar cube resolved in the pull requests ? #### Bonus From 2861bb57d990e082d711430495e287473b89fb9e Mon Sep 17 00:00:00 2001 From: zanninso Date: Tue, 5 Dec 2023 01:26:14 +0100 Subject: [PATCH 3/8] docs: fixing typos and adding more details to the audit and the subject files --- subjects/java/projects/travel-plan/README.md | 14 ++++++++------ subjects/java/projects/travel-plan/audit/README.md | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/subjects/java/projects/travel-plan/README.md b/subjects/java/projects/travel-plan/README.md index 162035cfd6..8e0c3415fd 100644 --- a/subjects/java/projects/travel-plan/README.md +++ b/subjects/java/projects/travel-plan/README.md @@ -28,17 +28,19 @@ This is the first part of the last project and for this part the students will b ##### Outcome: - Achieve an automated, scalable infrastructure. -- Prepare the groundwork for Admin Dashboard development and additional features of the Travel Management System.* +- Prepare the groundwork for Admin Dashboard development and additional features of the Travel Management System. #### 2. Development and Design - Craft an Admin Dashboard enabling administrators to oversee users, travels, and payment gateways. -- the admin should be able to add, edit or delete any user, travel, payment method and all the related part correctly (cascading!!!) -- Ensure each travel entry includes a destination or trajectory, dates, duration, activities or itinerary, accommodation, and transportation details. -- for the payment gatways you can search about it to know what you need to support the most you have to support at least strip and paypal. -- Develop an authentication and authorization service to safeguard access and operations. -- Design a responsive and intuitive UI for the Admin Dashboard that shows well in diffirent screen sizes, ensuring browser compatibility at least for mozila and chrome. +- the admin should be able to add, edit or delete any user, travel, payment method and all the related part correctly (database cascading!!!) +- Ensure each travel entry includes a destination or multiple destinations, dates, duration, activities, accommodation, and transportation details. +- for the payment methods you can search about it to know what you need to support the most you have to support at least strip and paypal. +- Develop an authentication and authorization service to safeguard access and operations to the Admin Dashboard. +- Design a responsive and intuitive UI for the Admin Dashboard that shows well in diffirent screen sizes, ensuring browser compatibility at least for Mozilla and Chrome. - Utilize any beneficial packages to enhance development efficiency, with the expectation to justify package selections during project reviews. +- every feature should have it's unit tests to ensure the the new modifications doesn't break the code. + #### 3. Best Practices & Ecosystem Familiarity diff --git a/subjects/java/projects/travel-plan/audit/README.md b/subjects/java/projects/travel-plan/audit/README.md index 3ff4945c10..6ecad289ec 100644 --- a/subjects/java/projects/travel-plan/audit/README.md +++ b/subjects/java/projects/travel-plan/audit/README.md @@ -11,9 +11,9 @@ ##### Discuss the CI/CD pipeline setup. -###### is there unit tests for each functionality and are the test run for each PR. +###### is there unit tests for each functionality and are the test run for each PR? -###### is SonarQube report free from any error or warning that can break the CI/CD Process. +###### is SonarQube report free from any error or warning that can break the CI/CD Process? ##### Detail the security measures implemented. From bf74201108d1354b07c56abdfafc31c3397d908b Mon Sep 17 00:00:00 2001 From: zanninso Date: Tue, 19 Dec 2023 01:44:13 +0100 Subject: [PATCH 4/8] docs: fixing gammar error and adding ref links --- subjects/java/projects/travel-plan/README.md | 18 +++++++------- .../java/projects/travel-plan/audit/README.md | 24 +++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/subjects/java/projects/travel-plan/README.md b/subjects/java/projects/travel-plan/README.md index 8e0c3415fd..06d10a96c7 100644 --- a/subjects/java/projects/travel-plan/README.md +++ b/subjects/java/projects/travel-plan/README.md @@ -6,7 +6,7 @@ The primary goal of this project is to construct a robust and scalable environme ### Instructions -This is the first part of the last project and for this part the students will be asked to build the working enviroment and impliment the admin part to ease the last part for the project. +This is the first part of the last project and for this part, the students will be asked to build the working environment and implement the admin part to ease the last part of the project. #### 1. Environment Configuration @@ -20,7 +20,7 @@ This is the first part of the last project and for this part the students will b ##### Continuous Integration/Continuous Delivery (CI/CD) Pipeline: - Employ Jenkins for CI/CD and unit testing. -- Employ SonarQube for automating code quality checks +- Employ SonarQube to automate code quality checks ##### Use of Docker and Ansible: - Docker to support automated provisioning and deployment of microservices. @@ -33,13 +33,13 @@ This is the first part of the last project and for this part the students will b #### 2. Development and Design - Craft an Admin Dashboard enabling administrators to oversee users, travels, and payment gateways. -- the admin should be able to add, edit or delete any user, travel, payment method and all the related part correctly (database cascading!!!) +- The admin should be able to add, edit or delete any user, travel, payment method and all the related parts correctly (think about database cascading update and delete). - Ensure each travel entry includes a destination or multiple destinations, dates, duration, activities, accommodation, and transportation details. -- for the payment methods you can search about it to know what you need to support the most you have to support at least strip and paypal. +- For the payment methods you can search about it to know what you need to support the most you have to support at least [Stripe](https://stripe.com/docs/development) and [PayPal](https://developer.paypal.com/home). - Develop an authentication and authorization service to safeguard access and operations to the Admin Dashboard. -- Design a responsive and intuitive UI for the Admin Dashboard that shows well in diffirent screen sizes, ensuring browser compatibility at least for Mozilla and Chrome. +- Design a responsive and intuitive UI for the Admin Dashboard that shows well in different screen sizes, ensuring browser compatibility at least for Mozilla and Chrome. - Utilize any beneficial packages to enhance development efficiency, with the expectation to justify package selections during project reviews. -- every feature should have it's unit tests to ensure the the new modifications doesn't break the code. +- Every feature should have its unit tests to ensure the the new modifications don't break the code. #### 3. Best Practices & Ecosystem Familiarity @@ -60,7 +60,7 @@ This is the first part of the last project and for this part the students will b ### Bonus - Compose clear and detailed documentation for the application and database schema. -- Incorporate Kubernetes alongside Ansible to enhance service management, orchestration, and load balancing capabilities. -- impliment integration tests and E2E tests one of them or both of them. -- any other bonus that add a real value to the project. +- Incorporate Kubernetes alongside Ansible to enhance service management, orchestration, and load-balancing capabilities. +- Implement integration tests and E2E tests one of them or both of them. +- Any other bonus that adds real value to the project. diff --git a/subjects/java/projects/travel-plan/audit/README.md b/subjects/java/projects/travel-plan/audit/README.md index 6ecad289ec..24f03c7970 100644 --- a/subjects/java/projects/travel-plan/audit/README.md +++ b/subjects/java/projects/travel-plan/audit/README.md @@ -7,17 +7,17 @@ ##### Ask the student to explain one of the Ansible playbook -###### did he/she clearly explain all the Ansible playbook +###### Did he/she clearly explain all the Ansible playbook ##### Discuss the CI/CD pipeline setup. -###### is there unit tests for each functionality and are the test run for each PR? +###### Is there unit tests for each functionality and are the test run for each PR? -###### is SonarQube report free from any error or warning that can break the CI/CD Process? +###### Is the SonarQube report free from any error or warning that can break the CI/CD Process? ##### Detail the security measures implemented. -###### Were comprehensive security measures like SSL/TLS, secret management, and principle of least privilege correctly implemented? +###### Were comprehensive security measures like SSL/TLS, secret management, and the principle of least privilege correctly implemented? ##### Ask the student to explain the database schema for PostgreSQL and Neo4j. @@ -33,9 +33,9 @@ ##### Test each microservice API. -###### Are all microservice APIs is role based and doesn't work with a admin role based user authenticated except the login api? +###### Are all microservice APIs role-based and don't work with an admin role-based user authenticated except the login API? -###### Are all microservice APIs function correctly and handle errors effectively? +###### Are all microservice APIs functioning correctly and handling errors effectively? ##### Verify Admin Dashboard functionality. @@ -59,22 +59,22 @@ ##### Assess code review and best practices. -###### Is the code consistence and well structured, also do they follow naming convention in recent pull requests? +###### Is the code consistence and well structured, also do they follow naming conventions in recent pull requests? -###### Are all the used libraries supported and not deprecated and not having any depracted methods in use, in recent pull requests? +###### Are all the used libraries supported and not deprecated and not having any deprecated methods in use, in recent pull requests? -###### Are the security vulnerabilities found by sonar cube resolved in the pull requests ? +###### Are the security vulnerabilities found by SonarQube resolved in the pull requests? #### Bonus ##### Documentation Quality -###### +did the students provides a clear documentation about the application and the database? +###### +Did the students provide clear documentation about the application and the database? ##### Kubernetes Incorporation -###### +did the students Incorporate Kubernetes alongside Ansible to enhance service management, orchestration, and load balancing capabilities? +###### +Did the students Incorporate Kubernetes alongside Ansible to enhance service management, orchestration, and load-balancing capabilities? ##### Additional Bonuses -###### +did the student added any valuable bonuses and it works fine without any error \ No newline at end of file +###### +Did the student add any valuable bonuses and it works fine without any error \ No newline at end of file From 45d09ace52eb2952b1f1eccfd835796980af8a26 Mon Sep 17 00:00:00 2001 From: zanninso Date: Thu, 21 Dec 2023 03:42:10 +0100 Subject: [PATCH 5/8] docs: adding more details and improve some questions. --- .../java/projects/travel-plan/audit/README.md | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/subjects/java/projects/travel-plan/audit/README.md b/subjects/java/projects/travel-plan/audit/README.md index 24f03c7970..241fa5d1e6 100644 --- a/subjects/java/projects/travel-plan/audit/README.md +++ b/subjects/java/projects/travel-plan/audit/README.md @@ -3,7 +3,23 @@ ##### Ask the student to describe the microservices architecture implemented. -###### Did the architecture effectively split functionalities into different microservices based on key factors like scalability and domain separation? +###### Have you clearly defined the boundaries for each microservice based on business domains? + +###### Do your microservices align directly with specific business functions? + +###### Are your microservices designed to operate independently of one another? + +###### Can each microservice be deployed, updated, and scaled without affecting others? + +###### Is your architecture designed to support the independent scalability of each microservice? + +###### Does your system maintain functionality even when one or more services fail? + +###### Is there an API Gateway in your architecture to manage incoming requests? + +###### Can you track and trace a request across multiple services easily? + +###### Are communications between your microservices secured? ##### Ask the student to explain one of the Ansible playbook @@ -11,7 +27,7 @@ ##### Discuss the CI/CD pipeline setup. -###### Is there unit tests for each functionality and are the test run for each PR? +###### Are there unit tests for each functionality and are the test runs for each PR? ###### Is the SonarQube report free from any error or warning that can break the CI/CD Process? @@ -33,13 +49,15 @@ ##### Test each microservice API. -###### Are all microservice APIs role-based and don't work with an admin role-based user authenticated except the login API? +###### Are all the microservices' APIs only accessible when logged in with an Admin profile? ###### Are all microservice APIs functioning correctly and handling errors effectively? -##### Verify Admin Dashboard functionality. +##### Admin should be able to perform CRUD operations for users, travelers and payment methods. For each "entity" try to create, read, update and delete. + +###### Is everything working as expected? -###### Did the Admin Dashboard correctly manage users, travels, and payment gateways? +###### Are errors handled correctly? ##### Test Authentication and Authorization. @@ -61,7 +79,7 @@ ###### Is the code consistence and well structured, also do they follow naming conventions in recent pull requests? -###### Are all the used libraries supported and not deprecated and not having any deprecated methods in use, in recent pull requests? +###### Are all the used libraries supported and not deprecated and not having any deprecated methods in use, in recent pull requests check SonarQube? ###### Are the security vulnerabilities found by SonarQube resolved in the pull requests? From df22653183926cd8443c195d51ca5390b26d0799 Mon Sep 17 00:00:00 2001 From: zanninso Date: Thu, 21 Dec 2023 18:31:33 +0100 Subject: [PATCH 6/8] docs: fix typos and adding more details for clarity. --- subjects/java/projects/travel-plan/README.md | 11 +++++++---- .../java/projects/travel-plan/audit/README.md | 16 ++++++++-------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/subjects/java/projects/travel-plan/README.md b/subjects/java/projects/travel-plan/README.md index 06d10a96c7..ee2338f328 100644 --- a/subjects/java/projects/travel-plan/README.md +++ b/subjects/java/projects/travel-plan/README.md @@ -24,7 +24,10 @@ This is the first part of the last project and for this part, the students will ##### Use of Docker and Ansible: - Docker to support automated provisioning and deployment of microservices. -- Ansible for creating playbooks to deploy all system elements consistently and scalably. +- Ansible for creating playbooks to deploy all system elements consistently and in a scalable way. + +##### Logging +- Implement some sort of logging system to be able to track and trace requests across multiple services. ##### Outcome: - Achieve an automated, scalable infrastructure. @@ -35,11 +38,11 @@ This is the first part of the last project and for this part, the students will - Craft an Admin Dashboard enabling administrators to oversee users, travels, and payment gateways. - The admin should be able to add, edit or delete any user, travel, payment method and all the related parts correctly (think about database cascading update and delete). - Ensure each travel entry includes a destination or multiple destinations, dates, duration, activities, accommodation, and transportation details. -- For the payment methods you can search about it to know what you need to support the most you have to support at least [Stripe](https://stripe.com/docs/development) and [PayPal](https://developer.paypal.com/home). +- For the payment methods you can search about it to know what you need to do to support at least [Stripe](https://stripe.com/docs/development) and [PayPal](https://developer.paypal.com/home). - Develop an authentication and authorization service to safeguard access and operations to the Admin Dashboard. - Design a responsive and intuitive UI for the Admin Dashboard that shows well in different screen sizes, ensuring browser compatibility at least for Mozilla and Chrome. - Utilize any beneficial packages to enhance development efficiency, with the expectation to justify package selections during project reviews. -- Every feature should have its unit tests to ensure the the new modifications don't break the code. +- Every feature should have its unit tests to ensure the new modifications don't break the code. #### 3. Best Practices & Ecosystem Familiarity @@ -61,6 +64,6 @@ This is the first part of the last project and for this part, the students will - Compose clear and detailed documentation for the application and database schema. - Incorporate Kubernetes alongside Ansible to enhance service management, orchestration, and load-balancing capabilities. -- Implement integration tests and E2E tests one of them or both of them. +- Implement integration and/or E2E tests - Any other bonus that adds real value to the project. diff --git a/subjects/java/projects/travel-plan/audit/README.md b/subjects/java/projects/travel-plan/audit/README.md index 241fa5d1e6..2d0b84114e 100644 --- a/subjects/java/projects/travel-plan/audit/README.md +++ b/subjects/java/projects/travel-plan/audit/README.md @@ -27,7 +27,7 @@ ##### Discuss the CI/CD pipeline setup. -###### Are there unit tests for each functionality and are the test runs for each PR? +###### Are there unit tests for each functionality and are the tests running for each new PR? ###### Is the SonarQube report free from any error or warning that can break the CI/CD Process? @@ -47,12 +47,14 @@ ###### Were the playbooks able to handle re-running scenarios without causing disruptions or inconsistencies? +##### Verify Docker and Ansible setup. + +###### Were Docker containers and Ansible playbooks set up correctly and functionally? + ##### Test each microservice API. ###### Are all the microservices' APIs only accessible when logged in with an Admin profile? -###### Are all microservice APIs functioning correctly and handling errors effectively? - ##### Admin should be able to perform CRUD operations for users, travelers and payment methods. For each "entity" try to create, read, update and delete. ###### Is everything working as expected? @@ -67,10 +69,6 @@ ###### Did the microservices demonstrate effective load balancing and failover under heavy traffic? -##### Verify Docker and Ansible setup. - -###### Were Docker containers and Ansible playbooks set up correctly and functionally? - ##### Validate CI/CD pipeline and code quality. ###### Did the CI/CD pipeline function correctly for build, test, and deployment processes, and were code quality standards maintained? @@ -79,7 +77,9 @@ ###### Is the code consistence and well structured, also do they follow naming conventions in recent pull requests? -###### Are all the used libraries supported and not deprecated and not having any deprecated methods in use, in recent pull requests check SonarQube? +##### Check SonarQube logs in recent pull requests. + +###### is the log free of warnings about unsupported or deprecated libraries? ###### Are the security vulnerabilities found by SonarQube resolved in the pull requests? From cfb33ef1b027c485124d6961df631515658a3bd6 Mon Sep 17 00:00:00 2001 From: zanninso Date: Mon, 25 Dec 2023 02:24:12 +0100 Subject: [PATCH 7/8] docs: fix typo and removing unnecessary question. --- subjects/java/projects/travel-plan/audit/README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/subjects/java/projects/travel-plan/audit/README.md b/subjects/java/projects/travel-plan/audit/README.md index 2d0b84114e..efe3475ebc 100644 --- a/subjects/java/projects/travel-plan/audit/README.md +++ b/subjects/java/projects/travel-plan/audit/README.md @@ -19,8 +19,6 @@ ###### Can you track and trace a request across multiple services easily? -###### Are communications between your microservices secured? - ##### Ask the student to explain one of the Ansible playbook ###### Did he/she clearly explain all the Ansible playbook @@ -75,11 +73,15 @@ ##### Assess code review and best practices. +###### Is the code consistent and well-structured? + +###### Are all pull requests following naming conventions such as (Camel Case, Pascal Case, ...), Consistency, clarity and descriptiveness? + ###### Is the code consistence and well structured, also do they follow naming conventions in recent pull requests? ##### Check SonarQube logs in recent pull requests. -###### is the log free of warnings about unsupported or deprecated libraries? +###### Is the log free of warnings about unsupported or deprecated libraries? ###### Are the security vulnerabilities found by SonarQube resolved in the pull requests? From e95689bbfd36a375552e2070d33d48049c8e0ade Mon Sep 17 00:00:00 2001 From: zanninso Date: Wed, 3 Jan 2024 16:59:44 +0100 Subject: [PATCH 8/8] docs: removing unnecessary question. --- subjects/java/projects/travel-plan/audit/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/subjects/java/projects/travel-plan/audit/README.md b/subjects/java/projects/travel-plan/audit/README.md index efe3475ebc..43ddef72ad 100644 --- a/subjects/java/projects/travel-plan/audit/README.md +++ b/subjects/java/projects/travel-plan/audit/README.md @@ -21,7 +21,7 @@ ##### Ask the student to explain one of the Ansible playbook -###### Did he/she clearly explain all the Ansible playbook +###### Did he/she clearly explain all the Ansible playbook? ##### Discuss the CI/CD pipeline setup. @@ -77,8 +77,6 @@ ###### Are all pull requests following naming conventions such as (Camel Case, Pascal Case, ...), Consistency, clarity and descriptiveness? -###### Is the code consistence and well structured, also do they follow naming conventions in recent pull requests? - ##### Check SonarQube logs in recent pull requests. ###### Is the log free of warnings about unsupported or deprecated libraries?