Gezintiyi Atla

Kapsayıcı nedir?

Uygulamalarınız için standartlaştırılmış ve taşınabilir paketleme

Kapsayıcılara ilişkin açıklama

Nakliyat sektöründe gemi veya trenle taşınan farklı yükleri birbirinden ayırmak için konteynerlerin kullanılmasına benzeyen kapsayıcılı hale getirme yaklaşımı, yazılım geliştirme teknolojilerinde her geçen gün daha fazla kullanılıyor.

Kapsayıcı olarak adlandırılan standart yazılım paketi, bir uygulamanın kodunu, uygulamanın çalışması için gerekli olan ilgili yapılandırma dosyalarını, kitaplıkları ve bağımlılıkları bir araya getirir. Bu, geliştiricilere ve BT uzmanlarına uygulamaları ortamlara sorunsuzca dağıtma olanağı tanır.

Kapsayıcılar neden önemli?

Bir ortamdan diğerine taşınan uygulamanın düzgün çalışmaması yazılım geliştirme sürecinin her zaman bir parçası olmuştur. Bu tür sorunlar, genelde kitaplık gereksinimlerinin ve diğer bağımlılıklarının temel alındığı yapılandırmadaki farklılıklardan oluşur.

Kapsayıcılar, uygulamaların paketlenmesi ve dağıtılması için hafif ve değişmez bir altyapı sağlayarak bu sorunu ortadan kaldırır. Uygulama veya hizmet, bağımlılıkları ve yapılandırması bir kapsayıcı görüntüsü olarak birlikte paketlenir. Kapsayıcılı hale getirilen uygulama bir birim olarak test edilebilir ve barındırılan işletim sistemine kapsayıcı görüntüsü örneği olarak dağıtılabilir.

Böylece, kapsayıcılar geliştiricilerin ve BT uzmanlarına uygulamaları değiştirmeden veya çok az değiştirerek ortamlara dağıtma olanağı tanır.

Kapsayıcıların yapısı ve sundukları avantajlar hakkında daha fazla bilgi edinin.

Kısa bir video izleyin

Kapsayıcı ve sanal makine karşılaştırması

Sanallaştırma düşünüldüğünde akla genelde sanal makineler (VM’ler) gelir. Aslında, sanallaştırma birçok formda olabilir ve kapsayıcılar bu formlardan biridir. O halde, VM’ler ve kapsayıcılar arasındaki fark nedir?

Yüksek düzeyde, donanımda birden fazla işletim sistemi (OS) örneğinin çalıştırılabilmesi için VM’ler temel alınan donanımı sanallaştırır. Her VM bir işletim sistemi çalıştırır ve temel alınan donanımı temsil eden sanallaştırılmış kaynaklara erişebilir.

VM’ler birçok avantaj sunar. Aynı sunucuda birden fazla işletim sistemini çalıştırma, fiziksel kaynakların daha etkili ve maliyet açısından verimli olarak kullanılması ve sunucuların daha hızlı sağlanması bu avantajlara örnek verilebilir. Ancak, her VM bir işletim sistemi görüntüsünü, kitaplıkları, uygulamaları ve daha fazlasını içerebildiği için bunların boyutu çok fazla büyüyebilir.

Kapsayıcı temel alınan işletim sistemini sanallaştırır ve kapsayıcılı hale getirilen uygulamanın (CPU, bellek, dosya depolama alanı ve ağ bağlantıları da dahil olmak üzere) işletim sistemini tamamen kullanabileceğini algılamasına neden olur. Temel alınan işletim sistemi ve altyapıdaki farklılıklar soyut hale getirildiğinden, temel alınan görüntü tutarlı olduğu sürece kapsayıcıyı dağıtılabilir ve her yerden çalıştırabilirsiniz. Geliştiriciler için bu oldukça faydalıdır.

Barındırılan işletim sistemini kapsayıcılar paylaştığı için bir işletim sistemini önyüklemeleri veya kitaplıkları yüklemeleri gerekmez. Bu, kapsayıcıların daha verimli ve hafif olmasına olanak tanır. Kapsayıcılı uygulamalar saniyeler içinde başlatılabilir ve bir VM senaryosuna kıyasla uygulamanın çok daha fazla sayıda örneği makineye sığdırılabilir. Paylaşılan işletim sistemi yaklaşımı, düzeltme eki uygulama ve güncelleştirme yapma gibi bakım işlemlerinde oluşan ek yük azalması avantajını sunar.

Kapsayıcılar taşınabilir olsa da tanımlandıkları işletim sistemiyle kısıtlanır. Örneğin, Linux’a yönelik bir kapsayıcı Windows’ta çalışamaz (Aynısı Windows’a yönelik kapsayıcıların Linux’ta çalıştırılması için de geçerlidir).

Neden Kapsayıcılar?

Beceriklilik

Geliştiriciler uygulamalarını geliştirip kapsayıcılarda paketlediğinde ve bunları standartlaştırılmış platformda çalıştırmaları için BT’ye sunduğunda uygulamaların dağıtılması için gereken iş miktarı azaltılır ve tüm geliştirme ve test döngüsü basitleştirilebilir. Bu, geliştirici ve işlem ekiplerinin arasındaki işbirliğini ve verimliliği artırır ve ekiplere uygulamaları daha hızlı teslim etme olanağı sunar.

