Melihat masa depan kapasitas data center lewat lima dimensinya: ruang U, daya kW, cooling kW, port jaringan dan bobot lantai, memahami stranded capacity dan kebijakan headroom 80 persen, lalu praktik membuat capacity model berbasis data NetBox dengan skrip Python yang menghitung sisa kapasitas per rack secara otomatis

Setelah di episode 11 kita membangun disiplin maintenance dan operasi, sekarang kita belajar menjawab pertanyaan yang selalu diajukan manajemen: "masih muat berapa lagi?" — dan pertanyaan yang lebih berbahaya: "kapan kita kehabisan?". Capacity management adalah seni menjawab keduanya dengan angka, bukan firasat.
Kesalahan kapasitas punya dua wajah sama buruknya: kehabisan (proyek bisnis tertahan) atau kebanyakan (aset menganggur, capex terbuang, PUE jelek). Episode ini menyusun kerangka lima dimensi kapasitas, kebijakan headroom, konsep stranded capacity, dan praktik membuat capacity model otomatis dari data NetBox.
Kapasitas DC bukan satu angka — ia lima dimensi yang saling mengikat:
| Dimensi | Satuan | Dibatasi Oleh |
|---|---|---|
| Space | U kosong per rack / m² | Fisik hall, clearance |
| Power | kW tersedia per feed/rack | Breaker, UPS, busway |
| Cooling | kW panjang buang per zona | CRAH/chiller, airflow |
| Network | Port switch & uplink tersisa | Port ToR, kapasitas spine |
| Bobot | kg per rack & slab lantai | Load rating, struktur |
Kunci pentingnya: kapasitas efektif = dimensi paling ketat. Rack bisa punya 10U kosong tapi power feed sudah 85% — maka kapasitas nyatanya nol. Menjawab "masih ada tempat" hanya dari jumlah U adalah kesalahan klasik pemula.
Bedakan dua istilah ini sejak awal:
Utilization : pemakaian SAAT INI (misal PDU A menarik 4.1 kW)
Capacity : batas aman jangka panjang (misal 5.6 kW aturan 80%)
Headroom : Capacity - Utilization = 1.5 kWTanpa kebijakan tertulis, tiap orang punya versi sendiri tentang "masih cukup". Kebijakan minimal yang layak diadopsi:
thresholds:
warning_utilization: 0.70 # mulai rencana tambah kapasitas
deploy_block: 0.85 # instalasi baru butuh approval
critical_utilization: 0.90 # eskalasi manajemen, mitigasi
lead_time:
new_rack_install: "2 minggu"
ups_capacity_upgrade: "3 bulan"
chiller_upgrade: "6-9 bulan"Logika lead time itulah alasan threshold warning ada di 70%: upgrade chiller bisa butuh sembilan bulan — alarm di 90% berarti kalian sudah telat setahun.
Stranded capacity adalah kapasitas yang secara teori ada tapi tak bisa dipakai. Penyebab umumnya:
Obatnya konsisten: audit dual-cording (ep.3), refresh/consolidation (ep.16), rekonsiliasi CMDB-vs-reality berkala, dan space reclamation rutin.
Sekarang bangun modelnya. Data struktur ada di NetBox (rack, device, power feed); data kondisi ada di monitoring/PDU. Skrip Python berikut menggabungkan keduanya — hitung utilisasi power per rack dan tandai status:
import requests
NETBOX = "http://localhost:8000/api"
TOKEN = "0123456789abcdef0123456789abcdef01234567"
HEADERS = {"Authorization": f"Token {TOKEN}"}
RACK_LIMIT_KW = {"R01": 5.6, "R02": 5.6} # dari desain ep.3
BLOCK = 0.85
def get_racks():
r = requests.get(f"{NETBOX}/dcim/racks/", headers=HEADERS, timeout=10)
return r.json()["results"]
def get_power_usage(rack_name):
"""Ambil kW real-time dari API PDU/monitoring - stub lab."""
return {"R01": 3.9, "R02": 4.8}.get(rack_name, 0)
for rack in get_racks():
name = rack["name"]
used = get_power_usage(name)
limit = RACK_LIMIT_KW.get(name, 0)
if not limit:
continue
ratio = used / limit
status = "OK" if ratio < 0.7 else \
"PLAN" if ratio < BLOCK else "BLOCKED"
print(f"{name}: {used:.1f}/{limit} kW "
f"({ratio:.0%}) -> {status}")Jalankan dan baca outputnya:
pip3 install requests
python3 script/capacity-report.pyR01: 3.9/5.6 kW (70%) -> PLAN
R02: 4.8/5.6 kW (86%) -> BLOCKEDInterpretasi langsung: R02 menolak instalasi baru tanpa approval; R01 masuk periode perencanaan. Laporan inilah yang kalian kirim bulanan — dan karena datanya dari sistem, tidak ada debat subjektif.
Tambahkan dimensi lain dengan pola sama: u_used/u_height untuk space (NetBox menyediakannya), port count dari interface API, dan bobot dari device type weight. Model lengkap pertama kalian cukup spreadsheet + formula; otomasi Python menyusul saat datanya rapi.
Capacity report memberi potret; forecasting memberi film. Metode paling pragmatis: tren linier dari historis:
Pertumbuhan R01 6 bulan terakhir: 3.1 -> 3.9 kW (±133 W/bulan)
Sisa headroom : 5.6 - 3.9 = 1.7 kW
Proyeksi habis : 1.7 / 0.133 ≈ 13 bulan
Keputusan : ajukan upgrade feed Q1 tahun depanAngka proyeksi tidak perlu sempurna — ia perlu cukup baik untuk memulai pengadaan tepat waktu. Kalikan dengan skenario (agresif/moderat/konservatif) dan sajikan ketiganya.
Important
Libatkan tim bisnis dalam asumsi pertumbuhan. Proyeksi kapasitas yang dibangun sendirian oleh IT hampir selalu salah arah — bukan karena matematikanya, melainkan karena roadmap bisnis tidak pernah ditanya.
Inti yang harus dibawa pulang:
Di episode 13 selanjutnya kita siapkan payung terakhir fasilitas: backup & disaster recovery — RTO/RPO sebagai bahasa kontrak, strategi replikasi sync vs async beserta batas jaraknya, pola failover active-passive dan active-active, serta praktik DR plan yang benar-benar pernah diuji. Sampai jumpa di episode 13!