[Planning] Setup Initial Project Structure and Issues for Bug Tracker MVP
Original Requirements
Il Dipartimento per la Trasformazione Digitale ha bisogno di un semplice applicativo web per raccogliere i bug riscontrati lungo lo sviluppo dei suoi progetti. L'applicativo dovrà avere:
-
Un deploy su una piattaforma cloud a scelta con una o più pipeline di continuous integration e continuous deployment
-
Una REST API che permetta di:
- Inserire un nuovo bug, che accetti il nome della persona che segnala il bug e l'oggetto della segnalazione. La chiamata registra i dati e aggiunge automaticamente l'orario della richiesta
- Visualizzare tutti i bug inseriti nel sistema
-
Una semplice interfaccia grafica per l'interazione con l'API REST (inserire le segnalazioni e visualizzarle)
-
Requisiti ambientali:
- Lo stesso software deve poter essere eseguito sia in un ambiente di sviluppo, durante le fasi di test, sia in un ambiente di produzione
- La REST API ritorna in modalità sviluppo nelle sue risposte anche la versione dell'API
- L'interfaccia grafica palesa tale modalità all'utente
Project Scope
Based on these requirements, we need to create a complete infrastructure and deployment pipeline using:
- Google Cloud Platform as our cloud provider
- FastAPI for the backend
- PostgreSQL for data storage
- Kubernetes (GKE) for deployment
- GitLab CI for pipelines
- Kustomize for Kubernetes manifests management
User Story
As a Product Owner, I need to organize and plan the development of the bug tracking system by creating all necessary issues and establishing their dependencies to ensure a clear development path for the MVP.
Description
Create and organize all necessary issues for the bug tracking system MVP, following the requirements from the exercise and establishing proper dependencies between infrastructure, application, and deployment tasks.
Tasks
-
Create Infrastructure Issues:
-
Project Setup and API Enablement - Labels: infrastructure, tool::terraform, priority::highest
- Milestone: MVP Development
-
VPC Configuration with Terragrunt - Labels: infrastructure, tool::terragrunt, priority::highest
- Milestone: MVP Development
-
GKE Cluster Setup - Labels: infrastructure, kubernetes, priority::highest
- Milestone: MVP Development
-
PostgreSQL Instance Setup - Labels: infrastructure, database, priority::highest
- Milestone: MVP Development
-
-
Create Application Issues:
-
Backend REST API Implementation - Labels: backend, fastapi, priority::high
- Milestone: MVP Development
-
Database Integration - Labels: backend, database, priority::high
- Milestone: MVP Development
-
Frontend Bug Report Form - Labels: frontend, priority::high
- Milestone: MVP Development
-
Environment Configuration - Labels: devops, priority::high
- Milestone: MVP Development
-
-
Create GitOps Issues:
-
Kubernetes Base Manifests - Labels: kubernetes, tool::kustomize, priority::high
- Milestone: MVP Development
-
Environment Overlays - Labels: kubernetes, tool::kustomize, priority::high
- Milestone: MVP Development
-
GitLab CI Pipeline Setup - Labels: cicd, tool::gitlab-ci, priority::high
- Milestone: MVP Development
-
Deployment Jobs Configuration - Labels: cicd, tool::gitlab-ci, priority::high
- Milestone: MVP Development
-
Dependencies Diagram
stateDiagram-v2
[*] --> IaC: Start
state IaC {
ProjectSetup: Project Setup & APIs
VPC: VPC Configuration
GKE: GKE Cluster
PostgreSQL: Cloud SQL
ProjectSetup --> VPC
VPC --> GKE
VPC --> PostgreSQL
}
state Application {
API: FastAPI Backend
UI: Frontend Form
DB: Database Integration
API --> UI
DB --> API
}
state GitOps {
Manifests: K8s Manifests
Pipeline: GitLab CI Pipeline
Deploy: Deployment Jobs
Manifests --> Pipeline
Pipeline --> Deploy
}
IaC --> Application: Infrastructure Ready
IaC --> GitOps: Clusters Available
Application --> GitOps: Trigger Deployments
note right of IaC
Priority: Highest
Must be completed first
end note
note right of Application
Priority: High
Depends on IaC
end note
note right of GitOps
Priority: High
Triggered by Application
end note
Technical Notes
- Issue Organization:
Projects Structure:
- bug-tracker-app/ # Main application repository
- Issue tracking for application development
- CI pipeline for building and testing
- bug-tracker-iaac/ # Infrastructure repository
- Issue tracking for infrastructure
- Terragrunt/Terraform code
- bug-tracker-gitops/ # GitOps repository
- Issue tracking for deployments
- Kubernetes manifests
- Deployment pipelines
-
Issue Dependencies:
- All application issues depend on infrastructure completion
- GitOps issues depend on both infrastructure and application
- Deployment jobs depend on pipeline configuration
-
Environment Considerations:
- Test environment needs to be ready first
- Production environment follows similar setup
- Each environment needs separate configurations
Definition of Done
-
All issues created and properly labeled -
Dependencies between issues established -
Milestones assigned to all issues -
Priority labels added -
Project boards configured -
Team members assigned to issues -
Documentation linked in relevant issues