Files
calminer/docs/architecture/07_deployment_view.md

3.0 KiB

title, description, status
title description status
07 — Deployment View Describe deployment topology, infrastructure components, and environments (dev/stage/prod). draft

07 — Deployment View

Deployment Topology

The CalMiner application is deployed using a multi-tier architecture consisting of the following layers:

  1. Client Layer: This layer consists of web browsers that interact with the application through a user interface rendered by Jinja2 templates and enhanced with JavaScript (Chart.js for dashboards).
  2. Web Application Layer: This layer hosts the FastAPI application, which handles API requests, business logic, and serves HTML templates. It communicates with the database layer for data persistence.
  3. Database Layer: This layer consists of a PostgreSQL database that stores all application data, including scenarios, parameters, costs, consumption, production outputs, equipment, maintenance logs, and simulation results.
  4. Caching Layer: This layer uses Redis to cache frequently accessed data and improve application performance.

Infrastructure Components

The infrastructure components for the application include:

  • Web Server: Hosts the FastAPI application and serves API endpoints.
  • Database Server: PostgreSQL database for persisting application data.
  • Static File Server: Serves static assets such as CSS, JavaScript, and image files.
  • Reverse Proxy (optional): An Nginx or Apache server can be used as a reverse proxy.
  • CI/CD Pipeline (optional): Automated deployment pipelines can be set up using tools like GitHub Actions.
  • Containerization (optional): Docker can be used to containerize the application.
  • Cloud Infrastructure (optional): The application can be deployed on cloud platforms.

Environments

The application can be deployed in multiple environments to support development, testing, and production:

Development Environment

The development environment is set up for local development and testing. It includes:

  • Local PostgreSQL instance
  • FastAPI server running in debug mode

Testing Environment

The testing environment is set up for automated testing and quality assurance. It includes:

  • Staging PostgreSQL instance
  • FastAPI server running in testing mode
  • Automated test suite (e.g., pytest) for running unit and integration tests

Production Environment

The production environment is set up for serving live traffic and includes:

  • Production PostgreSQL instance
  • FastAPI server running in production mode
  • Load balancer (e.g., Nginx) for distributing incoming requests
  • Monitoring and logging tools for tracking application performance
  • Persistence of results: /api/simulations/run currently returns in-memory results; next iteration should persist to simulation_result and reference scenarios.
  • Deployment: documentation focuses on local development; containerization and CI/CD pipelines remain to be defined. Consider Docker + GitHub Actions or a simple Docker Compose for local stacks.