Virtual Network (VPC / VNet) #
Sebelum kamu bisa men-deploy server, database, atau layanan apapun di cloud, ada satu fondasi yang harus dipahami: jaringan virtual. Virtual Private Cloud (VPC) di AWS dan Google Cloud, atau Virtual Network (VNet) di Azure, adalah jaringan yang terisolasi secara logis di dalam infrastruktur cloud provider — tempat semua resource kamu berjalan dan berkomunikasi. Tanpa pemahaman yang baik tentang VPC, konfigurasi jaringan yang salah bisa membuat resource yang seharusnya private menjadi terbuka ke internet, atau resource yang seharusnya saling terhubung menjadi tidak bisa berkomunikasi.
Apa itu VPC #
VPC adalah jaringan virtual yang kamu definisikan di dalam cloud — sepenuhnya terisolasi dari tenant lain dan dari internet kecuali kamu mengizinkannya secara eksplisit.
Analogi:
VPC seperti gedung kantor pribadi kamu di sebuah kota besar (cloud provider)
Kota (cloud provider):
→ Infrastruktur fisik yang dikelola provider
→ Banyak tenant lain juga "tinggal" di kota yang sama
Gedung kantor kamu (VPC):
→ Ruang yang sepenuhnya terisolasi milikmu
→ Kamu tentukan layout ruangannya (subnet)
→ Kamu tentukan siapa yang boleh masuk dan keluar
→ Tenant lain di kota yang sama tidak bisa masuk tanpa izin
Properti utama VPC:
✓ Terisolasi secara logis dari tenant lain
✓ Kamu definisikan rentang IP address sendiri
✓ Kamu kontrol routing — ke mana trafik diarahkan
✓ Kamu kontrol akses — apa yang boleh masuk dan keluar
✓ Bisa di-extend ke on-premise melalui VPN atau dedicated connection
Komponen Utama VPC #
VPC bukan hanya satu entitas tunggal — ia terdiri dari beberapa komponen yang bekerja bersama.
CIDR Block — Rentang IP Address #
Setiap VPC didefinisikan dengan CIDR block — rentang IP address yang tersedia untuk semua resource di dalamnya.
Contoh CIDR Block VPC:
10.0.0.0/16
Ini berarti:
→ 10.0.0.0 hingga 10.0.255.255 tersedia
→ 65.536 IP address yang bisa digunakan
Subnet akan membagi rentang ini menjadi potongan yang lebih kecil:
10.0.1.0/24 → 256 IP untuk subnet public AZ-1a
10.0.2.0/24 → 256 IP untuk subnet public AZ-1b
10.0.10.0/24 → 256 IP untuk subnet private AZ-1a
10.0.11.0/24 → 256 IP untuk subnet private AZ-1b
Aturan pemilihan CIDR:
✓ Gunakan range private (RFC 1918):
→ 10.0.0.0/8 (16 juta+ IP)
→ 172.16.0.0/12 (1 juta+ IP)
→ 192.168.0.0/16 (65k IP)
✓ Pilih range yang cukup besar untuk pertumbuhan
✗ Hindari overlap dengan network lain yang perlu dihubungkan
(on-premise, VPC lain)
Subnet #
Subnet adalah pembagian VPC menjadi segmen yang lebih kecil. Setiap subnet berada di satu Availability Zone.
Struktur Subnet dalam VPC:
VPC: 10.0.0.0/16
┌─────────────────────────────────────────────────────┐
│ │
│ AZ-1a AZ-1b │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Public Subnet │ │ Public Subnet │ │
│ │ 10.0.1.0/24 │ │ 10.0.2.0/24 │ │
│ │ (internet-facing│ │ (internet-facing│ │
│ │ resources) │ │ resources) │ │
│ └─────────────────┘ └─────────────────┘ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Private Subnet │ │ Private Subnet │ │
│ │ 10.0.10.0/24 │ │ 10.0.11.0/24 │ │
│ │ (database, │ │ (database, │ │
│ │ backend) │ │ backend) │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
Internet Gateway #
Komponen yang memungkinkan komunikasi antara resource di VPC dengan internet publik. Tanpa Internet Gateway, tidak ada trafik yang bisa masuk atau keluar ke internet.
Alur Trafik dengan Internet Gateway:
Internet
│
▼
Internet Gateway (attached ke VPC)
│
▼
Route Table (arahkan 0.0.0.0/0 ke Internet Gateway)
│
▼
Public Subnet
│
▼
Resource dengan Public IP (Load Balancer, Bastion Host)
Resource di Private Subnet:
→ TIDAK punya route ke Internet Gateway
→ Tidak bisa diakses langsung dari internet
→ Bisa akses internet melalui NAT Gateway (outbound only)
Route Table #
Route table adalah aturan yang menentukan ke mana trafik jaringan diarahkan berdasarkan tujuannya.
Contoh Route Table untuk Public Subnet:
Destination Target
──────────────────────────────────
10.0.0.0/16 local ← trafik dalam VPC: lokal
0.0.0.0/0 igw-xxxxxxxx ← trafik ke internet: Internet Gateway
Contoh Route Table untuk Private Subnet:
Destination Target
──────────────────────────────────
10.0.0.0/16 local ← trafik dalam VPC: lokal
0.0.0.0/0 nat-xxxxxxxx ← trafik ke internet: NAT Gateway
(outbound only, tidak bisa diakses dari luar)
VPC Peering dan Transit Gateway #
Ketika kamu punya lebih dari satu VPC yang perlu berkomunikasi, ada mekanisme untuk menghubungkannya.
VPC Peering:
VPC A ←──────────── peering connection ────────────→ VPC B
10.0.0.0/16 10.1.0.0/16
Karakteristik:
✓ Komunikasi private antar VPC (tidak melewati internet)
✓ Low latency
✗ Tidak transitive — jika A peer dengan B dan B peer dengan C,
A tidak otomatis bisa ke C
Transit Gateway (untuk banyak VPC):
VPC A ─┐
VPC B ─┤─→ Transit Gateway ←─ On-premise (via VPN/Direct Connect)
VPC C ─┘
Karakteristik:
✓ Hub-and-spoke model
✓ Satu koneksi ke TGW = bisa reach semua VPC yang terhubung
✓ Transitive routing
✗ Biaya tambahan per attachment dan per GB data yang melewatinya
Desain VPC yang Baik #
Prinsip Desain VPC:
1. Pisahkan public dan private subnet
✓ Public: hanya resource yang perlu diakses internet
(load balancer, NAT gateway, bastion host)
✓ Private: database, application server, internal services
2. Gunakan minimal 2 AZ untuk setiap tier
✓ Public subnet di AZ-1a dan AZ-1b
✓ Private subnet di AZ-1a dan AZ-1b
→ Resiliensi terhadap AZ failure
3. Rencanakan CIDR yang cukup besar
✗ /28 = hanya 16 IP — terlalu kecil
✓ /16 untuk VPC = fleksibel untuk pertumbuhan
✓ /24 untuk subnet = 256 IP per subnet
4. Pisahkan environment dalam VPC terpisah
✓ VPC dev, VPC staging, VPC prod — terpisah
✗ Dev dan prod dalam VPC yang sama = risiko keamanan
Ringkasan #
- VPC adalah jaringan virtual yang terisolasi — resource kamu berjalan di dalamnya, dan tidak bisa diakses dari luar kecuali kamu mengizinkan secara eksplisit.
- CIDR block mendefinisikan ruang IP address VPC — pilih range yang cukup besar dan tidak overlap dengan network lain yang perlu dihubungkan.
- Subnet membagi VPC menjadi segmen per AZ — public subnet untuk resource yang butuh akses internet, private subnet untuk database dan backend.
- Internet Gateway adalah pintu ke internet — tanpanya, tidak ada trafik yang bisa masuk atau keluar VPC ke internet publik.
- Route table menentukan ke mana trafik diarahkan — public subnet route ke Internet Gateway, private subnet route ke NAT Gateway untuk outbound-only.
- Pisahkan environment dalam VPC terpisah — dev, staging, dan prod dalam VPC yang berbeda menghindari risiko cross-contamination.
← Sebelumnya: Twelve-Factor App Berikutnya: Subnet, CIDR, Routing →