Dokumen ini menggunakan pendekatan Workload-Driven Sizing - infrastruktur diterbitkan daripada keperluan beban kerja sebenar, bukan sekadar senarai inventori perkakasan.
| Parameter Input | Nilai | Sumber |
|---|---|---|
| Jumlah Pengguna Berdaftar | 644,500 | Keperluan JKDM (pembayar cukai) |
| Pengguna Dalaman (JKDM Staff) | 17,450 | Keperluan JKDM |
| Peak Concurrency Rate | 5% | Standard industri untuk sistem cukai |
| Peak Concurrent Users | ~32,000 | 644,500 x 5% |
| Parameter | Nilai | Derivasi |
|---|---|---|
| Average Session Duration | 15-20 min | Typical tax filing session |
| Transactions per Session | 3-5 | Login, browse, submit, confirm, logout |
| Peak TPS (Backend) | 500 | Derived from concurrent users + transaction patterns |
| Frontend:Backend Ratio | 10:1 | 10 frontend requests per backend transaction |
| Peak Frontend RPS | ~5,000 | 500 TPS x 10 |
| Component | Formula | Hasil | Justifikasi |
|---|---|---|---|
| iTAX Core | TPS x vCPU/TPS x HA | 128 vCPU | 500 TPS x 0.12 vCPU/TPS x 2 (HA) |
| API Gateway | RPS x vCPU/RPS x HA | 32 vCPU | 5000 RPS x 0.003 vCPU/RPS x 2 |
| ESB/Integration | Integrations x vCPU | 48 vCPU | 25+ integrations x 2 vCPU x buffer |
| Database | TPS x vCPU/TPS x RAC | 128 vCPU | 500 TPS x 0.13 vCPU/TPS x 2 (RAC) |
| Aspek | DC | DRC | Rasional |
|---|---|---|---|
| Capacity Target | 100% | 50% | Graceful degradation semasa failover |
| VMs | 91 | 41 | Critical workloads sahaja |
| vCPU | 784 | 320 | Essential processing capacity |
| Data Platform | Included | Excluded | Rebuild from source selepas failover |
Graceful Degradation: Semasa failover, bukan semua pengguna memerlukan akses serentak pada peak capacity. DRC menyediakan kapasiti untuk operasi kritikal dengan reduced throughput, bukan full production mirror.
Sizing ini termasuk 18% headroom dalam baseline: DC 20 nodes (960 vCPU physical) dengan 784 allocated = 82% utilisation.
Headroom 176 vCPU menyediakan operational buffer untuk peak loads dan pertumbuhan jangka pendek tanpa perlu penambahan nod.
| Komponen | DC | DRC | Jumlah | Nota |
|---|---|---|---|---|
| HCI Server Nodes | 20 | 10 | 30 | Dell VxRail / HPE SimpliVity |
| Physical vCPU | 960 | 320 | 1,280 | Kapasiti fizikal HCI |
| Allocated vCPU (PROD) | 680 | 320 | 1,000 | Production workloads |
| Allocated vCPU (Data Platform) | 104 | - | 104 | Analytics/BI (DC sahaja) |
| Total Allocated vCPU | 784 | 320 | 1,104 | PROD + Data Platform |
| Utilisation / Overcommit | 82% | 1.00x | - | DC: 784/960, DRC: 320/320 |
| Headroom | 176 vCPU (18%) | - | - | Operational buffer untuk peak loads |
| RAM | 20,480 GB | 7,680 GB | 28,160 GB | ~28TB total |
| Primary Storage | 176 TB | 65 TB | 241 TB | HCI + SAN + Object + DW |
| VMs (PROD) | 82 | 41 | 123 | DRC = 50% VM count |
| VMs (Data Platform) | 9 | - | 9 | DC sahaja, tidak replicated |
| Total VMs | 91 | 41 | 132 | Semua VM-based (Linux) |
DC menyediakan 18% headroom: 960 physical vCPU (20 nodes) dengan 784 allocated = 82% utilisation.
Headroom 176 vCPU membolehkan operational buffer untuk peak loads dan growth tanpa penambahan nod.
| Component | VM | vCPU/VM | Total vCPU | RAM/VM | Total RAM |
|---|---|---|---|---|---|
| iTAX Core Application | 8 | 16 | 128 | 64GB | 512GB |
| iTAX Database (Oracle) | 4 | 32 | 128 | 128GB | 512GB |
| MyCDN Custom Modules | 12 | 8 | 96 | 32GB | 384GB |
| API Gateway | 4 | 8 | 32 | 16GB | 64GB |
| ESB / Integration Hub | 6 | 8 | 48 | 32GB | 192GB |
| Message Broker (Kafka) | 6 | 8 | 48 | 32GB | 192GB |
| Cache Layer (Redis) | 4 | 4 | 16 | 32GB | 128GB |
| Monitoring Stack | 6 | 4 | 24 | 16GB | 96GB |
| Load Balancer | 4 | 4 | 16 | 8GB | 32GB |
| Security Services | 6 | 4 | 24 | 16GB | 96GB |
| Identity Management | 4 | 4 | 16 | 16GB | 64GB |
| Backup & Recovery | 4 | 4 | 16 | 16GB | 64GB |
| Management & Ops | 14 | 6 | 88 | 16GB | 224GB |
| PROD SUBTOTAL | 82 | - | 680 | - | 2,560GB |
| Component | VM | vCPU/VM | Total vCPU | RAM/VM | Total RAM |
|---|---|---|---|---|---|
| Data Warehouse (Greenplum) | 4 | 16 | 64 | 64GB | 256GB |
| ETL Processing | 3 | 8 | 24 | 32GB | 96GB |
| BI/Reporting (Tableau) | 2 | 8 | 16 | 32GB | 64GB |
| DATA PLATFORM SUBTOTAL | 9 | - | 104 | - | 416GB |
DRC mengandaikan partial workload activation semasa failover, bukan full concurrent peak.
Apabila failover berlaku, bukan semua workload diaktifkan serentak pada peak capacity. Pengguna dialihkan secara berperingkat (graceful degradation).
DRC beroperasi pada 1.00x (tiada overcommit) memastikan kapasiti penuh tersedia semasa failover.
DRC VM count (41) adalah 50% daripada DC PROD VM count (82). Ini adalah logical mirror, bukan full runtime mirror.
DRC menjalankan VM yang sama dari segi fungsi, tetapi dengan reduced count. Tidak semua instances aktif serentak.
| Component | DC VM | DRC VM | vCPU/VM | DRC vCPU | Notes |
|---|---|---|---|---|---|
| iTAX Core Application | 8 | 4 | 16 | 64 | 50% replica |
| iTAX Database (Oracle) | 4 | 2 | 32 | 64 | Standby only |
| MyCDN Custom Modules | 12 | 6 | 8 | 48 | Critical modules |
| API Gateway | 4 | 2 | 8 | 16 | 50% replica |
| ESB / Integration Hub | 6 | 3 | 8 | 24 | Critical integrations |
| Message Broker (Kafka) | 6 | 3 | 8 | 24 | Minimum quorum |
| Cache Layer (Redis) | 4 | 2 | 4 | 8 | Warm standby |
| Monitoring Stack | 6 | 3 | 4 | 12 | Basic monitoring |
| Load Balancer | 4 | 2 | 4 | 8 | Active-passive |
| Security Services | 6 | 3 | 4 | 12 | Essential security |
| Identity Management | 4 | 2 | 4 | 8 | Replicated |
| Backup & Recovery | 4 | 2 | 4 | 8 | DR backup |
| Management & Ops | 14 | 7 | 4 | 24 | Basic management |
| DRC TOTAL | 82 | 41 | - | 320 | 50% VM, 47% vCPU |
Data Platform (Analytics/BI) tidak di-replicate ke DRC. Jika failover, Data Platform di-rebuild dari transactional sources.
Implikasi: Data Platform capacity (104 vCPU, ~41TB storage) untuk DC sahaja. DRC storage jauh lebih rendah kerana Data Platform tidak replicated.
| Component | Location | vCPU | RAM | Storage | Replicated? |
|---|---|---|---|---|---|
| Data Warehouse (Greenplum) | DC Only | 64 | 256GB | 10TB | No - rebuild |
| Data Lake / Object Storage | DC Only | - | - | 30TB | No - rebuild |
| ETL Processing | DC Only | 24 | 96GB | 500GB | No - stateless |
| BI/Reporting (Tableau) | DC Only | 16 | 64GB | 500GB | No - config only |
| DATA PLATFORM TOTAL | DC Only | 104 | 416GB | ~41TB | - |
| Check | DC Allocated | DC Physical | DRC Allocated | DRC Physical | Status |
|---|---|---|---|---|---|
| vCPU (PROD) | 680 | 960 | 320 | 320 | OK |
| vCPU (Data Platform) | 104 | - | - | - | OK (DC only) |
| vCPU Total | 784 | - | 320 | - | DC 82%, DRC 1.00x |
| DC Utilisation | 784 / 960 = 82% | - | 320 / 320 = 100% | - | DC OK with 18% headroom |
| DC Headroom | 176 vCPU (18%) | - | - | - | Operational buffer |
| VM Count (PROD) | 82 | - | 41 | - | DRC = 50% DC |
| VM Count (Data Platform) | 9 | - | 0 | - | DC only |
| Total VMs | 91 | - | 41 | - | 132 total |
1. Core Application: iTAX adalah aplikasi monolitik berasaskan .NET (runtime lintas-platform) dengan Angular frontend, di-host pada Linux (RHEL 8/9) VMs. Runtime .NET lintas-platform menyokong deployment pada Linux tanpa kebergantungan Windows. Ini bukan cloud-native atau container-based architecture.
2. Service Components: Komponen yang disenaraikan adalah logical application modules, bukan container-based microservices. Tiada service discovery, independent scaling, atau CI/CD isolation per-service.
3. Messaging & Caching: Kafka dan Redis adalah komponen sokongan untuk reliability dan async processing, bukan primary transaction engines. Core transaction flow adalah synchronous. Kafka dipilih berbanding MSMQ kerana keperluan high-volume audit logging, cross-platform notification dispatch, dan guaranteed delivery untuk downstream integrations.
4. CRM & DMS: Sistem CRM dan DMS adalah auxiliary enterprise systems yang diintegrasikan dengan MyCDN, bukan core processing workloads. CRM dan DMS diandaikan sebagai sistem sedia ada atau diperuntukkan secara berasingan. Hanya integration endpoints yang termasuk dalam sizing MyCDN.
5. Network Security: Keselamatan infrastruktur dikuatkuasakan di network dan perimeter layers. NSX microsegmentation adalah optional enhancement, bukan keperluan baseline.
| Aspect | Specification | Implication |
|---|---|---|
| Runtime | .NET (lintas-platform / cross-platform) | Linux (RHEL 8/9), tiada kebergantungan Windows |
| Architecture Pattern | Monolithic with modular components | Not microservices, not independently scalable |
| Frontend | Angular SPA | Served from Nginx on Linux |
| Scaling Model | Vertical + horizontal VM cloning | Not elastic auto-scaling |
| Deployment Unit | Linux VM (RHEL 8/9) | Full application per VM, not container pods |
| Session Management | Stateful with session affinity | Load balancer sticky sessions required |
| Layer | Technology | Version | Required? | Notes |
|---|---|---|---|---|
| Hypervisor | VMware vSphere ESXi | 8.x | Required | Enterprise Plus license |
| Management | VMware vCenter Server | 8.x | Required | Centralized VM management |
| Storage | VMware vSAN | 8.x | Required | HCI storage layer |
| Network Virtualization | VMware NSX | 4.x | Optional | Microsegmentation optional, not baseline |
| DR Replication | VMware SRM | 8.x | Required | DC to DRC replication |
| Backup | Veeam Backup & Replication | 12.x | Required | VM-level backup |
NSX microsegmentation provides enhanced east-west security but is not required for baseline operation. Network security is enforced at perimeter (firewall, WAF) and VLAN segmentation.
| Component | Technology | Type | Role | Justification |
|---|---|---|---|---|
| iTAX Core | .NET (lintas-platform) | Core Engine | Tax processing | COTS licensed from Qualysoft, .NET runtime menyokong Linux |
| iTAX Database | Oracle 19c | Core Engine | Transaction store | Primary OLTP database |
| MyCDN Custom Modules | Java | Logical Module | Custom extensions | Malaysia-specific business logic |
| API Gateway | Kong Gateway | Supporting | External API exposure | Rate limiting, authentication for external consumers |
| ESB | WSO2 EI | Supporting | Integration hub | Legacy system adapters, protocol transformation |
| Message Broker | Apache Kafka | Supporting | Async decoupling | High-volume audit logging, notification dispatch, decoupled downstream processing with guaranteed delivery |
| Cache | Redis | Supporting | Performance | Session cache, reference data cache, not primary store |
| Data Warehouse | Greenplum | Analytics | BI/Reporting | Historical analysis, not real-time |
| BI/Reporting | Tableau Server | Analytics | Dashboards | Management reporting |
| System | Role | Integration Type | Sizing Impact |
|---|---|---|---|
| CRM | Customer relationship management | API integration with iTAX | Not in TPS model - low volume |
| DMS | Document management | File storage integration | Storage only - not in compute TPS |
CRM and DMS are assumed to be existing or separately provisioned enterprise systems. Only integration endpoints are included in MyCDN sizing. No compute or storage allocation for CRM/DMS is included in this infrastructure.
| Parameter | Value | Derivation |
|---|---|---|
| Total Registered Users | 644,500 | From JKDM requirements |
| Peak Concurrent User % | 5% | Industry standard for tax systems |
| Peak Concurrent Users | ~32,000 | 644,500 x 5% |
| Average Session Duration | 15-20 minutes | Tax filing typical session |
| Peak TPS | 500 | Based on concurrent users and transaction patterns |
| FE:BE Ratio | ~10:1 | 10 frontend requests per backend transaction |
Baseline sizing derived from detailed component analysis. Scaling is linear from baseline:
| Constant | Value | Description |
|---|---|---|
| Baseline TPS | 500 TPS | Reference point for sizing calculations |
| Baseline PROD vCPU | 680 vCPU | PROD vCPU required at 500 TPS (from component breakdown) |
| Data Platform vCPU | 104 vCPU | Fixed allocation for analytics/BI (DC only) |
| DC vCPU per Node | 48 vCPU | Usable vCPU per DC HCI node (dual-socket) |
| DRC vCPU per Node | 32 vCPU | Usable vCPU per DRC HCI node |
| Min DC Nodes | 12 | Minimum DC nodes for HA cluster |
| Min DRC Nodes | 6 | Minimum DRC nodes for HA |
| Scaling Formula | Linear | PROD vCPU = 680 x (TPS / 500) |
Note: At default settings (500 TPS, 50% DR, 1.00x overcommit, 18% headroom), calculator output matches document baseline: 30 PROD nodes. Non-Production adds UAT/SIT/Dev environments.
Below shows sizing impact at different TPS levels (18% headroom included, 50% DR factor, 1.00x DRC):
| Scenario | TPS | PROD vCPU | DC vCPU | DC Nodes | DRC vCPU | DRC Nodes | Total |
|---|---|---|---|---|---|---|---|
| Current Baseline | 500 | 680 | 784 | 20 | 320 | 10 | 30 |
| +20% Growth | 600 | 816 | 920 | 20 | 408 | 14 | 34 |
| +40% Growth | 700 | 952 | 1,056 | 22 | 476 | 16 | 38 |
| +60% Growth | 800 | 1,088 | 1,192 | 26 | 544 | 18 | 44 |
Note: Baseline includes 18% operational headroom. DC utilisation at baseline = 82%.
| Soalan | Jawapan |
|---|---|
| Adakah termasuk headroom? | Ya. DC 20 nodes = 960 vCPU physical, 784 allocated = 82% utilisation. 18% headroom untuk operational buffer. |
| Kenapa DRC storage rendah? | Data Platform (~40TB analytics) tidak replicate ke DRC. DRC hanya untuk PROD data. |
| Kenapa DRC overcommit 10%? | DRC mengandaikan partial activation semasa failover, bukan 100% serentak. |
| Dev/SIT/UAT di mana? | Tidak termasuk dalam sizing ini. Non-prod diperuntuk secara berasingan. |
| Adakah gunakan Kubernetes? | Tidak. Semua komponen adalah VM-based menggunakan VMware stack. |
| Jika TPS naik ke 700? | Guna Calculator tab. Anggaran: perlu +4 DC nodes, +4 DRC nodes. |