- You can find all Phase 1 deliverables on the Wiki page
- Phase 2 Deliverables
- Business requirements
- Infrastructure
- Diagrams
- Testing locally
- to get some help with application flow testing, click here
- Video
- Phase 3 Deliverables
-
Implement an API Gateway and a serverless function for client authentication using CPF (Brazilian ID number).
- Integrate with the authentication system to identify the client.
-
Implement CI/CD best practices, separating code into distinct repositories:
all repositories have the latest tag available
- Repository 1: Lambda function code (tag v1.0.0)
- Repository 2: Kubernetes infrastructure defined with Terraform (tag v1.0.0)
- Repository 3: Managed database infrastructure defined with Terraform (tag v1.0.0)
- Repository 4: Application code deployed to Kubernetes (tag v1.0.0)
- Repository 5: Process domain events asynchronously (tag v1.0.0)
- Repository 6: Segregated repository for User management (AWS Cognito) (tag v1.0.0)
-
Configure automated deployments to the cloud account using actions for each repository:
- Protect
main
/master
branches to prevent direct commits. - Enforce pull requests for all code changes.
- Protect
-
Improve the chosen database's structure:
- Document the database design following data modelling standards.
- Justify the chosen database technology.
-
You are free to choose your preferred cloud provider but must utilize serverless services:
- Functions: AWS Lambda, Azure Functions, or Google Cloud Functions (or similar).
- Managed Databases: AWS RDS, Azure SQL Database, Google Cloud SQL (or similar).
- Authentication Systems: AWS Cognito, Microsoft Azure Active Directory, Google Cloud Identity Platform (or similar).
-
- Phase 4 Deliverables
- Refactor the project, separating it into at least three (3) microservices.
-
- Using DynamoDB as database
- BDD
-
- Using Redis as database
- BDD
-
- Using MySql as database
- BDD
-
- Video
- Refactor the project, separating it into at least three (3) microservices.
Pipeline flow
graph TD
subgraph Infrastructure
bmb.infra["bmb.infra"]
end
subgraph Storage
bmb.database["bmb.database"]
bmb.users["bmb.users"]
end
subgraph API
bmb.api["bmb.api"]
end
subgraph Integration
bmb.authenticator["bmb.authenticator"]
bmb.events.processor["bmb.events.processor"]
end
bmb.api --> bmb.users
bmb.api --> bmb.database
bmb.api --> bmb.infra
bmb.database --> bmb.infra
bmb.authenticator --> bmb.api
bmb.events.processor --> bmb.api