--- title: "07 — Deployment View" description: "Describe deployment topology, infrastructure components, and environments (dev/stage/prod)." status: 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 ## Integrations and Future Work (deployment-related) - **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.