Arsitektur AWS untuk aplikasi Web3
Ini titik kumpul seluruh course. Backend Java/PHP yang sudah kamu bangun di Fase 3, key management dari Fase 4, dan indexing ke MySQL — semuanya perlu tempat berjalan. AWS menyediakan komponen untuk masing-masing peran itu.
Intisari
- Dua pendekatan menghubungkan aplikasimu ke blockchain dari AWS: managed node provider (Infura/Alchemy, Fase 3) atau self-hosted node di EC2/Amazon Managed Blockchain — trade-off kontrol vs kerumitan operasional.
- Arsitektur hybrid yang umum: ECS Fargate menjalankan API Java/PHP, AWS KMS menyimpan private key signer, worker/relayer terpisah yang mengeksekusi transaksi write, RDS MySQL menyimpan hasil indexing (Fase 3).
- Node self-hosted di EC2 butuh penyimpanan besar dan cepat (EBS NVMe SSD, sering >1 TB untuk node full) — jauh lebih berat dari kebutuhan aplikasi web biasa.
- Amazon Managed Blockchain adalah opsi terkelola AWS untuk menjalankan node tanpa mengurus infrastrukturnya sendiri — di antara managed provider pihak ketiga dan self-hosted penuh.
- Setiap komponen di diagram ini adalah rangkuman dari materi sebelumnya — kalau ada satu bagian yang terasa asing, itu pertanda perlu kembali ke fase yang membahasnya.
Diagram arsitektur penuh
┌──────────────────────────── AWS CLOUD ────────────────────────────────┐
│ │
│ ┌────────────────┐ ┌──────────────┐ ┌───────────────────┐ │
│ │ API (ECS Fargate)│───▶│ AWS KMS │───▶│ Worker / Relayer │ │
│ │ Java / PHP │ │ (Fase 5.2) │ │ (SQS, Fase 5.3) │ │
│ └────────┬─────────┘ └──────────────┘ └─────────┬──────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌────────────────┐ ┌───────────────────┐ │
│ │ RDS MySQL │ <── Indexer (Fase 3) ────│ Node provider / │ │
│ │ (state lokal) │ │ self-hosted node │ │
│ └────────────────┘ └─────────┬──────────┘ │
│ │ │
└──────────────────────────────────────────────────────────────┼────────────┘
│ JSON-RPC
▼
┌───────────────────────┐
│ Jaringan Blockchain │
│ (Mainnet / L2 / Testnet)│
└───────────────────────┘
Peran tiap komponen — dan di fase mana kamu sudah mempelajarinya
| Komponen | Peran | Dibahas di |
|---|---|---|
| API (ECS Fargate) | Menerima request, menjalankan panggilan read langsung, mengantre permintaan write | Fase 3 |
| AWS KMS | Menandatangani transaksi tanpa private key pernah keluar sebagai plain text | Fase 4, detail teknis di materi berikutnya |
| Worker/relayer (SQS) | Memproses transaksi write secara asinkron, memantau konfirmasi | Materi 3 fase ini |
| RDS MySQL | Salinan lokal event on-chain untuk query cepat | Fase 3 (indexing) |
| Node provider / self-hosted node | Gerbang JSON-RPC ke jaringan blockchain | Fase 3, dan failover di materi terakhir fase ini |
Self-hosted node: kapan ini masuk akal
| Managed provider (Infura/Alchemy) | Self-hosted (EC2) | Amazon Managed Blockchain | |
|---|---|---|---|
| Setup | Menit | Berhari-hari (sinkronisasi penuh) | Jam — AWS mengurus provisioning node |
| Storage | Tidak relevan | >1 TB, EBS NVMe SSD untuk performa | Dikelola AWS |
| Kontrol & privasi query | Terbatas | Penuh | Lebih tinggi dari managed provider pihak ketiga |
| Biaya operasional berkelanjutan | Per request | Server + storage 24/7 | Biaya instance node, tanpa beban operasional patching |
| Cocok untuk | Mayoritas aplikasi (titik mulai Fase 3) | Kebutuhan compliance/privasi sangat ketat | Tim AWS-native yang ingin kontrol lebih tanpa self-manage penuh |
Untuk platform tokenisasi RWA, keputusan ini sering bukan soal teknis semata. Institusi finansial yang diatur ketat kadang diwajibkan menunjukkan kontrol infrastruktur yang lebih tinggi daripada bergantung sepenuhnya pada satu vendor pihak ketiga — dalam kasus ini, self-hosted node atau Amazon Managed Blockchain bisa jadi persyaratan compliance, bukan cuma preferensi performa.
Latihan: gambar ulang diagram di atas dengan detail spesifik proyekmu sendiri — nama tabel MySQL yang sebenarnya (dari Fase 3), nama antrean SQS yang akan kamu pakai (materi berikutnya), dan jelaskan singkat kenapa kamu memilih managed provider atau self-hosted node untuk kasus penggunaanmu.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.