Skip to content
@soat-tech-challenge

FIAP Pós Tech - Software Architecture - Tech Challenge

Repositories for the "Tech Challenge" group project (2023 SOAT1 Group 63) from FIAP Pós Tech's Software Architecture course

FIAP Pós Tech - Software Architecture - Tech Challenge

Repositories for the "Tech Challenge" group project (2023 SOAT1 Group 63) from FIAP Pós Tech's Software Architecture course.

Project

The project goal was to study software architecture related topics by creating a self-service and kitchen managment service for a fictional restaurant.

The client may identifiy itself; Checkout an order; Confirm it; Pay it via an external payment service, and the order could be then processed by the kitchen employees.

Phases

The project and the course itself are divided in several 'phases' each one covering some software architecture-related topics. Some of these topics required code rewriting, refactoring and repository splitting.

Therefore there are releases in each repo for each phase they were relevant and what topics were covered in them.

Details and diagrams of each phase

Phase 1

  • Monolithic Spring Boot application with PostgreSQL
  • Hexagonal (Ports and Adapters) architecture
  • Domain Driver Design brainstorming
DDD diagrams

Phase 1 DDD

  • Dockerfile and docker-compose.yml files created

Phase 2

  • Replaced docker-compose.yml with Kubernetes config
  • Project rewritten using Clean architecture

Phase 3

  • Refactored project for use within AWS
    • Created Lambda identification flow (JWT auth)
  • Created initial Terraform files, for use with Terraform Cloud
  • Set up Github Actions workflows
    • Maven build and semver bump
    • Push/Deploy to Docker Hub and AWS
    • Terraform Cloud remote plan, apply and destroy

Phase 3 Client flow AWS diagram

Phase 4

  • Backend was split into 4 microservices
    • Two of them now use DynamoDB instead of PostgreSQL
  • Sonarcloud set up. For Maven projects CI-based analysis was used (for Java code coverage via Jacoco)
  • Unit and behavior tests were created using Cucumber and JUnit.
  • Terraform files modified for use with Vocareum Labs via AWS Academy, provided by the course.

Phase 4 Client flow AWS diagram

Phase 5

  • Use SAGA pattern in payment flow
    • Using AWS SQS
  • Create OWASP ZAP and LGPD RIPD reports.

Phase 5 diagram

Versioning

The repos in this organization mostly follow semver, but the major version corresponds to the project's target phase at the time of commit. E.g: v4.X.X -> Phase 4

Hackaton

In the course there was a Hackaton, which had a similar but smaller project.

The goal was to develop a system to manage employee's time cards. It could generate reports and send emails, among other requirements. The repositories for this project can also be found in this organization.

Diagrams

Hackaton

We also made a diagram for a more feature rich version of the project, although it was not necessary to implement it. Hackaton Phase 2

Group members

Popular repositories

  1. backend backend Public

    Backend of a self service and kitchen manegement system for a fictional fast food restaurant. Made with Spring Boot

    Java

  2. terraform-database terraform-database Public

    Terraform files for database-related services

    HCL

  3. lambda-identification-nationalid lambda-identification-nationalid Public

    Lambda function to handle autentication by national id of a self service and kitchen manegement system for a fictional fast food restaurant.

    JavaScript

  4. terraform-computing terraform-computing Public

    Terraform files for computing-related services

    HCL

  5. terraform-network terraform-network Public

    Terraform files for network-related services

    HCL

  6. lambda-authorizer-client lambda-authorizer-client Public

    Lambda authorizer function which simply validates incoming JWT and returns if it's valid (RSA pub key only, no issuer, oidc, etc)

    JavaScript

Repositories

Showing 10 of 18 repositories

Top languages

Loading…

Most used topics

Loading…