Ubuntu'nun Arkasındaki Şirket, Bu Şaşırtıcı Derecede Kullanışlı Geliştirici Araçlarını da Üretiyor
"Canonical" dendiğinde aklınıza ilk gelen şey muhtemelen dünyanın en popüler bulut işletim sistemi olan Ubuntu'dur. Ancak Londra merkezli şirket, geliştiricilerin yazılımları nasıl oluşturduğunu, test ettiğini ve dağıttığını yeniden şekillendiren bir dizi açık kaynak aracı sessizce bir araya getirdi. Anlık yerel VM'lerden üretime hazır Kubernetes'e kadar, Canonical'ın yan projeleri kendi ağırlık sınıflarının çok üzerinde performans gösteriyor. Bu derinlemesine inceleme, Canonical'ın portföyündeki, her ön uç geliştiricisinin, DevOps mühendisinin ve sistem mimarının araç setinde bulunması gereken üç gizli mücevheri keşfediyor.
Multipass: Her Platformda Anında Ubuntu VM'leri
Platformlar arası bir geliştiricinin kabusu, ortam tutarlılığıdır. macOS'te kodlar, Linux'a dağıtırsınız ve CI hattının, yerel makinenizin yakalayamadığını yakalaması için dua edersiniz. Multipass bu sürtüşmeyi ortadan kaldırır. Tek bir terminal komutuyla yeni bir Ubuntu örneği oluşturan hafif bir VM yöneticisidir. Vagrantfile yok, VirtualBox arayüzü yok, karmaşık ağ sihirbazlığı yok.
Multipass, Windows'ta Hyper-V, macOS'te QEMU ve Linux'ta KVM olmak üzere yerel hipervizörleri kullanır ve bu da onu VirtualBox tabanlı alternatiflerden önemli ölçüde daha hızlı kılar. Modern donanımlarda başlatma süreleri üç saniyenin altına düşer.
Multipass'ın Saf Linux İş Yüklerinde Docker'dan Nasıl Daha İyi Performans Gösterdiği
Konteynerler harikadır ancak ana bilgisayar çekirdeğini paylaşırlar. Çekirdek modüllerini test etmek, snap'leri çalıştırmak veya systemd kullanmak gibi gerçek bir Linux çekirdeği ortamına ihtiyacınız olduğunda, multipass size süslü bir işlem yerine tam bir işletim sistemi sunar. CLI, modern iş akışlarına doğal gelir:
# 'dev-node' adında 4GB RAM ve 2 CPU'lu bir VM başlat
multipass launch --name dev-node --memory 4G --cpus 2
# Doğrudan bir komut çalıştır
multipass exec dev-node -- sudo apt update
# Proje dizininizi VM'in içine bağla
multipass mount ~/my-project dev-node:/home/ubuntu/work
Sunucu taraflı render veya Node.js arka uçları üzerinde çalışan ön uç geliştiriciler için, üretim altyapısının birebir kopyası üzerinde yerel olarak test edebilme yeteneği dönüştürücüdür. Artık "benim makinemde çalışıyor" tartışmalarına son.

LXD: VM Gibi Hissettiren Sistem Konteynerleri
LXD, konteynerler ve sanal makineler arasındaki çizgiyi bulanıklaştırır. Bunlar "sistem konteynerleri"dir; tam bir başlatma sistemi çalıştırırlar, kalıcı depolamaya sahiptirler ve tıpkı bağımsız bir Linux sunucusu gibi davranırlar. Yine de, ana bilgisayar çekirdeğini paylaştıkları için geleneksel bir VM'den çok daha az kaynak tüketirler. LXD, Canonical'ın "Ya Docker'ın içinde tam bir işletim sistemi olsaydı?" sorusuna verdiği yanıttır.

Gerçek Dünya İş Akışı: Yerel Mikro Hizmet Mimarisi
Bir React ön ucu, bir Python API'si, bir Redis önbelleği ve bir PostgreSQL veritabanı ile modern bir web uygulaması oluşturduğunuzu hayal edin. LXD ile tüm üretim topolojisini yerel olarak modelleyebilirsiniz:
# Veritabanı için bir konteyner oluştur
lxc launch ubuntu:22.04 db-server
lxc exec db-server -- apt install postgresql -y
# API için bir konteyner oluştur
lxc launch ubuntu:22.04 api-server
lxc exec api-server -- apt install python3-pip -y
# Statik IP'ler ata ve bunları birbirine bağla
lxc network attach lxdbr0 db-server eth0
lxc config device set db-server eth0 ipv4.address=10.0.0.10
Her konteyner kendi ağ arayüzüne, güvenlik duvarı kurallarına ve kaynak limitlerine sahip olur. Dayanıklılığı test etmek için ağ gecikmesini, paket kaybını simüle edebilir veya bir hizmetin fişini çekebilirsiniz.
LXD, cloud-init ile yerel olarak entegre olur; yani konteynerleri AWS, Azure ve Google Cloud'da kullanılan aynı yapılandırma yönetimi araçlarıyla hazırlayabilirsiniz. Yerel test ortamınız, işletim sistemi paket sürümlerine kadar üretim altyapınızla eşleşir.

Juju: YAML Karmaşasının Ötesinde Uygulama Modelleme
Kod Olarak Altyapı genellikle aylar içinde bakımı imkansız hale gelen devasa YAML dosyaları ve Bash betikleri anlamına gelir. Juju temelde farklı bir yaklaşım benimser: yalnızca yapılandırmalarını değil, hizmetler arasındaki ilişkileri modeller. Bir Juju "paketi", tüm yığınınızın ve parçaların nasıl bağlandığının bir bildirisidir.
Charm Ekosistemi Operasyonel Bilgiyi Otomatikleştirir
Bir "Charm", bir hizmeti dağıtma ve yönetme konusundaki operasyonel bilgeliği kapsayan bir operatör, yani bir kod parçasıdır. Otomatik yük devretme ile yüksek kullanılabilirliğe sahip bir PostgreSQL kümesine mi ihtiyacınız var? Bunun için, veritabanı uzmanları tarafından bakımı yapılan bir charm var. Dağıtmak tek bir komuttur:
juju deploy postgresql --channel 14/stable -n 3
juju deploy my-django-app
juju relate my-django-app postgresql:db
Son satır sihirdir. juju relate , Juju'ya Django uygulamanızın bir veritabanına ihtiyacı olduğunu söyler. Juju, PostgreSQL'i otomatik olarak yapılandırır, veritabanını ve kullanıcıyı oluşturur ve bağlantı dizesini Django uygulamanızın ortam değişkenlerine enjekte eder. Sıfır manuel yapılandırma.
Geliştirici-Üretim Boşluğunu Kapatmak
Canonical ekosisteminin gerçek gücü, bu araçları birlikte kullandığınızda ortaya çıkar. Yaygın bir iş akışı şöyle görünür:

- Yerel olarak geliştirin hedef Ubuntu sürümünüzle eşleşen Multipass VM'leri kullanarak.
- Tam topolojiyi simüle edin her hizmet için LXD konteynerleri kullanarak.
- Dağıtımı modelleyin ilişkileri ve ölçekleme kurallarını tanımlayan Juju paketleri ile.
- Aynı şekilde dağıtın herhangi bir genel veya özel buluta ya da çıplak metale.
<ComparisonTable headers="

