Executive summary
This addendum sizes LCB ONE's backend (§5 of the main proposal) for full-load operation — 15,000–20,000 trucks/day across Laem Chabang's 18 terminals — and turns that into a concrete infrastructure bill. The headline finding: at this volume, LCB ONE is a mid-sized transactional and real-time-tracking system, not a hyperscale one. Peak sustained throughput lands around 90–150 events/second and roughly 1,300–1,500 trucks tracked live at once — comfortably inside what a right-sized managed-Kubernetes stack handles without exotic engineering.
Full-load cloud infrastructure runs an estimated ฿306,000–720,000 per month (indicative), or under ฿1.2 per truck processed. The larger, less controllable cost line is not cloud compute — it's payment-gateway transaction fees and SMS fallback messaging, both usage-based, negotiated outside engineering, and covered in §6.
Sizing the load
"15,000–20,000 trucks/day" is a volume figure, not a load figure. To size infrastructure honestly, it has to be translated into events per second, concurrent connections, and storage growth — using the reservation lifecycle and location-ping design already defined in the main proposal (§5.1–§5.3).
2.1 Events per truck, at full load (20,000/day)
| Event source | Per truck | Daily total @20,000/day |
|---|---|---|
| Slot-browsing reads | 3 | 60,000 |
Reservation create | 1 | 20,000 |
| Eligibility check | 1 | 20,000 |
| Payment webhook | 1 | 20,000 |
| Driver confirmation | 1 | 20,000 |
LocationPing (EN_ROUTE, ~40 min trip @ 30–60s) | ~50 | 1,000,000 |
| Gate check-in / check-out | 2 | 40,000 |
| Notifications (push/LINE/SMS) | 4 | 80,000 |
| Total | ~63 | ~1,260,000 |
~1.26M events/day averages to ~15 events/sec around the clock. Real traffic isn't flat: assuming the two gate-rush windows the main proposal's root-cause analysis already identifies (§3) carry roughly 35% of daily volume in about 4 hours combined, sustained peak throughput lands around 90–150 events/sec. Concurrently, at a peak arrival rate of ~2,000 trucks/hour and a ~40-minute average EN_ROUTE window, ~1,300–1,500 trucks are being GPS-tracked and holding a live connection at the same moment — the number that actually sizes the real-time layer, not the daily total.
2.2 Storage growth
| Data | Daily | Monthly | Retention plan |
|---|---|---|---|
LocationPing rows | ~200 MB | ~6 GB | 90 days hot in the operational DB, then archive to object storage |
| Reservation / Container / GateEvent rows | ~60 MB | ~1.8 GB | Kept indefinitely — trivial volume for a relational DB |
Even after a full year at full load, the hot operational dataset stays well under 100 GB with a 90-day GPS-ping window — comfortable headroom for a mid-tier managed Postgres instance for several years of growth before resizing.
Reference architecture
Mapping the four layers already defined in the main proposal (§5) onto concrete, managed cloud services, right-sized to the throughput in §2. AWS service names are used as the primary reference; GCP/Azure equivalents are noted in parentheses since the final vendor is a data-residency decision (§9), not just a technical one.
CDN for the driver app, LSP portal, and control-tower frontend (CloudFront / Cloud CDN / Azure Front Door); WAF + DDoS protection and a managed API Gateway/ALB in front of every service, with rate limiting sized against the stampede risk in §2.3.
Managed Kubernetes (EKS / GKE / AKS), autoscaled 4–12 worker nodes — genuinely modest for ~150 events/sec peak. Runs the microservices from §5 of the main proposal: slot engine, reservation service, payment & penalty, reliability scoring, notification hub, ETA engine, and ~10 lightweight terminal adapters.
Managed PostgreSQL, Multi-AZ + 1 read replica (Aurora / Cloud SQL) — the replica keeps control-tower/analytics reads off the booking write path. Redis (ElastiCache / Memorystore) for the distributed slot-locks described in §5. A managed message broker (MSK / Pub/Sub / Amazon MQ) sized for tens of events/sec average — genuinely small by Kafka standards. A WebSocket/real-time layer (API Gateway WebSocket, or Socket.io on a small dedicated pool) sized for ~1,500 concurrent connections at peak.
OAuth2/OIDC identity gateway, secrets management (Secrets Manager/KMS), observability (metrics, logs, tracing), CI/CD with a container registry, and automated backups with cross-AZ (and, at full load, cross-region pilot-light) disaster recovery.
Capacity & scaling plan
Linear-scaled from the full-load baseline in §2, against the same four roadmap phases from the main proposal (§7):
| Phase | Trucks/day | Peak events/sec | Concurrent tracked trucks | Scaling action |
|---|---|---|---|---|
| 1 — MVP | 1,000–2,000 | ~7–11 | ~100–110 | Single-AZ, minimum viable HA; serverless-leaning where possible |
| 2 — Smooth demand | 5,000–8,000 | ~29–49 | ~420–490 | Enable Multi-AZ DB; add Redis HA pair; stand up the message broker |
| 3 — See the port | 12,000–16,000 | ~63–105 | ~910–1,050 | Add a DB read replica for control-tower reads; raise the node-pool autoscaling ceiling |
| 4 — Off the road (full load) | 15,000–20,000 | ~90–150 | ~1,300–1,500 | Enable pilot-light DR; lock in reserved-instance commitments against confirmed steady-state |
Monthly cloud cost model
Indicative planning-level figures for the full-load production environment (Phase 4, §4), in a mid-tier public-cloud Southeast Asia region. Low = reserved/committed pricing, lean sizing; High = on-demand headroom, premium support. See §10 for what these figures are — and aren't.
| Component | Low (฿/mo) | High (฿/mo) |
|---|---|---|
| Kubernetes compute (control plane + autoscaled nodes) | 79,200 | 151,200 |
| Managed PostgreSQL (Multi-AZ + 1 read replica) | 39,600 | 72,000 |
| Redis (locks, cache, pub/sub) | 12,600 | 23,400 |
| Message broker / event streaming | 25,200 | 57,600 |
| Real-time layer (~1,500 concurrent connections) | 5,400 | 14,400 |
| Object storage & backups | 5,400 | 14,400 |
| CDN + WAF + DDoS protection | 9,000 | 21,600 |
| Load balancing & networking | 10,800 | 21,600 |
| Observability (metrics/logs/tracing) | 14,400 | 43,200 |
| Identity & access management | 5,400 | 18,000 |
| Security tooling (secrets, KMS, threat detection) | 5,400 | 12,600 |
| CI/CD & container registry | 3,600 | 10,800 |
| Cloud provider support plan | 9,000 | 32,400 |
| Production subtotal | 225,000 | 493,200 |
| Non-production (staging/UAT/DR-test, ~30% of prod) | 68,400 | 147,600 |
| Disaster-recovery standby (pilot-light, optional at Phase 4) | 18,000 | 64,800 |
| Total cloud infrastructure | ฿311,400 | ฿705,600 |
Other costs to budget
The cloud infrastructure bill in §5 is not the whole picture. Two more categories scale with truck volume or are simply necessary to run the platform responsibly.
6.1 Usage-based third-party services
| Service | Indicative monthly cost @20,000/day | Note |
|---|---|---|
| LINE Messaging API (driver notifications) | ฿10,000–40,000 | Depends on plan tier and message mix; needs a direct quote from LINE Business Manager |
| SMS fallback gateway | ฿70,000–150,000 | If used broadly; keep this under ~10% of notifications by defaulting to LINE (§optimization) |
| Maps/routing API (ETA engine) | ~฿0 self-hosted, or ~฿72,000–126,000 commercial | A self-hosted routing engine (OSRM/GraphHopper) on the port's static road network avoids per-call fees entirely — see §optimization |
| Payment gateway / PromptPay merchant fees | Illustratively ฿0.3M–1M+ | Scales directly with port-fee transaction volume and the negotiated per-transaction rate — a finance/bank negotiation, not an engineering choice. See warning below. |
6.2 Non-infrastructure operational costs
- Platform engineering / SRE run-cost — the people who own uptime, on-call, and capacity planning; not a cloud line item, but required to run any of the above.
- Commercial APM/observability licensing — if a premium tool (Datadog/New Relic) is chosen over self-hosted Prometheus/Grafana, add roughly ฿540–900/host/month on top of §5's observability line.
- Annual security penetration test & PDPA compliance support — a one-time-per-year professional-services cost, material given the GPS-tracking and payment data in scope (§9).
- Quarterly DR test exercises — validating the pilot-light standby in §5 actually fails over, not just that it's provisioned.
- Training & change management — for Port Authority control-tower staff, terminal operations console users, and LSP/trucking onboarding.
- Support/maintenance contract with the implementing vendor/integrator, beyond the initial build.
- Contingency buffer — recommend 15–20% on top of the §5 total for any board-level budget submission.
Cost optimization levers
- Reserved instances / savings plans for baseline compute and the database — typically 30–50% off on-demand pricing once steady-state is confirmed at Phase 3–4.
- Spot instances for stateless, interruption-tolerant workers — GPS-ping ingestion and notification fan-out are both good fits.
- Autoscale burst node pools to near-zero outside the gate-rush windows identified in §2.1 — the load is not flat, and the infrastructure shouldn't be provisioned as if it were.
- Self-host the routing engine for the ETA engine (§5.3 of the main proposal) instead of a pay-per-call maps API — the port's road network is a small, static graph, well suited to OSRM/GraphHopper. This alone avoids the ฿72,000–126,000/month line in §6.1.
- LINE-first notification strategy over SMS — consistent with the driver app's LINE Mini App channel already proposed (see the Driver app, three platforms page) — keeps the far more expensive SMS line in §6.1 small.
- Archive, don't hoard, GPS pings — 90 days hot in the operational DB (§2.2), then move to cheap object storage. Keeps the primary database small and fast instead of accumulating an unbounded
LocationPingtable. - Serverless-first for Phases 1–2 (Aurora Serverless v2, managed Fargate, serverless message-broker tiers) so Phase 1–2 doesn't pay for full HA capacity before the load in §4 justifies it — migrate to the provisioned sizing in §5 as Phase 3–4 is reached.
Phased cost ramp
Cloud infrastructure cost tracks the roadmap in §7 of the main proposal, not a single full-load number from day one — applying the optimization levers in §7 above most aggressively in the earlier phases:
| Phase | Trucks/day | Monthly cloud infra | Approach |
|---|---|---|---|
| 1 — MVP | 1,000–2,000 | ฿54,000–108,000 | One terminal, single-AZ, serverless-leaning |
| 2 — Smooth demand | 5,000–8,000 | ฿144,000–288,000 | Multi-terminal, Multi-AZ DB, payment activation |
| 3 — See the port | 12,000–16,000 | ฿234,000–504,000 | Most terminals, read replica, control tower live |
| 4 — Off the road (full load) | 15,000–20,000 | ฿306,000–720,000 | All terminals, full HA, pilot-light DR — the §5 figure |
Data residency & compliance
LCB ONE handles personal data in scope of Thailand's PDPA — driver names and phone numbers, GPS location (§5.3 of the main proposal), and license-plate/vehicle data. Because the Port Authority is a state enterprise, the cloud vendor decision in §3 may not be purely technical: Thai government IT-governance policy (DGA guidelines) may call for GDCC (the government's own data center/cloud service) or an accredited private-cloud provider for some or all workloads, rather than a public hyperscaler by default.
If a public-cloud path is preferred with in-country data residency, an Asia Pacific (Bangkok) region is now a realistic option from major providers, alongside the long-standing Singapore region used for the cost figures above. Either way, this is a decision for the Port Authority's IT governance and legal teams to confirm early — it can change both the vendor and the §5 cost figures materially, and shouldn't be assumed by default.
Assumptions & caveats
- Figures in §5 and §8 are order-of-magnitude planning estimates built from public list-price patterns for a mid-tier public-cloud Southeast Asia region — not a vendor quotation. Actual pricing depends on region, negotiated enterprise discount, committed-use terms, and instance sizing confirmed by a real load test.
- All figures are shown in Thai Baht. Source cloud list pricing is typically US-dollar-denominated internationally; the indicative ~36 Baht per US dollar planning rate used to convert it is a rounded assumption only — reverify the live exchange rate and current list pricing at the time a budget is actually submitted.
- This page covers recurring run-rate cost only — one-time build/integration effort is scoped separately in the main proposal's roadmap (§7) and is not estimated here.
- Recommend validating §5 against a formal cloud-provider TCO calculator and an actual load test before committing budget — the sizing in §2 is a design-time estimate, not a measured result.
- Payment-gateway and SMS costs (§6.1) are pass-through/variable and require direct vendor negotiation — they are not controlled by the architecture choices in §3 and are flagged, not estimated with confidence, for exactly that reason.