62 lines
3.0 KiB
Markdown
62 lines
3.0 KiB
Markdown
---
|
|
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.
|