Taşınabilirlik

Kapsayıcılar, istenen uygulamayı çalıştırmak için gereken tüm bileşenlerin paketlenmesi ve tutulması için standart haline getirilmiş bir biçim sunar. Bu, sık karşılaşılan “Benim makinemde çalışıyor” sorununu çözer ve işletim sistemi platformlarında ve bulutlarda taşınabilirlikten faydalanma olanağı tanır. Kapsayıcı herhangi bir yere dağıtıldığında, bir dağıtımdan diğerine kadar değişmeyen tutarlı bir ortamda yürütülür. Dev-Box’tan üretime kadar tüm aşamalarda tutarlı bir biçime sahip olursunuz.

Hızlı ölçeklenebilirlik

Kapsayıcılarda VM’lerin tipik ek yükü olmadığı için, aynı altyapıda çok sayıda daha fazla kapsayıcı desteklenebilir. Kapsayıcılar, hafif nitelikleri sayesinde hızla başlatılabilir ve durdurulabilir. Bu, ölçeğin hızla artırıldığı veya azaltıldığı senaryoların uygulanmasına olanak tanır.

Uygulama alanları

Bulutta yerel uygulamalar

Bulutta yerel uygulamalar, genel, özel ve hibrit gibi ortamlarda ortak işlem modelinden faydalanmak için kapsayıcıları kullanır. Kapsayıcıların düşük ek yükü ve yüksek yoğunluğu bunların birçoğunun aynı sanal makinede barındırılmasına olanak tanır ve bulutta yerel uygulama sunulması için bunları ideal kılar.

Lift and shift

Kuruluşlar buluta geçerek önemli avantajlar elde edebilir ancak mevcut bir uygulamayı yeniden yazmak istemeyebilir. Kapsayıcıları kullanarak, uygulamalarınızı kod değiştirmeden buluta geçirebilirsiniz.

Batch

İnsan müdahalesi olmadan veya kullanılabilir olan kaynaklar temel alınarak yapılabilen etkinliklere toplu işlem adı verilir. Rapor oluşturma, görüntüleri yeniden boyutlandırma ve dosya biçimini dönüştürme buna örnek verilebilir. Kapsayıcılar, toplu işlemleri bir ortamı ve bağımlılıkları yönetmeden çalıştırmanız için kolay bir yol sunar. Azure Container Instances (ACI) gibi dinamik işlem seçenekleri, kaynak verilerini verimli şekilde almak, bunları işlemek ve Azure Blob depolama gibi dayanıklı bir depoya yerleştirmek için kullanılabilir. Statik olarak sağlanan sanal makinelerin yerine böyle bir yaklaşımı kullanarak saniyelik faturalama sayesinde önemli ölçüde maliyet tasarrufu elde edebilirsiniz.

Makine öğrenmesi

Makine öğrenmesi verilere algoritma uygular ve verilerde bulunan desenlere göre tahmin yapar. Kapsayıcılar makine öğrenmesi uygulamalarının kendi içinde yer almasına ve tüm ortamlarda kolayca ölçeklendirilmesine olanak tanır.

Kapsayıcıların ötesinde

Kapsayıcıların sağladığı avantajları en üst düzeye çıkarmak için çeviklik, güvenlik ve ölçek elde etmenize yardımcı olan kapsayıcı için iyileştirilmiş araç ve hizmetleri kullanmayı düşünebilirsiniz.

Düzenleme

Kapsayıcıların ölçeğe uygun olarak çalıştırılması için kapsayıcılı hale getirilen dağıtılmış uygulamaların Kubernetes gibi bir düzenleme platformu aracılığıyla düzenlenmesi ve yönetilmesi gerekir.

Güvenlik

Kapsayıcılar, kapsayıcı görüntüsünden küme yalıtımına kadar aşamalarda katmanlı bir yaklaşımın kullanılmasını gerektirir. Bu koruma öğelerinin yapılandırmasını en iyi şekilde ayarlamak için CI/CD işlem hatları kullanılır.

Sunucusuz kapsayıcılar

Kapsayıcılarla çevikliği isteğe bağlı olarak daha da artırabilirsiniz. Kapsayıcıları sunucu yönetmeden kolayca çalıştırmak için sunucusuz kapsayıcı teknolojilerini kullanın ve trafikte ani artışlar olduğunda Kubernetes kümelerinizden seri aktarım gerçekleştirin.

DevOps

Kapsayıcılar, geliştiricilerin BT ve üretim ortamlarında kolayca yazılım ve bağımlılık paylaşmasına olanak tanır. Bunu DevOps uygulamalarıyla birleştirerek kodu daha hızlı ve verimli olarak teslim edebilir ve yazılım geliştirme döngülerini kısaltabilirsiniz.

Kaynaklar

Sizinle birlikte hazır olur. Azure ile kapsayıcıları ve Kubernetes’i ücretsiz deneyin