Windmill adalah platform pengembang sumber terbuka yang mengubah skrip menjadi webhook, alur kerja, tugas cron, dan antarmuka internal - diposisikan melawan Retool dan Temporal, bukan melawan penyedia hosting situs statis. Edisi komunitasnya berlisensi AGPL-3.0, sementara build enterprise berada di balik kunci lisensi.
Cara menentukan ukurannya berbeda dari aplikasi web pada umumnya, karena satuan kapasitasnya adalah worker, bukan aplikasi.
Arsitektur yang Menentukan Spesifikasi Anda
Berkas docker-compose.yml resmi menyalakan tujuh layanan:
| Layanan | Image | Peran |
|---|---|---|
db | postgres:16 | Basis data dan antrean pekerjaan |
windmill_server | ghcr.io/windmill-labs/windmill:main | API dan antarmuka web, port 8000 |
windmill_worker | image sama, MODE=worker | Menjalankan pekerjaan |
windmill_worker_native | image sama, NATIVE_MODE=true | Hanya pekerjaan ringan |
windmill_indexer | image sama, MODE=indexer | Pencarian teks penuh atas pekerjaan |
windmill_extra | ghcr.io/windmill-labs/windmill-extra:latest | Language server untuk editor |
caddy | ghcr.io/windmill-labs/caddy-l4:2.11.4-1 | Reverse proxy di port 80 |
Dua hal dalam tabel itu lebih penting daripada sisanya.
Tidak ada Redis. Windmill memakai PostgreSQL sebagai antreannya. Banyak panduan pihak ketiga menambahkan kontainer Redis dan REDIS_URL; berkas compose resmi tidak memuat keduanya, dan menyalin panduan semacam itu membuat Anda menjalankan layanan yang tidak pernah diajak bicara oleh Windmill.
Pusat biayanya ada di worker. Servernya relatif menganggur. Yang benar-benar Anda bayar adalah kapasitas worker.
RAM dan CPU: Ukur per Worker
Patokan praktisnya adalah satu worker per vCPU, 1-2 GB RAM masing-masing, ditambah ruang untuk Postgres dan server.
| Konfigurasi | vCPU / RAM | Yang Anda dapat |
|---|---|---|
| Uji coba, satu worker | 2 / 2 GB | Jalan, tetapi satu pekerjaan sekaligus dan tanpa ruang untuk instalasi dependensi berat |
| Tumpukan bawaan, 1-2 worker | 2-4 / 4 GB | Batas bawah praktis untuk pemakaian nyata |
| Beberapa pekerjaan bersamaan | 4 / 8 GB | Target nyaman untuk tim kecil |
Worker native adalah pengecualian yang layak diketahui: mereka menjalankan pekerjaan ringan pada sekitar 0,1 CPU dan 128 MB, itulah sebabnya tumpukan bawaan bisa menyertakan satu di samping worker standar tanpa menuntut core tambahan.
Variabel yang tidak diperhitungkan siapa pun adalah instalasi dependensi. Pekerjaan Python yang menarik pandas atau pekerjaan TypeScript dengan lockfile besar melonjakkan pemakaian memori jauh di atas angka kondisi tenangnya. Jika pekerjaan hanya gagal pada jalan pertama lalu berhasil sesudahnya, yang Anda saksikan adalah cache dependensi sedang dibangun dengan RAM yang terlalu sedikit.
Penyimpanan: Yang Tumbuh Adalah Cache Dependensi
Basis data tetap sederhana untuk waktu lama - metadata pekerjaan, skrip, alur, dan log semuanya teks. Volume yang tumbuh adalah worker_dependency_cache, tempat setiap wheel Python dan paket npm yang diimpor pekerjaan Anda disimpan supaya jalan berikutnya melewati proses instalasi.
Mulailah dari 40 GB. Pantau volume cache alih-alih basis data saat menimbang perlu tidaknya menaikkan ukuran, dan pilih NVMe atau SSD, karena Postgres di sini merangkap tugas antrean selain penyimpanan sehingga peka terhadap latensi I/O.
Paket VPS yang Memenuhi Kebutuhan Ini
| Penyedia | Paket | vCPU / RAM / Disk | Harga | Penilaian | Tautan |
|---|---|---|---|---|---|
| Contabo | Cloud VPS 4 | 4 / 8 GB / 100 GB SSD | 5,50 EUR/bulan net | Ruang setara empat worker dengan harga paket pemula | Contabo |
| Hetzner Cloud | CX23 | 2 / 4 GB / 40 GB NVMe | 5,49 EUR/bulan net | Pas untuk tumpukan bawaan dua worker | Hetzner |
| DigitalOcean | Basic 4 GB | 2 / 4 GB / 80 GB SSD | 24 USD/bulan | Spesifikasi sama dengan CX23, harga empat kali lipat | DigitalOcean |
| Vultr | Regular 4 GB | 2 / 4 GB / 80 GB SSD | 20 USD/bulan | Pilihan region terluas | Vultr |
| Linode | Linode 4 GB | 2 / 4 GB / 80 GB SSD | 24 USD/bulan | Kinerja mudah ditebak, API kuat | Linode |
Windmill termasuk sedikit aplikasi self-hosting yang tidak otomatis mencoret paket 1 GB - satu worker native benar-benar muat di sana. Tetapi Anda tidak bisa menjalankan worker standar di ruang itu, yang berarti tidak ada pekerjaan Python atau TypeScript dengan dependensi, sehingga statusnya demo, bukan penerapan.
Menaikkan Skala
Windmill diskalakan secara horizontal dengan menambah kontainer worker, bukan dengan membesarkan satu proses. Untuk melipatgandakan throughput, tambahkan layanan windmill_worker kedua yang mengarah ke DATABASE_URL yang sama dan beri mesin itu satu core lagi.
Ini punya konsekuensi praktis pada pemilihan VPS: lebih banyak core mengalahkan core yang lebih cepat di sini. Empat vCPU Contabo seharga 5,50 EUR net membeli paralelisme setara empat worker, sedangkan CX23 Hetzner membeli dua dengan harga yang praktis sama. Jika beban kerja Anda terdiri dari banyak pekerjaan kecil alih-alih beberapa pekerjaan berat, rasio itulah keseluruhan keputusannya.
- Pantau dengan
docker statsuntuk melihat worker mana yang jenuh sebelum menaikkan ukuran. - Kelompokkan worker dengan tag agar pekerjaan berat mendarat di mesin yang ukurannya memang disiapkan untuk itu.
- Postgres memikul antrean, jadi beri dia disk cepat sebelum memberi tambahan memori.
Untuk gambaran lebih luas soal paket antarpenyedia, lihat perbandingan VPS lengkap kami.
Frequently asked questions
Berapa RAM yang dibutuhkan instance Windmill yang dihosting sendiri?
Hitung per worker, bukan per aplikasi. Patokannya satu worker untuk tiap vCPU dengan 1-2 GB RAM masing-masing, di atas kebutuhan Postgres dan proses server. Instance satu worker berjalan di 2 GB, tumpukan compose bawaan dengan dua worker nyaman di 4 GB, dan 8 GB dengan 4 vCPU adalah target yang masuk akal begitu Anda menjalankan beberapa pekerjaan sekaligus.
Berapa core CPU yang sebaiknya saya alokasikan untuk Windmill?
Mulailah dengan 2 vCPU dan tambah core seiring Anda menambah worker, karena tiap worker standar menjalankan satu pekerjaan pada satu waktu dan praktis memakai satu core sendiri. Worker native adalah pengecualian: mereka menangani pekerjaan ringan pada sekitar 0,1 CPU dan 128 MB, sehingga tumpukan bawaan bisa menyertakan satu di samping worker standar tanpa perlu core tambahan.
Apakah Windmill membutuhkan Redis atau message broker lain?
Tidak. Windmill memakai PostgreSQL sekaligus sebagai basis data dan antrean pekerjaan. Ini tidak biasa dan layak diketahui, karena banyak panduan pihak ketiga menambahkan layanan Redis yang tidak ada di berkas compose resmi. Satu-satunya penyimpanan data yang diperlukan adalah PostgreSQL 14 atau lebih baru, dan menambahkan Redis hanya menghasilkan satu kontainer yang mubazir.