3 puan yazan GN⁺ 2026-02-24 | 1 yorum | WhatsApp'ta paylaş
  • Sunucu dağıtımı ve süreç yalıtımı sorunlarının tarihini izleyen bu yazı, FreeBSD jails'in modern konteyner kavramını sektörden 10 yıl önce hayata geçirdiğini vurguluyor
  • 2000 yılında FreeBSD 4.0 ile kullanıma sunulan jails, chroot'u genişleterek dosya sistemi, ağ ve süreçlerin tam yalıtımını çekirdeğe yerleşik bir özellik olarak sağladı
  • Linux, 2008'de LXC ve 2013'te Docker ile konteynerlere ulaştı; ancak bu süreçte namespace, cgroups, OCI gibi karmaşık soyutlama katmanları birikti
  • Docker'ın iyi çözdüğü şey uygulama paketleme ve dağıtım (shipping) problemiydi; jails yalıtım konusunda güçlü olsa da yerel bir dağıtım standardının olmaması zayıf noktası
  • Devam yazısında jail tabanlı altyapı kurma, ZFS snapshot'ları, Ansible provisioning gibi gerçek kullanım yöntemleri ele alınacak

İlk sunucu dağıtımlarının sorunu

  • Onlarca yıl önce bir sunucuya bir şey dağıtmanın standart yolu, Total Commander, FileZilla, FAR Manager gibi araçlarla FTP üzerinden dosyaları elle kopyalamaktı; ileri düzey kullanıcılar scp ya da rsync kullanıyordu ama öz aynıydı
  • Tek kişinin çalıştığı projelerde hatalar büyük sorun değildi, ancak onlarca müşteri projesi yönetirken bu ölümcül hale geliyordu
  • Tipik bir backend düzeninde, birden fazla web sitesi aynı Apache web sunucusu örneğini paylaşıyor ve aynı yaşam döngüsüne sahip oluyordu; Apache çökerse hepsi çöküyordu
  • Trafik aniden arttığında bir site tüm kaynakları tüketirse, aynı sunucudaki diğer siteler sessizce boğuluyordu
  • Sistem yöneticileri shell script'lerle otomasyon denedi, ancak sürüm yönetimi ya da geri alma için standart bir yöntem yoktu; bunun yerine proje klasör adlarına artan numara ya da zaman damgası eklemek gibi pratikler kullanılıyordu

Çözülmesi gereken iki temel sorun

  • Dağıtım (Deployment): güvenilir aktarım, insan hatasının önlenmesi, sürüm yönetimi ve geri alma mekanizmaları, tüm iş senaryolarını kapsayan genel bir çözüm ihtiyacı
  • Süreç yalıtımı (Process Isolation): uygulama ile sistemin birbirini koruması, bir uygulamanın gereksinimlerinin diğerini gizlice bozmasının önlenmesi, bağımlılık çakışmalarının çözülmesi
  • Dağıtım sorununu çözme girişimleri zamanla modern CI/CD pipeline'larına, paketleme standartlarına ve sürüm kontrol sistemlerine dönüştü; ancak yalıtım sorununun tarihi görece daha az biliniyor

chroot'tan sanal makinelere

  • 1979'da Bell UNIX tarafından tanıtılan chroot, bir sürece dosya sisteminin yalıtılmış bir görünümünü sağlayarak onu belirli bir alt ağacın dışına erişemez hale getiren ilkel ama faydalı bir fikirdi
    • Sınırları: yalnızca dosya sistemi yalıtımı sağlar; ağ, diğer süreçler ve sistem kaynaklarıyla hâlâ etkileşim kurulabilir ve bundan kaçmak da mümkündür
  • İlk gerçek kurumsal çözüm sanal makineler (VM) oldu; VMware bunu 1990'ların sonlarında yaygınlaştırdı
    • Her uygulamaya tamamen yalıtılmış bir OS ortamı sağladı, ancak her VM tam bir OS içerdiğinden kayda değer bir ek yük ve dakikalarla ölçülen açılış süreleri gibi maliyetler getirdi

