Skip to content

[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:

  1. Un deploy su una piattaforma cloud a scelta con una o più pipeline di continuous integration e continuous deployment

  2. 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
  3. Una semplice interfaccia grafica per l'interazione con l'API REST (inserire le segnalazioni e visualizzarle)

  4. 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

  1. 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
  2. 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
  3. 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

  1. 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
  1. Issue Dependencies:

    • All application issues depend on infrastructure completion
    • GitOps issues depend on both infrastructure and application
    • Deployment jobs depend on pipeline configuration
  2. 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
Edited by Raffaele Vitiello