Skip to content

Armored Trimaran — Secure Application Router

An intelligent fan-out architecture that distributes incoming requests to parallel downstream services simultaneously.

Tags: Armored Car | Single Cluster | HTTP1/REST | 4 Pods


Overview

The Armored Trimaran routes inbound requests from a Gateway/Initiator (http-gateway) through a Distributor/Router (http-fan-out) to two parallel Sink/Terminator pods (http-sink). The Distributor broadcasts each message to all downstream services at the same time — not sequentially.

EGRESS_PORT_MAP is auto-configured for two downstream pods. Armored Car mode (xtra7) provides per-request key rotation on every hop.

flowchart TD
    A["Gateway / Initiator\n(http-gateway)"]
    B["Distributor / Router\n(http-fan-out)"]
    C["Sink / Terminator\n(http-sink)\nservice-a"]
    D["Sink / Terminator\n(http-sink)\nservice-b"]
    A -->|"WoSP xtra7"| B
    B -->|"WoSP xtra7"| C
    B -->|"WoSP xtra7"| D

Use Cases

  • Broadcasting a request to multiple backend services simultaneously
  • Parallel processing dispatch where all services receive the same payload
  • Notifying multiple consumers of an event at the same time
  • A/B routing where both targets process the request independently

Bundle Contents

armored-trimaran/
├── gateway/          ← http-gateway (boundary)
├── router/           ← http-fan-out (internal)
├── service-a/        ← http-sink (boundary)
├── service-b/        ← http-sink (boundary)
├── deploy.sh
├── teardown.sh
├── pinhole-setup.sh
├── blueprint.yaml
├── README.md
└── EULA.md

Deploy

Prerequisites: Docker Desktop, k3d >= 5.0, kubectl, valid Hopr license

for pod in gateway router service-a service-b; do
  cd ${pod}/app/ && docker build -t serial-app-wosp-node:latest . && k3d image import serial-app-wosp-node:latest
  cd ../..
done
bash deploy.sh
bash deploy.sh

Verify

kubectl logs -n armored-trimaran-gateway-ns \
  deployment/gateway -c web-app -f

Expected output:

🔁 Auto-trigger starting — sending 5 messages
🔁 Auto-trigger complete — 5/5 messages sent.

Confirm delivery at each service:

kubectl port-forward -n armored-trimaran-service-a-ns deployment/service-a 8000:8000
curl http://localhost:8000/output
# Expected: {"count": 5, "results": [...]}

Repeat for service-b. Both services should show the same count.

Customize

Hook functions for this blueprint:

  • on_trigger(payload, headers) — in gateway/app/app.py: authentication, routing decisions
  • on_receive_fan_out(payload) — in router/app/app.py: transform payload before broadcast
  • on_receive_terminator(payload) — in service-a/app/app.py and service-b/app/app.py: per-service processing

See Hook Functions Reference.

Pricing

4 WoSP units (1 per pod). See Commercial Licensing.