System Architecture
ACME Mobility is structured as a decoupled microservices platform. The Rental Service acts as the application entry point, while Camunda 8 (Zeebe) orchestrates business workflows.
System Architecture Diagram
High-level architectural diagram of ACME Mobility displaying component boundaries, communication protocols, and technology stack:
Click image to enlarge
Docker Network Isolation
The Docker Compose setup isolates services across three distinct bridge networks to ensure strict boundary separation and security:
Primary domain network. Connects Frontend, Rental Service, Jolie Bank Services, Stations Service, Maintenance Service, and Fleet Gateway.
Process orchestration network. Connects Camunda 8 (Zeebe engine) with Rental Service for job execution and message correlation.
Fleet internal network. Isolates high-frequency gRPC telemetry calls between Fleet Gateway, Tracking Service, and Battery Service.
Persistence & Data Layer
| Component | Technology | Managed Data |
|---|---|---|
| PostgreSQL Rental | PostgreSQL 18 (:5432) | Users, BPMN sessions, vehicle fleet, Bologna stations, active bookings, and rental history. |
| PostgreSQL Bank | PostgreSQL 18 (:5433) | Bank accounts, account balances, pre-authorized deposit locks, and UUID bank tokens. |
| Zeebe / Camunda Storage | H2 (file) + Docker Volumes | BPMN process instance state, process variables, active jobs, and execution history. |
| Redis Cache / PubSub | Redis 7 (:6379) | Asynchronous event decoupling, Pub/Sub messaging between workers, and Server-Sent Events (SSE). |