Windmill, betikleri webhook’lara, iş akışlarına, cron görevlerine ve dahili arayüzlere dönüştüren açık kaynaklı bir geliştirici platformudur - statik site barındırıcılarının değil, Retool ve Temporal’ın karşısında konumlanır. Topluluk sürümü AGPL-3.0 lisanslıdır; kurumsal derleme bir lisans anahtarının arkasındadır.
Boyutlandırması tipik bir web uygulamasınınkine benzemez, çünkü kapasite birimi uygulama değil işçidir.
Özelliklerinizi Belirleyen Mimari
Resmî docker-compose.yml yedi servis ayağa kaldırır:
| Servis | İmaj | Rol |
|---|---|---|
db | postgres:16 | Veritabanı ve iş kuyruğu |
windmill_server | ghcr.io/windmill-labs/windmill:main | API ve web arayüzü, port 8000 |
windmill_worker | aynı imaj, MODE=worker | İşleri yürütür |
windmill_worker_native | aynı imaj, NATIVE_MODE=true | Yalnızca hafif işler |
windmill_indexer | aynı imaj, MODE=indexer | İşlerde tam metin arama |
windmill_extra | ghcr.io/windmill-labs/windmill-extra:latest | Düzenleyici için dil sunucuları |
caddy | ghcr.io/windmill-labs/caddy-l4:2.11.4-1 | 80 portunda ters proxy |
Bu tabloda iki ayrıntı diğerlerinden önemli.
Redis yok. Windmill kuyruk olarak PostgreSQL kullanır. Pek çok üçüncü taraf rehber bir Redis konteyneri ile REDIS_URL ekler; resmî compose dosyasında ikisi de yoktur ve böyle bir rehberi kopyalamak, Windmill’in hiç konuşmadığı bir servisi çalıştırmanıza yol açar.
Maliyet merkezi işçilerdir. Sunucu görece boştadır. Gerçekte parasını ödediğiniz şey işçi kapasitesidir.
RAM ve CPU: İşçi Başına Boyutlandırma
Pratik kural, vCPU başına bir işçi ve her birine 1-2 GB RAM, üstüne Postgres ile sunucunun payıdır.
| Kurulum | vCPU / RAM | Size verdiği |
|---|---|---|
| Deneme, tek işçi | 2 / 2 GB | Çalışır, ama aynı anda tek iş ve ağır bir bağımlılık kurulumu için pay yok |
| Varsayılan yığın, 1-2 işçi | 2-4 / 4 GB | Gerçek kullanım için pratik alt sınır |
| Aynı anda birkaç iş | 4 / 8 GB | Küçük bir ekip için rahat hedef |
Yerel işçiler bilinmeye değer istisnadır: hafif işleri yaklaşık 0.1 CPU ve 128 MB ile çalıştırırlar, varsayılan yığının bir standart işçinin yanına bir tane koyup ek çekirdek istememesinin nedeni budur.
Kimsenin öngörmediği değişken, bağımlılık kurulumudur. pandas çeken bir Python işi ya da büyük bir kilit dosyası olan bir TypeScript işi, belleği durağan haldeki değerin epey üstüne çıkarır. İşler yalnızca ilk çalıştırmada başarısız olup sonra başarılı oluyorsa, bağımlılık önbelleğinin yetersiz RAM’de oluşturulmasını izliyorsunuz demektir.
Depolama: Asıl Büyüyen Bağımlılık Önbelleği
Veritabanı uzun süre küçük kalır - iş meta verileri, betikler, akışlar ve günlükler metindir. Büyüyen birim, işlerinizin içe aktardığı her Python paketinin ve npm modülünün sonraki çalıştırmalarda kurulumu atlamak üzere saklandığı worker_dependency_cache’tir.
40 GB ile başlayın. Yeniden boyutlandırma kararını veritabanına değil önbellek birimine bakarak verin ve NVMe ya da SSD tercih edin; Postgres burada depolamanın yanı sıra kuyruk görevi de gördüğü için G/Ç gecikmesine duyarlıdır.
Bu Gereksinimlere Uyan VPS Planları
| Sağlayıcı | Plan | vCPU / RAM / Disk | Fiyat | Değerlendirme | Bağlantı |
|---|---|---|---|---|---|
| Contabo | Cloud VPS 4 | 4 / 8 GB / 100 GB SSD | 5.50 EUR/ay net | Giriş planı fiyatına dört işçilik pay | Contabo |
| Hetzner Cloud | CX23 | 2 / 4 GB / 40 GB NVMe | 5.49 EUR/ay net | Varsayılan iki işçili yığın için uygun | Hetzner |
| DigitalOcean | Basic 4 GB | 2 / 4 GB / 80 GB SSD | 24 USD/ay | CX23 ile aynı özellikler, dört katı fiyat | DigitalOcean |
| Vultr | Regular 4 GB | 2 / 4 GB / 80 GB SSD | 20 USD/ay | En geniş bölge seçimi | Vultr |
| Linode | Linode 4 GB | 2 / 4 GB / 80 GB SSD | 24 USD/ay | Öngörülebilir performans, güçlü API | Linode |
Windmill, 1 GB’lık bir planın otomatik olarak elenmediği ender self-hosting uygulamalarından biridir - tek bir yerel işçi oraya gerçekten sığar. Ancak orada standart bir işçi çalıştıramazsınız, yani bağımlılığı olan hiçbir Python veya TypeScript işi yapamazsınız; bu da onu bir kurulum değil, bir gösteri hâline getirir.
Ölçeklendirme
Windmill, tek bir süreci büyüterek değil işçi konteyneri ekleyerek yatay ölçeklenir. İş hacmini ikiye katlamak için aynı DATABASE_URL adresini gösteren ikinci bir windmill_worker servisi ekleyin ve makineye bir çekirdek daha verin.
Bunun VPS seçiminde pratik bir sonucu var: burada daha fazla çekirdek, daha hızlı çekirdeği yener. Contabo’nun 5.50 EUR net karşılığındaki 4 vCPU’su dört işçilik paralellik alır, Hetzner CX23 ise neredeyse aynı fiyata iki tane. İş yükünüz birkaç ağır iş değil de çok sayıda küçük işse, kararın tamamı bu orandır.
- Yeniden boyutlandırmadan önce hangi işçinin dolduğunu görmek için
docker statsile izleyin. - İşçileri etiketlere göre gruplayın ki ağır işler onlara göre boyutlandırılmış makineye düşsün.
- Kuyruğu Postgres taşır; ona önce daha fazla bellek değil, hızlı disk verin.
Sağlayıcılar arasındaki planlara daha geniş bir bakış için tam VPS karşılaştırmamıza göz atın.
Frequently asked questions
Kendi sunucunuzdaki bir Windmill kurulumu ne kadar RAM ister?
Uygulamaya göre değil işçiye göre boyutlandırın. Pratik kural, vCPU başına bir işçi ve her birine 1-2 GB RAM, üstüne Postgres ile sunucu sürecinin payıdır. Tek işçili bir kurulum 2 GB'da çalışır, iki işçili varsayılan compose yığını 4 GB'da rahattır ve birkaç işi aynı anda çalıştırmaya başladığınızda makul hedef 4 vCPU ile 8 GB olur.
Windmill'e kaç CPU çekirdeği ayırmalıyım?
2 vCPU ile başlayın ve işçi ekledikçe çekirdek ekleyin, çünkü her standart işçi aynı anda tek bir iş yürütür ve pratikte kendi çekirdeğini kullanır. Yerel (native) işçiler istisnadır: hafif işleri yaklaşık 0.1 CPU ve 128 MB ile karşılarlar, bu yüzden varsayılan yığın standart işçinin yanına fazladan çekirdek istemeden bir tane koyar.
Windmill'in Redis'e veya başka bir mesaj kuyruğuna ihtiyacı var mı?
Hayır. Windmill hem veritabanı hem de iş kuyruğu olarak PostgreSQL kullanır. Bu alışılmadık bir tercih ve bilmeye değer, çünkü pek çok üçüncü taraf rehber resmî compose dosyasında bulunmayan bir Redis servisi ekler. Gereken tek veri deposu PostgreSQL 14 veya üzeridir; Redis eklemek boşa çalışan bir konteynerden başka bir şey kazandırmaz.