Aynı işi yapan iki işletim sistemi: Windows Server ile Linux'un gerçek farkları
Hangisinin daha iyi olduğu sorusu yanlış soru. Fark şurada: hangisinde hata mesajı sana ne yapacağını söyler, hangisinde kendi başına çözmeye çalışır.
İkisini de gördüm. Windows Server kurulu bir makine de, Ubuntu Server kurulu bir makine de. İkisi de sunucu işini yapar.
"Hangisi daha iyi" sorusunu sevmiyorum, çünkü cevabı kişisel alışkanlıktan ibaret. Bunun yerine şunu soruyorum: hata olduğunda hangisi seni daha çabuk çözüme götürür? Altı fark, bunda karar veriyor.
1. Yapılandırma metin mi, yoksa ayarlar mı
Linux'ta Nginx yapılandırması /etc/nginx/nginx.conf dosyasında. Tek bir metin dosyası. Git'e atabilirsin, diff alabilirsin, iki sunucu arasında kopyalayabilirsin.
Windows'ta IIS yapılandırması birden fazla yerde: web.config dosyası, Kayıt Defteri, IIS Yöneticisi'ndeki onlarca ekran. Hepsinin doğru olması gerekir.
Sonuç: Linux'ta "şu dosyayı aç, şu satırı değiştir". Windows'ta "hangi yeri değiştirdiğin önce hatırlanmalı".
Metin tabanlı yapılandırma, uzaktan çalışan biri için en büyük kolaylık. Çünkü hatırlamak zorunda kalmıyorsun.
2. Bir düğmeye basınca ne olacağını biliyor musun
Linux'ta:
sudo systemctl restart nginx
Bu bitti. Servis yeniden başladı, ne kadar sürdüğünü görürsün, hata verirse neden verdiğini söyler.
Windows'ta bir servisi yeniden başlattığında bazen "başarılı" der, bazen işi bitirince sıfırlanacak servisleri kapatmanı ister, bazı durumlarda da işi yapmadan "başarılı" der ve sen yarım saat beklersin. Microsoft'un kendi "did you mean to restart?" uyarısı bu yüzden var.
Bu, "Windows kötü" demek değil. Ama Linux'un systemd'i çok daha dürüst bir sözleşme: ne yapacağını söyler, yapar, sonucu söyler.
3. Bir şey çalışmıyorsa neden çalışmadığını nereden anlarsın
Bu, pratikte en çok fark yaratan konu.
Linux'ta her şey tek yerde ve sorgulanabilir:
journalctl -p err -b # bu açılıştan beri hatalar
journalctl -u nginx # bu servisin tamamı
journalctl -f # canlı izle
dmesg -T # çekirdek, donanım dahil
Windows'ta Event Viewer var ve o da idare edilebilir bir araç. Ama Linux tarafındaki journalctl'in tek gücü, metin olması: bir servisin tamamını zaman çizelgesiyle alıp, elle okuyabilir, grep'leyebilir ve başka bir makineye yapıştırıp orada da arayabilirsin. Yeni başlayan birinin ilk bakacağı yer de tam olarak burası.
4. Depoda sıra ne
Linux'ta apt install nginx dersin. Paket yöneticisi gerekli tüm bağımlılıkları kurar, sürüm çakışmasını çözer, ne kurduğunu listeler.
Windows'ta kurulum dosyasını çalıştırırsın. Kurulum, tek başına ya da başka programların yanına kurulabilir; çakışma olursa sessizce bozulur. Kurulum sonrası "Windows Update bekliyor" diye sıra bekleyebilirsin.
Bu, günlük kullanımda rahatsız edici değil. Ama 20 paket kurman gereken bir gece var ve kurulumun ortasında bekliyorsan, farkı hissedersin.
5. Geri dönüş
Linux'ta apt install yaptıysan apt remove geri alır. Bağımlılık olarak gelenleri de temizler. Zarar görmüş bir yapılandırmayı geri almak için dosyayı versiyon kontrolünde tutmuş olmak yeterli.
Windows'ta "Program Ekle ve Kaldır" var, ama bazen bir güncelleme sonrası bir bileşenin kalıntıları kalıyor. Bazen de kaldırılan şey başka bir programın ihtiyacıydı ve o da bozuluyor.
Windows Update'in zorla yeniden başlatması da bunun parçası. Yapılan iş kaydedilmemişse bir güncellemede kayboluyor.
6. Disk bittiğinde ne ölür
Bu ikisinin en dürüst farkı belki de bu.
Linux'ta disk dolduğunda olaylar şöyle sıralanır:
- Log yazılamaz
- Bazı servisler loglayamadığı için hata verip durur
- Ama sistemin kendisi ayakta kalır
Yani disk dolduysa hata mesajı gerçekten doludur. Karşında tek neden var: yer yok.
Windows'ta disk dolduğunda Registry yazılamaz, Windows Update takılır, bazı servisler beklenmedik şekilde durur ve hata mesajı genelde "yetersiz kaynak" ya da hiçbir şeydir. Olay günlüğüne yazılacak yer de yok, yani sebebi göremezsin.
Linux'ta "diskim doldu" der ve ne yapacağını bilirsin. Windows'ta "bir şeyler bozuldu" dersin ve nedenini ararsın.
Peki hangisi?
Benim gördüğüm şu: müşteri sunucusunda hangisi kuruluysa arıza o sistemde çözülüyor. Yani asıl beceri sisteme özgü değil; arıza çözme yöntemi ortak.
Bu yazıda iki tarafı de görmüş olmanın tek avantajı şu: hangi tarafta çalışırsan çalış, karşındakinin ne yapacağını biliyorsun.
KONTROL: Gerçekten iki tür sunucuyla da çalıştın mı? Sadece Windows tarafını uzaktan gördüysen bu yazıyı "uzaktan izledim" diye yeniden çerçevelemek gerekir. İkisine de dokunduysan aynen kalır.
Sıradaki yazı: bir müşteri arızası geldiğinde ilk on dakika. Asıl orada işe yarıyor.