Applications Overview¶
Overview of application components in the RCIIS (Regional Customs Interconnectivity Information System) platform.
Architecture¶
The platform consists of two main systems:
- RCIIS Application - Core business application (API + Frontend)
- ESB (Enterprise Service Bus) - Integration middleware for external system connectivity
graph TB
subgraph "External Systems"
EXT1[Customs Authorities]
EXT2[Trade Partners]
EXT3[Banking Systems]
end
subgraph "ESB - Enterprise Service Bus"
APISIX[APISIX Gateway]
KAFKA[Kafka Cluster]
CAMELK[Camel-K Transformers]
KEYCLOAK[Keycloak Auth]
APISIX -->|HTTP Bridge| KAFKA
KAFKA --> CAMELK
APISIX -.->|Auth| KEYCLOAK
end
subgraph "RCIIS Application"
API[RCIIS API]
FE[RCIIS Frontend]
DB[(SQL Server)]
MINIO[MinIO Storage]
FE --> API
API --> DB
API --> MINIO
end
EXT1 --> APISIX
EXT2 --> APISIX
EXT3 --> APISIX
CAMELK --> API
CAMELK --> EXT1
API -->|Outbound| APISIX
RCIIS Application¶
The core business application for customs data processing.
RCIIS API¶
- Purpose: Core business logic and data processing
- Technology: .NET Core, SQL Server
- Features: Declaration processing, validation, document management
RCIIS Frontend¶
- Purpose: User interface for customs operations
- Technology: Web-based UI
- Features: Declaration entry, status tracking, reporting
Supporting Services¶
- MinIO: Document and file storage (S3-compatible)
- Kafka UI: Cluster management interface
ESB - Enterprise Service Bus¶
The ESB provides message-oriented middleware for integrating external systems with RCIIS.
ESB Components¶
| Component | Role | Technology |
|---|---|---|
| APISIX Gateway | Entry point for all external requests | Apache APISIX |
| Kafka | Message broker with topic-based routing | Strimzi/Kafka |
| Camel-K | Message consumer and transformer | Apache Camel |
| Keycloak | Authentication and authorization | Keycloak |
ESB Message Flow¶
1. External System → APISIX Gateway (authenticated request)
2. APISIX Route → Kafka HTTP Bridge → Dedicated Topic
3. Camel-K Consumer ← Kafka Topic
4. Camel-K Transform → Target Endpoint (RCIIS API or External)
Inbound Flow (External → RCIIS)¶
- External system sends request to APISIX Gateway
- APISIX authenticates via Keycloak and routes to Kafka HTTP Bridge
- Message lands on a dedicated Kafka topic (one per route/integration)
- Camel-K consumes from topic, transforms message format
- Camel-K sends transformed data to RCIIS API
Outbound Flow (RCIIS → External)¶
- RCIIS API sends data to APISIX Gateway
- APISIX routes to appropriate Kafka topic
- Camel-K consumes, transforms to external system format
- Camel-K delivers to external system endpoint
Topic Strategy¶
Each integration route has a dedicated Kafka topic:
- customs.inbound.declarations
- customs.outbound.responses
- banking.payment.requests
- logistics.shipment.updates
Service Catalog¶
| Service | System | Technology | Purpose |
|---|---|---|---|
| RCIIS API | RCIIS | .NET Core | Core business logic |
| RCIIS Frontend | RCIIS | Web UI | User interface |
| APISIX | ESB | Apache APISIX | API gateway |
| Kafka | ESB | Strimzi/Kafka | Message broker |
| Camel-K | ESB | Apache Camel | Message transformation |
| Keycloak | ESB | Keycloak | Identity management |
| MinIO | RCIIS | MinIO | Object storage |
| Kafka UI | Operations | Web UI | Kafka management |
Deployment Strategy¶
Environment Progression¶
- Local: Developer environments (Kind clusters)
- SQAT: System QA Testing at Magna BC
- Testing: UAT at EAC client site
- Prod: Production on EAC cluster
Deployment Patterns¶
- Blue-Green deployments for zero downtime
- Feature flags for runtime toggling
- Quick rollback to previous versions