[!NOTE] Filosofi: “Works on my machine” adalah alasan amatir. Tooling kami dipilih untuk menjamin Reproducibility (bisa dijalankan siapa saja) dan Isolation (tidak merusak sistem host).
Dokumen ini mendefinisikan standar alat yang kita gunakan. Ini bukan sekadar daftar software, tapi “Kontrak Kerja” antara developer dan mesin.
flowchart TD
subgraph L0["Level 0: Infrastruktur"]
WSL["WSL 2 / Linux"]
SSH["Remote Server"]
end
subgraph L1["Level 1: Bahasa & Runtime"]
Py["Poetry (Python)"]
JS["fnm (Node.js)"]
Rust["Nix (System Tools)"]
end
subgraph L2["Level 2: Deployment"]
Docker["Docker Compose"]
Redis["Redis Cache"]
DB["Postgres / SQLite"]
end
L0 --> L1
L1 --> L2
style L0 fill:#e1f5fe,stroke:#01579b
style L1 fill:#fff3e0,stroke:#ef6c00
style L2 fill:#e8f5e9,stroke:#2e7d32
Sebelum menyentuh kode, kita harus menyiapkan tanah tempat kita berpijak.
Kita menggunakan Windows 11 sebagai “Kaca Muka” (UI) dan Linux (WSL 2) sebagai “Mesin” (Logic).
flowchart LR
subgraph Surface["Surface (Windows Host)"]
W1["Windows Terminal"]
W2["VS Code UI"]
end
subgraph Engine["Engine (WSL 2 / Linux)"]
L1["Bash/Zsh Shell"]
L2["Git & Runtimes"]
end
W2 <-->|"IPC (Inter-Process)"| L1
W1 <-->|"Pty Bridge"| L1
\ vs /) dan izin file yang membuat frustrasi saat deployment.Selain lokal, kita memanfaatkan Remote Hosts untuk beban berat:
.ssh/config).flowchart LR
subgraph Client["Client (Operator Machine)"]
W1["Windows Terminal"]
W2["VS Code UI"]
end
subgraph Remote["Remote Host (Powerful Server)"]
S1["SSH Server"]
S2["Heavy Compute / Runtimes"]
end
W2 <-->|"SSH Tunnel (Plugin)"| S1
W1 <-->|"SSH Connection"| S1
S1 --> S2
Kami memiliki kebijakan ketat tentang bagaimana bahasa pemrograman diinstal. JANGAN pernah menginstal bahasa secara global (System-wide) jika bisa dihindari.
pip install global adalah cara tercepat menuju kehancuran sistem. Satu proyek butuh Pandas v1, proyek lain butuh Pandas v2, dan tiba-tiba sistem Anda meledak karena konflik versi..venv).poetry.lock menjamin bahwa teman tim Anda menginstal versi byte-perfect yang sama dengan Anda.nvm (Node Version Manager) lama ditulis dengan Bash yang lambatnya minta ampun, menambah jeda 1-2 detik yang tidak perlu setiap kali Anda membuka terminal. Hidup terlalu singkat untuk menunggu shell startup.deno.lock asli.direnv).nix develop agar sistem Anda tetap murni dan compiler hanya muncul saat dibutuhkan.Bagaimana kode ini meninggalkan laptop Anda?
| Target | Tool Wajib | Penjelasan |
|---|---|---|
| Modern Cloud (SaaS/Docker) | Docker Compose | Aplikasi + DB + Redis dalam satu paket isolasi. Standar emas untuk skalabilitas modern. |
| Legacy / Konvensional | Laragon | Pilihan terbaik untuk aplikasi konvensional di lingkungan legacy (hosting biasa). Bersih dan terisolasi. |
| Dihindari | MAMP / XAMPP | Cenderung mencemari registry global dan sulit di-update parsial. Gunakan hanya jika terpaksa. |
[!TIP] Perspektif sandikodev: Kebenaran penggunaan alat bersifat relatif terhadap kebutuhan proyek dan kapasitas beban kognitif developer. Untuk proyek legacy, Laragon jauh lebih unggul dalam menjaga kebersihan lingkungan dibanding MAMP/XAMPP.
mvnw atau gradlew). Jangan asumsikan developer lain punya Maven terinstall.Langkah terakhir bukan sekadar memindahkan file ke server. Kami memilih wadah berdasarkan karakteristik teknis dan alur bisnis proyek.
[!IMPORTANT] Kriteria Pemilihan: Jangan asal pilih platform populer. Sesuaikan dengan Stack Teknologi (misal: Next.js paling optimal di Vercel) dan Alur Bisnis (misal: Aplikasi perbankan butuh VPC/VPS privat).
Ini adalah lapisan di mana kita mulai berpikir tentang performa ekstrem, keamanan tingkat OS, dan arsitektur yang siap untuk dekade mendatang.
Untuk kasus penggunaan yang membutuhkan kontrol hardware, performa tanpa kompromi, atau konkurensi masif, kita melihat ke bahasa-bahasa ini.
rustup untuk manajemen toolchain, dan cargo sebagai build system dan package manager.mix adalah build tool dan package manager standar.WebAssembly (Wasm) bukan hanya untuk browser. Ini adalah target kompilasi universal yang memungkinkan kode berkinerja tinggi berjalan di mana saja, dengan sandbox keamanan yang kuat.
wasm-pack (Rust): Untuk mengkompilasi Rust ke Wasm dan mengintegrasikannya dengan frontend JavaScript.wasi-sdk: Untuk mengkompilasi aplikasi sistem ke WASI (WebAssembly System Interface) agar dapat berjalan di luar browser.Kenapa kita memilih jalan yang “sulit” ini?
| Pilihan | Alternatif Populer | Mengapa Kita Pilih Ini? (The Why) |
|---|---|---|
| Poetry | pip + requirements.txt |
pip tidak menjamin apa-apa soal sub-dependensi. Poetry menjamin Reproducibility sehingga Anda tidak perlu lagi bilang “tapi di laptop saya jalan”. |
| fnm | nvm / nvs |
Kecepatan startup shell. Kita bukan orang yang punya waktu luang untuk menunggu Bash script kuno nvm berjalan. |
| pnpm | npm / yarn |
pnpm menghemat GIGABYTES disk space. Berhentilah menduplikasi node_modules yang sama di setiap folder proyek. |
| WSL 2 | Windows Native | Paritas dengan server produksi. Menghilangkan bug “Works on my machine” yang sudah tidak relevan di zaman sekarang. |
[!TIP] Kesimpulan & Kebenaran Relatif: Stack ini mungkin terasa lebih “ribet” di awal, tapi ia membayar dividen berupa stabilitas. Namun, ingatlah bahwa tidak ada kebenaran mutlak; semua bergantung pada apakah Anda seorang standalone fullstack atau bekerja dalam tim dengan pembagian peran DevOps yang ketat.
Satu Hal yang Absolut: “Keep it Simple” dan usahakan lingkungan selalu bersih. Lingkungan yang bersih membuat pekerjaan menjadi ringan, fokus, dan menunjang produktivitas maksimal.