3.0 KiB
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:
- 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).
- 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.
- 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.
- 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/runcurrently returns in-memory results; next iteration should persist tosimulation_resultand 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.