Containerization ve Virtual Machine Teknolojileri

CONTAINERIZATION ve VIRTUAL MACHINE TEKNOLOJILERI

Yazdığınız kod bilgisayarınızda sorunsuzca çalışmaktadır. Fakat, başkasının bilgisayarında çalışmayabilir. Bunun nedeni, sizin bilgisayarınızda bulunan kodun çalışmasını sağlayan Java versiyonu, gerekli kütüphaneler, yardımcı programlar, ram&işlemci farklılığı gibi ortam ve konfigurasyonun birebir aynısı karşı tarafta yoktur.

Bir makinemiz olduğunu varsayalım. Bu makine üzerinde kurulu ilk uygulamamız çalışmak için java 8, pyhton 2.7 ve tomcat 6’ya ihtiyaç duyuyor olsun. İkinci uygulamamızı ayağa kaldırmamız gerektiğinde o da nodeJs 10, python 2.8 ve redis 4 ‘e ihtiyaç duyuyor olsun. Bu noktada python versiyonlarının birbiriyle conflict çıkarmaması için ekstra dikkat etmemiz gerek. Bir de resimdeki gibi 3. bir uygulama geldiğinde artık sistemde 3 ayrı python, 2 ayrı java ve redis versiyonu olacak ve sistem bakımı zor bir zombi sistemi var.

VİRTUAL MACHİNE (SANALLAŞTIRMA)

Yukarıda anlattığım sebeple yazılım dünyasında programların birbirlerinden izole çalışmasını kolaylaştırmak için bir çok sistem tasarlanmıştır. Bunlara en büyük çözümlerden biri virtual machine yani sanallaştırma teknolojileri oldu.

Sanal makina aslında bir bilgisayar sisteminin emulasyonudur. Donanımda birçok ayrı bilgisayar gibi gözüken sistemlerin aslında bir bilgisayar olarak çalıştırılmasına olanak sağlar. Her sanal makine kendi temek işletim sistemine ihtiyaç duyar ve donanım sanallaştırılır. Bununla beraber, ihtiyaç duyulan çeşitli kütüphaneler de bunun içindedir. Sanal makinenin işletim sistemi ana makinenin işletim sisteminden tamamen ayrıdır. Ana makinede windows çalışırken sanal makinede linux çalışabilir. Ancak, sanal makine tüm işletim sistemi ve buna bağlı programları içine aldığı için hızlıca onlarca gb büyüklüğüne ulaşabilir ve başlatması uzun sürer. Daha fazla kaynak gerektirir ve maliyetlidir. Her sanal makine kendine tahsis edilmiş sistem kaynaklarını kullanır. Yani ne kadar sanal makineniz varsa bunlara yetecek sistem ve kaynağınız olmalı ve sanal makinelerde kullanılan her bir işletim sisteminin ayrı ayrı güncellemeleri ve güvenlik yamalarının yapılması gerekir.

Vmware vSphere, KVM, Virtualbox, Microsoft Hyper-V Yaygın olarak kullanılan hypervisor’lerdendir.

Örneğin, amazon bünyesindeki yüksek donanımlı serverları sanal makinelere bölmektedir. Siz amazondan bir makine istediğinizde size biz sanal makine ayırır. Tabiki eğer dedicated seçmediyseniz. Seçtiyseniz bu durumda size tamamen bir server ayrılır.

Peki bu sanal makinalar nasıl çalışıyor? bunların ana makinayla bir bağlantısı olması gerekmiyor mu? İşte bu bağlantının adı hypervisordur yani sanal makinaları çalıştıran yazılım veya donanım. Donanım ile sanal makina arasında bulunur.

CONTAINERIZATION

Containerization teknolojisi sanal makinalara alternatif olarak çıkmıştır. Docker, konteyner teknolojisi oluşturarak uygulama oluşturmayı, dağıtmayı ve çalıştırmayı kolaylaştıran bir araçtır ve hem ürünün hem de şirketin ismidir.

Konteyner kodu ve tüm bağımlılıklarını paketleyen standart bir yazılım birimidir. Bu sayede uygulama bir bilgisayar ortamından diğerine hızlı bir şekilde paylaşılır ve çalışır. Bilgisayarı sanal bir makine gibi sanallaştırmak yerine yalnızca işletim sistemini sanallaştırır yani docker containerin içinde misafir işletim sistemi yok. Konteynerler fiziksel bir sunucunun ve ana işletim sisteminin üzerine oturur. Her konteyner ana bilgisayar işletim sistemi çekirdeğini ve kütüphaneleri paylaşır ve işletim sistemi kodunu çoğaltma ihtiyacını önemli ölçüde azaltır.

Docker konteynerlerin ana bilgisayar sistemiyle çalışmasına olanak sağlayan araç ise Container engine dir. En bilinenleri Linux container ve Windows server container enginedir.

Container ve Virtual Machine Arasındaki Farklar

Virtual Machine Teknolojisi     

  • Donanım düzeyinde sanallaştırma yapar.
  • Donanımla VM arasında donanımı VMlere paylaştıran hypervisor vardır.
  • Her VMin kendi işletim sistemi vardır ve ana hostun donanımını paylaşırlar.
  • Container’a göre çok daha fazla size ve resource kullanır ve ağırdırlar başlaması dakikalar alır.
  • Tamamen izole birbirlerinden ve sistemden izole bir yapıları vardır.

Containerization Teknolojisi

  • İşletim sistemi düzeyinde sanallaştırma yapar.
  • Direkt host işletim sistemi üzerinde çalışır. Tüm konteynerler ana bilgisayar işletim sistemini paylaşır.
  • Çok daha lightweight ve mbler boyutunda hafiftir.
  • Vmlerin de içerisinde containerlar olabilir.
  • Az kaynak kullanır ve başlaması saniyeler alır.
  • işletim sistemi seviyesinde process düzeyinde bir izolasyon sağlar.

You may also like...

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir