Files
calminer-docs/architecture/07_deployment_view.md
zwitschi ad56c3c610 Initialize project documentation
Add architecture documentation and functional requirements for Calminer project

- Created Building Block View (05_building_block_view.md) detailing system architecture and component interactions.
- Developed Runtime View (06_runtime_view.md) outlining key user scenarios and interactions within the system.
- Established Deployment View (07_deployment_view.md) describing the infrastructure and mapping of building blocks to deployment components.
- Added README.md for architecture documentation structure.
- Introduced functional requirements (FR-001 to FR-010) covering scenario management, data import/export, reporting, user management, and collaboration features.
- Included templates for documenting requirements to ensure consistency across the project.
2025-11-08 19:49:07 +01:00

121 lines
5.7 KiB
Markdown

# Deployment View
<!--
The deployment view describes:
1. technical infrastructure used to execute your system, with infrastructure elements like geographical locations, environments, computers, processors, channels and net topologies as well as other infrastructure elements and
2. mapping of (software) building blocks to that infrastructure elements.
Often systems are executed in different environments, e.g. development environment, test environment, production environment. In such cases you should document all relevant environments.
Especially document a deployment view if your software is executed as distributed system with more than one computer, processor, server or container or when you design and construct your own hardware processors and chips.
From a software perspective it is sufficient to capture only those elements of an infrastructure that are needed to show a deployment of your building blocks. Hardware architects can go beyond that and describe an infrastructure to any level of detail they need to capture.
_Motivation:_ Software does not run without hardware. This underlying infrastructure can and will influence a system and/or some cross-cutting concepts. Therefore, there is a need to know the infrastructure.
_Form:_ Maybe a highest level deployment diagram is already contained in section 3.2. as technical context with your own infrastructure as ONE black box. In this section one can zoom into this black box using additional deployment diagrams: UML offers deployment diagrams to express that view. Use it, probably with nested diagrams, when your infrastructure is more complex. When your (hardware) stakeholders prefer other kinds of diagrams rather than a deployment diagram, let them use any kind that is able to show nodes and channels of the infrastructure.
## Infrastructure Level 1
Description of the highest level infrastructure.
## Infrastructure Level 2
Zoom into level 1.
## Mapping of Building Blocks to Infrastructure
Describe how software building blocks are mapped to the infrastructure.
-->
## Infrastructure Overview
<!--
Describe the highest level infrastructure used to execute your system. This may include geographical locations, environments, computers, processors, channels, and network topologies.
-->
Deployment is carried out across multiple environments, including Development, Testing, Staging, and Production. Each environment is hosted on Docker or Podman containers, orchestrated using Gitea Actions for CI/CD pipelines and leveraging coolify for cloud infrastructure management.
Communication Channels and Protocols are summarized in [Section 3.2 Technical Context](03_context_and_scope.md#technical-context).
## Mapping of Building Blocks to Infrastructure
| Building Block | Infrastructure Component |
| ---------------------- | ------------------------ |
| API Layer | Docker Container |
| Service Layer | Docker Container |
| Data Access Layer | Docker Container |
| Database | Managed Database Service |
| Frontend Layer | Docker Container |
| Authentication Service | Docker Container |
| Reporting Module | Docker Container |
| Simulation Engine | Docker Container |
| User Interface | Docker Container |
| Visualization Module | Docker Container |
| Mining Algorithm | Docker Container |
| Data Preprocessing | Docker Container |
| Result Postprocessing | Docker Container |
| Notification Service | Docker Container |
| Logging Service | Docker Container |
| Monitoring Service | Docker Container |
| Caching Layer | Docker Container |
| Load Balancer | Docker Container |
| API Gateway | Docker Container |
| Message Broker | Docker Container |
| Configuration Service | Docker Container |
| Backup Service | Docker Container |
| Analytics Module | Docker Container |
| Search Service | Docker Container |
| Scheduler Service | Docker Container |
| File Storage Service | Docker Container |
```mermaid
graph LR
subgraph Infrastructure
DC[Docker/Podman Containers]
MDS[Managed Database Service]
end
subgraph BuildingBlocks
API[API Layer]
SVC[Service Layer]
DAL[Data Access Layer]
DB[Database]
FE[Frontend Layer]
end
API --> DC
SVC --> DC
DAL --> DC
DB --> MDS
FE --> DC
```
## Level 2
### Docker/Podman Containers
The Docker/Podman Containers host various building blocks of the system, including the API Layer, Service Layer, Data Access Layer, Frontend Layer, and other services such as Authentication Service, Reporting Module, and Simulation Engine. Each container is configured to ensure optimal performance and security.
### Managed Database Service
The Managed Database Service hosts the PostgreSQL database, which is used for storing and retrieving data used and generated by the system. The service is configured for high availability, backup, and recovery to ensure data integrity.
## Level 3
### Calminer Deployment Container
The Calminer Deployment Container encapsulates the entire application, including all necessary building blocks and dependencies, to ensure consistent deployment across different environments.
### Building Block to Container Mapping
| Building Block | Container Component |
| ----------------- | ------------------- |
| API Layer | Calminer Container |
| Service Layer | Calminer Container |
| Data Access Layer | Calminer Container |
| Database | Database Container |
| Frontend Layer | Calminer Container |