FreeBSD Jails'in doğuşu

  • 2000 yılında, ne Windows Server ne de Linux'ta, sessiz bir devrim FreeBSD'de yaşandı
  • FreeBSD, Linux'tan temelde farklı bir şekilde çalışır: Linux yalnızca çekirdeği sağlarken, GNU userland'i, paket ekosistemi ve dağıtıma özgü tercihler bir araya getirilir; buna karşılık FreeBSD çekirdek, userland, temel araçlar ve kütüphaneleri tek bir tam OS olarak birlikte geliştirir, sürümlendirir ve test eder
  • Bu tutarlı temel üzerine kurulan çözüm jails idi; Poul-Henning Kamp ve Robert Watson tarafından tanıtıldı ve FreeBSD 4.0'da (Mart 2000) çekirdeğe yerleşik bir özellik olarak sunuldu
  • Her jail kendi dosya sistemi görünümüne, ağ yığınına ve süreç alanına sahiptir; ana sistem görünmez
  • Ana çekirdeği paylaştıkları için neredeyse sıfıra yakın ek yük ve neredeyse anında başlatma süresi sağlarlar
  • FreeBSD, bugün konteyner dediğimiz şeyin pratik uygulamasını sektörden 10 yıl önce üretim ortamında başarmıştı

Yalıtım teknolojilerinin zaman çizelgesi

  • Yalıtım sorununun gerçek evrim yolu şuydu: yalıtımsız paylaşımlı sunucular → ağır ama yalıtılmış sanal makineler → hafif ve yalıtılmış konteynerler
  • FreeBSD üçüncü aşamaya 2000 yılında ulaştı; Linux ise 2008'de LXC ile ulaştı, Docker da 2013'te ortaya çıktı
  • Docker devrimci diye övülürken, FreeBSD jails zaten 13 yıldır olgunlaşmış ve sahada kanıtlanmış durumdaydı

Linux neden kazandı?

  • Teknik üstünlük, ekosistem savaşlarında zaferi garanti etmiyor
  • Linux, hızlı karar alma, GPL lisansının viral etkisi ve Red Hat ile IBM'in güçlü kurumsal desteği sayesinde kazandı
  • Ardından Google, Facebook ve Amazon büyük ölçekli veri merkezleri için araçlar geliştirerek tüm sektörün yönünü belirledi
  • Linux, "ticari lisans alamayanların ücretsiz OS'i" olmaktan çıkıp "sunucular için tek seçenek" haline geldi

Linux konteyner ekosisteminin karmaşıklığı

  • Linux mühendisleri, yalıtım ve dağıtım sorunlarını çözmek için önce namespace, cgroups, seccomp gibi çekirdek primitive'lerini geliştirdi; ardından bunların üzerine LXC (2008) → OCI/runc (2015) → Docker/Podman (2013/2018) → Docker Hub gibi karmaşık soyutlama katmanları inşa etti
  • Sonuçta, bulut tabanlı ve üreticiye bağımlı altyapılar için aşırı mühendislik ürünü, sızıntılı soyutlamalardan (leaky abstractions) oluşan bir yığın ortaya çıktı
  • Günümüzde büyük ölçekli sistemlerde uygulama çalıştırmak için onu Docker ile konteynerleştirmek ve Kubernetes ile orkestre etmek örtük varsayılan haline geldi; bu artık birçok seçenekten biri değil, kendiliğinden kabul edilen tercih olarak sunuluyor

Docker'ın katkısı ve Jails'in zayıf yanı

  • Docker'ın iyi çözdüğü konu shipping problemiydi: uygulamayı tüm bağımlılıklarıyla birlikte paketlemek, registry üzerinden dağıtmak ve her makinede aynı şekilde çalıştırmak için genel amaçlı bir standart sundu
  • OCI image formatı fiili sektör standardı haline geldi
  • Jails, yalıtım sorununu çok iyi çözüyor ancak shipping için yerel bir çözüm sunmuyor; Docker ekosistemine kıyasla jails ekosisteminin daha olgunlaşmamış görünmesinin temel nedeni de bu
  • Topluluk da bu boşluğun farkında; bazı araçlar (cbsd, bastille, pot, appjail vb.) modern konteyner ekosistemini taklit etmeye çalışıyor, ayrıca FreeBSD'nin yerel primitive'lerinden yararlanan farklı yaklaşımlar da mevcut

Devam yazısına kısa bakış

  • Bir sonraki bölümde FreeBSD tabanlı altyapının sadeliği ve zarafeti, jails'in temelleri ve nasıl çalıştığı, jail yöneticileriyle boilerplate'in nasıl azaltıldığı, Ansible ile provisioning ve dağıtım, ZFS snapshot'larının gücü ve tüm bunları birleştirerek Hypha için sağlam ve ölçeklenebilir bir altyapının nasıl kurulacağı ele alınacak

1 yorum

 
GN⁺ 2026-02-24
Hacker News yorumları
  • Ekosistem savaşı yalnızca teknik üstünlükle kazanılamadı
    90'ların ortasında Linux; hızlı karar alma, GPL lisansının yayılmacı etkisi ve Red Hat ile IBM'in kurumsal desteği sayesinde büyüdü
    Ben Linux'u 1994'te kurdum ama FreeBSD topluluğu 3.500 dolarlık PC'mi “pek de iyi değil” diye küçümsedi
    IDE arayüzünde hata vardı ama Linux birkaç gün içinde bir geçici çözüm çıkardı; BSD tarafı ise sadece SCSI donanımı almamı söyledi
    O zamanlar üniversite öğrencisiydim, param yoktu ve sonunda Linux gerçekçi seçenek oldu
    Daha sonra FreeBSD'yi yeniden denedim ama o noktada Linux zaten ihtiyacım olan her şeyi yapıyordu
    İlgili hata CMD640 wiki maddesinde özetlenmiş

    • Ben de FreeBSD hayranıyım ama Linux ile ciddi bir işlevsel yakınsama yaşandığını düşünüyorum
      Yine de FreeBSD'nin sistem genelinde tutarlılığı daha yüksek ve ses ya da event API'leri gibi temel bileşenlerin istikrarlı biçimde korunmasını seviyorum
      En yeni donanım sürücüsü desteğinde Linux hâlâ daha iyi ama FreeBSD'nin fazla “Linuxlaşmamasını” umuyorum
    • Bugün BSD kullananların çoğu ya alıştığı için kullanıyor ya da biraz aykırı ruhla kullanıyor
      Aslında modern bir *nix ile iki tarafta da neredeyse her şey yapılabiliyor. Artık mesele performanstan çok tercih ve alışkanlık
    • Linux erken dönemde ticari ilgi görünce donanım desteği patlayıcı biçimde gelişti
      BSD ise AT&T davası yüzünden şirketlerin çekindiği bir taraftı; bu arada Linux pazarı ele geçirdi
      Bugün de FreeBSD'yi savunan yazılar çıkıyor ama 90'larda şekillenen gidişatı kırmak zor
    • BSD tarafının PC'mle dalga geçtiği hikâyeye güldüm
      Yine de donanım desteğinde bugün bile hâlâ iyileştirme alanı olduğunu düşünüyorum
    • 1992 ile 1994 arasında BSD dava tehdidiyle uğraşırken Linux büyüdü
  • Yazı ilginçti
    Linux çekirdeğindeki namespaces, cgroups, seccomp gibi primitive'lerin sonunda karmaşık bir soyutlama ekosistemi oluşturduğu görüşüne katılmıyorum
    Linux başarılı olduğu için karmaşıklaştı; başarısız bir tasarım olduğu için değil
    Eğer BSD ana akım olsaydı aynı şekilde “aşırı mühendislik” içeren bir ekosistem ortaya çıkardı

    • FreeBSD'de hacker kültüründen çok mühendislik odaklı bir zihniyet baskın
      Container'lar sonuçta hafif VM'lerden ibaret, bu yüzden doğrudan gerçek VM kullanmanın daha iyi olduğunu düşünüyorum
    • BSD yardımcı araçlarıyla GNU yardımcı araçlarını karşılaştırınca üslup farkı net biçimde görülüyor
      Docker'ın popüler olmasının nedeni güvenlik izolasyonu değil, yeniden kullanılabilirlik ve ekosistemdi
  • FreeBSD'nin jail yapısı sade ve zarif ama Linux'taki OCI container'lar kullanımı çok daha kolay
    Container'lar çekirdeğin tekil bir özelliği değil; çeşitli namespace'ler, mount'lar ve süreç izolasyonunun birleşiminden oluşan bir illüzyon
    Linux'un bu tasarımı bilinçliydi ve cgroups ile seccomp yalnızca container'larda değil, systemd ya da flatpak gibi alanlarda da geniş biçimde kullanılıyor

    • FreeBSD hâlâ ağ cihazları veya depolama denetleyicileri gibi alanlarda güçlü
      “Cattle vs pets” felsefesi VM ve orkestrasyon katmanında uygulanabilir
    • Linux container'ları oluşturma ve çalıştırma hızı açısından FreeBSD jail'lerinden çok daha hızlı
      Jail'lerin daha iyi olduğu iddiası bana pratikte inandırıcı gelmiyor
  • Docker'ın kazanma nedeni teknik izolasyon değil ekosistemdi
    Dockerfile, public registry ve compose gibi araçlar sayesinde 30 saniyede çalışır bir ortam kurulabiliyordu
    FreeBSD jail teknik olarak çok iyiydi ama giriş eşiği yüksekti
    Son dönemde container yığınının karmaşıklığı yüzünden basit jail veya VM'lere dönmek isteyen bir eğilim de görülüyor

    • FreeBSD'nin pazar payı %0,1 düzeyinde, bu yüzden “kazanması” mümkün değildi
      Ama mesele rekabet değil; sadece herkesin rolü farklı
    • Docker'ın istemci/sunucu mimarisi sayesinde Docker Desktop gibi entegre ortamlar mümkün oldu
      FreeBSD'de böyle bir kavram yok ve image sistemi de yetersiz
    • Bana göre sadece Docker Compose ya da Swarm bile yeterince basit
      FreeBSD Docker gibi kullanıcı deneyimi ve ekosisteme yatırım yapsaydı kullanıcı kitlesi birkaç kat artabilirdi
    • Orijinal yazı da “ekosistem” kelimesini defalarca vurguluyor
  • 2005 civarında tüm şirket altyapısını FreeBSD üzerinde çalıştırıyorduk
    Ama zamanla Linux hem kişisel kullanımda hem işte baskın hâle geldi
    Artık Docker da yeterince iyi ve geri dönmek için mantıklı bir neden yok

    • 2000'lerin başında FreeBSD 4 ağ ve depolama performansında olağanüstüydü
      Ancak çok çekirdekli CPU dönemine geç tepki verdiği için Linux ve Windows'un gerisinde kaldı
      Şimdi performansı toparlandı ama sürücü eksikliği ve geliştirici sayısının sınırlı olması nedeniyle hâlâ dezavantajlı
      GPU veya CUDA gereken yerlerde Linux, istikrarlı sunucular içinse FreeBSD kullanıyorum
    • Ben de benzer düşünüyorum. Linux'a yapılan yatırımın ölçeği o kadar büyük ki eksikleri gölgede kalıyor
      FreeBSD'nin kullanıcı deneyimi daha tutarlı ama pratikte Linux “mutlu yol” hâline geldi
    • Satoshi'nin neden Windows kullandığı hâlâ merak konusu
  • FreeBSD'yi tanıtan yazılar görmek her zaman güzel

  • FreeBSD 2000'de jail'i kullanıma sundu ama Linux tarafında OpenVZ ve VServer gibi benzer teknolojiler zaten vardı

    • Virtuozzo kapalı kaynak olduğu için yayılımı yavaştı, Linux-VServer ise sadece web hosting'e odaklandığından ana akım olamadı
      Sonunda 2000'lerin sonlarında LXC çıkınca “FreeBSD öndeydi” algısı oluştu
  • Container ve VM'lerin izolasyonu nasıl gerçekleştirdiğini teknik olarak anlatan bir yazı olup olmadığını merak ediyorum
    Sadece “aynı çekirdeği paylaştıkları için zayıf” düzeyinde değil, gerçek uygulama ayrıntılarını öğrenmek istiyorum

  • Son zamanlarda systemd-oomd gibi özellikler yüzünden FreeBSD'ye dönme isteği duyuyorum
    Eskiden terminalde birden çok süreç çalıştırıp log bırakarak geliştirme yapardım,
    şimdi ise systemd cgroup düzeyinde tüm süreçleri birden öldürdüğü için çalışmalarım kayboluyor
    Bu tür geriye dönük uyumsuz sistem değişiklikleri geliştirme akışını bozuyor ve süreç izolasyonu için her seferinde systemd-run ya da Docker kullanmak zorunda kalmak sinir bozucu

  • Linux'un başarısının anahtarı GPL'nin bulaşıcı etkisi ve ağ etkisiydi
    Kullanıcılar Linux'u standart olarak görmeye başlayınca donanım üreticileri de doğal olarak Linux sürücüleri çıkarmaya başladı
    Çekirdeğin esnekliği sayesinde açık kaynak sürücü ekosistemi patlayıcı biçimde büyüdü