Sanallaştırma Nedir, Ne Yer, Ne İçer?

uygaruygun
SabancıDx
Published in
7 min readJun 26, 2024

Eğer teknoloji dünyasını yakından takip ediyorsanız günümüz medyasında bulut bilişim hizmetlerinin popüleritesinin de farkındasınızdır. Ancak herkesin dillerinden düşüremediği bu “bulut” temelinde nasıl çalışır diye merak ediyorsanız bu makalenin içeriğinde bu kısımlara mümkün mertebe terimlerden arınmış ve sade bir dille ışık tutuyor olacağız. Önümüzdeki paragraflarda bulut bilişim hizmetlerinin ve de günümüzde kullanılan neredeyse her sunucu yapısının temelinde yatan bir kavramı keşfedeceğiz, sanallaştırma!

Sanallaştırma kavramını ve çalışma prensiplerini açıklamaya başlamadan önce sunucu yapısından biraz bahsetmemiz gerekiyor. Genel resime bakıldığında sanallaştırma kavramı ile yaptığımız tek şey aslında bir ekmeği dilimlemek ve ekmek yemek isteyen kişilerin açlığına göre bu dilimlerin boyutunu ve/veya miktarını ayarlamak. Bu metafora detaylarını açıklarken geri döneceğiz.

Sıkça sunucu veya “server” ismiyle anılan, kullandığımız web sitelerini dünyanın kim bilir hangi ucunda çalıştıran gizemli makineleri duymuşuzdur ancak bu makineleri kullandığımız bilgisayarlardan ayıran tek şey bu makinelerin binlerce kişi tarafından aynı anda ulaşılabilir halde ve erişecek kişilerin ihtiyaçlarını düşük gecikme ile yerine getirebilecek altyapıya sahip olmaları.

Daha da uzatmadan sunucu dediğimiz şeylerin, yüksek hızda internet erişimi olan, işlemci gücü ve depolama kabiliyeti yüksek bilgisayarlar olduğunu söyleyebiliriz.

Bu benzetmeyi yapmamın asıl amacı aslında kişisel bilgisayarınızı gün içinde kullanırken elinizin altında bulunan işlemciyi, depolamayı ve RAM’ı neredeyse hiçbir zaman tam kapasite ile kullanmıyor olduğunuza dikkat çekmek. Eğer siz de benim gibi bir bilgisayar kullanıcısı iseniz, bir kenarda görev yöneticisini hep açık tutuyor ve ara ara bilgisayarınızda hangi programların hangi kaynakları kullandığına göz atıyorsunuz demektir. Eğer bunu yapmıyorsanız aşağıdaki resimden benim bilgisayarımın kaynak değerleri kullanımına beraber bakalım.

Kullandığım bilgisayarın anlık kaynak kullanım yüzdeleri

Gördüğünüz gibi hor kullanımıma rağmen (tarayıcılarda açık kalan sekmelerin haddi hesabı yok) çalışan programlar tüm kaynakları kullanmıyor. Bu tabii ki benim durumumda, tek bir bilgisayar çalıştırdığım için, bir problem yaratmasa da aynı kullanım yüzdelerini milyonlarca dolar yatırım yaparak aldığınız sunucularda görseniz en başta yatırımınıza sonrasında da sırf bu yüzdelikteki kullanımlar için ödediğiniz elektrik masrafına üzülürsünüz. En başta akla gelen “O zaman neden o kadar yatırım yaptın ki daha güçsüz bir altyapı kursaydın” cümlesi de nadiren ihtiyacım olsa da zaman zaman açmak zorunda olduğum ağır programları hatırlatıyor.

“E ama benim bilgisayarım birden fazla programı aynı anda açabiliyor, o zaman neden hepsini aynı bilgisayarda kaynaklar dolana kadar çalıştırmıyoruz?”

Sanallaştırma kullanılmadan kurulan bir sunucu yapısında, çıkacak hataların daha kolay tespit edilebilmesi, çalışan uygulamaların ve altyapı hatalarının uygulamanın çalışma durumuna mümkün olan en az miktarda etki edebilmesi için genelde bir uygulamanın farklı amaçlara hitap eden bölümleri ayrı makineler üzerinde çalıştırılır. Mesela bir makine veri tabanından sorumluyken bir diğeri de kullanıcının etkileşime geçtiği arayüzü çalıştırma ve istekleri iletme kısmını üstlenmektedir.

Bu izolasyon hem görev yükünün kaynakları fazla kullanan bir görev tarafından artmasını, hem çalışma sürekliliğinin aksamasını (yedekli kurulan yapılarda düzgün çalışmayan makinenin yükünü bir başka makine üstlenir), hem de bir uygulamanın hatalı veya daha çok güç gerektiren adımlarının ugulamanın tamamını yavaşlatmasını önlemektedir.

Dolayısıyla ayrışık makine mimarisine göre uygulama adımları fiziksel farklı makineler üzerine dağıtıldığında elimizde kullanılmayan kaynağa sahip birden fazla fiziksel makine bulunmakta, bu da hem altyapı yatırımının fiyatının katlanarak büyümesine hem de birden fazla makinenin yönetim zorluklarını beraberinde getirmektedir.

Sanallaştırma kavramı ise bu senaryoda elimizde fazlalık kalan kaynakları kullanabilmemizi sağlarken izolasyon prensibinden vazgeçmemizi gerektirmez.

Sanallaştırmanın da sağladığı şey esasında elinizdeki altyapıyı tek bir işletim sisteminin hakimiyetine bırakmaktansa, donanımı henüz işletim sistemi seviyesine çıkmadan aynı merkezden yönetilen farklı işletim sistemlerine bölmektir. Her farklı işletim sistemi işlevi bakımından ayrı birer bilgisayar veya bu durumda sunucu gibi kullanılabileceğinden dolayı elimizde tek altyapı üzerinde çalışabilen birden fazla bilgisayar olmuş olur.

Geleneksel ve Sanal mimari karşılaştırması

Sanallaştırmanın en iyi taraflarından biri de bu sanal bilgisayarların sahip oldukları depolama işlemci ram vb gibi özelliklerinin donanımsal altyapının izin verdiği limitlerde değişebilmesidir. Bu bize üzerine yüklenecek işe göre donanımı rahatça bölme ve hatta yükün anlık ağırlığına göre sanal makinenin eriştiği donanımı arttırabilme veya azaltabilme imkanı vermektedir.

Bunu mümkün kılan asıl özellik “pooling” yani kaynaklardan kullanıma hazır bir havuz yaratımıdır. Geleneksel server mimarisinin aksine, fiziksel kaynaklar tek bir işletim sisteminin hakimiyetine bırakılmaz, kurulacak ve çalışacak olan sanal makinelerin erişebileceği açık bir kaynak havuzu oluşturulur ve ihtiyaca göre dağıtılır.

Sanallaştırma mimarisinde pooling kavramı

Önceden bahsettiğimiz ekmek metaforuna dönecek olursak, dört kişilik bir ailenin her üyesine birer ekmek alınıp bu aile üyelerinin ekmek somunlarını ısırarak yemesini, her uygulama parçasını ayrı fiziksel makinede çalıştırmaya benzetebiliriz, bazı aile üyeleri tek somun ekmeği bitirirken bazıları ise birkaç ısırık sonrasında doyacak ve yemek sonrasında masada fazlasıyla ekmek artığı kalmasına sebep olacaktır.

Sanallaştırma ise öncesinde aile bireylerinin toplam ne kadar ekmek yiyeceğini tahmin edip, herkese ısırarak yemesi için bir somun ekmek vermektense ortaya alınan üç ekmeği dilimleyerek bir tabağa koyacak ve ekmek isteyen herkesin ona rahatça ulaşmasını sağlayacaktır. Bu sayede hem hiçbir aile üyesi bir diğerinin ısırdığı ekmek parçasına dokunmamış olacak hem de yalnızca ihtiyaç duydukları kadar ekmeği ortadan aldıkları için israfın da önüne geçilmiş olacaktır.

Peki bu ekmekleri dilimleyen ve tabaklara dağıtan kişi kim?

Hypervisor?

Hypervisor aslında bu yazının şu ana kadar bahsettiği asıl problemi çözmek için yaratılmış bir uygulamadır. Elimizdeki bilgisayar üzerinde birbirinden izole ortamlarda çalışan birden fazla bilgisayar oluşturabilmemiz için bilgisayarın sahip olduğu donanımsal altyapıyı yazılım seviyesinde ayrıştırarak, çalışan uygulamaların asıl cihaza direkt erişmesi yerine asıl cihazın üzerinde bir sınır çizip onu ayrı ve bağımsız bir cihazmış gibi uygulamaya tanıtmakta kullanılan ve birden fazla sanal cihazın ana makine üzerinde kullandıkları kaynakları aralarında paylaştırmaktan sorumlu bir sanallaştırma uygulamasıdır.

Hypervisor’un iki tipi olmakla beraber şu ana kadar bahsettiğimiz amaçlar için çoğunlukla Tip 1 hypervisor kullanılmaktadır. Tip 1 hypervisor sanallaştırdığı ortamı bir işletim sistemine ihtiyaç duymadan (ve bu sayede işletim sisteminin arka planda çalıştırdığı yüzlerce arayüz vb. progamlarını çalıştırmadan), direkt donanım seviyesinde kurduğundan dolayı hem gecikme hem de performans olarak daha iyi sonuç vermektedit.

Tip 2 hypervisor ise tek kullanıcı odaklı kişisel bilgisayarlarınızda gündelik olarak kullandığınız makinenizden tamamen bağımsız ama yine aynı donanımda çalışan minik bir bilgisayar gibidir. Tip 2 hypervisor, işletim sistemi üzerinde çalışan bir program olduğundan dolayı, oluşturulan sanal makinenin performansı düşük ve hareketleri gecikmeli olabilir. Üretim seviyesinde bu sebeplerden dolayı tercih edilmez.

Hypervisor tipleri arasında mimari bir gösterim

Sanallaştırma progamı ile sanallaştırılan makinelerin bir diğer avantajı da birer “image” olarak hazır paket şeklinde kaydedilebilmeleridir. Herhangi bir marka laptop satın aldığınızda bu laptop içerisinde markasına ait belirli yazılımlarla birlikte gelir, fan hızı depolama yardımcısı vb. gibi. Bu programlar kullandığınız işletim sisteminin sunduğu hizmetler olmasa da bilgisayarınızın düzgün çalışabilmek için ihtiyaç duyduğu sürücüleri de içerir.

Aynı bu laptoplar gibi yarattığınız sanal makineleri içerisinde ilk açıldığı andan itibaren sahip olacağı sürücüler, yazılımlar, iletişim protokolleri gibi ayarlarla kaydedip bunları istediğiniz her donanımda istediğiniz sayıda bu kayıtlı hallerinden yaratabilirsiniz.

Bu önceden paketlenme özelliği sayesinde, örnek olarak, gün içerisinde değişken miktarda ziyaret edilen web siteleri erişim talebi sayısına göre talepleri yönlendirmekten sorumlu sanal makine sayısını, gelen talep sayısına göre otomatik olarak değiştirebilir. (Buna horizontal scaling yani dikey ölçeklenme denir. Ek olarak makine sayısı yerine varolan makinelerin erişebildiği kaynak miktarını değiştirmeye de vertical scaling yani yatay ölçeklendirme denir.)

Bu “image” kullanılarak eğer bir sanal makinede sorun çıkarsa makine içerisinde sorunu çözmekle uğraşmadan makine direkt kapatılıp yerine baştan yenisi açılabilir.

Sanallaştırmanın Buluttaki Yeri

Bulut kavramının kısaca üzerinden geçecek olursak, buluttan faydalanan sistemlerin görece sınırsız kaynağa erişebilmesine olanak tanıyan bir işlemci ve servis havuzu diyebiliriz. Bu tanımı yaptığımızda aslında sanallaştırmanın buluttaki yerini de bir nebze daha iyi kavrıyoruz.

Bulut dediğimiz şey temelinde dünya üzerinde farklı coğrafi lokasyonlarda bulunan sayısız fiziksel sunucunun, sanallaştırma ile parçalara bölünmüş ve ortak bir sistem tarafından yönetildiği bir yapıdır. Bu sanallaştırma ve yönetim katmanları her ne kadar bulutu kullanırken biz kullanıcılara gösterilmiyor olsa da bu tür karmaşık sistemlerde arka planda ne olduğunu bilmek gerekiyor.

Günümüz bulut sağlayıcılarının birden fazla müşterisi ve çalıştığı birden fazla ülke olduğundan dolayı hem uyumlu olmaları gereken kanunlar açısından hem de müşteriler arası bilgi sızıntısını önleme açısından temelinde sanallaştırmanın sunduğu izolasyon prensibinden yararlanıyorlar. Bu işlem bahsedildiğinde çok karmaşık gibi gözükse de sanallaştırılan makinelerin kurulumunun düzgün yapıldığı durumda programlar ve diğer makineler için fiziksel bir makineden hiçbir farkı olmadığını hatırlamakta fayda var, yani sanallaştırmanın işin içerisine girmesi, sistem ve uygulamalar perspektifinden yalnızca sunucu sayınızı arttırmak anlamına geliyor.

Son Söz

Sanallaştırmanın basitçe ve mümkün olduğunca terimlerden uzak şekilde anlatmaya çalıştığım bu yazım umarım sizin için faydalı olmuştur. Sanallaştırma kavramı tabii ki de bu yazıda bahsettiğimden çok çok çok daha fazla detaya sahip ancak hepsine girecek olursam iş sanallaştıma 101 kitabı yazmaya doğru gidecek :)

Aklınızda sanallaştırma kavramının ne olduğu oturduysa IBM ve VmWare gibi sanallaştırma çözümlerinde tarih yazmış şirketlerin bu konuda detaylı döküman ve kaynakları var. İlginizi çektiyse, terim silsilesine hazır hissediyorsanız aşağıdaki kaynaklar kısmından bu sitelere ulaşabilirsiniz.

Bu ve benzeri yazılar için beni ve SabancıDx sayfamızı takip etmeyi unutmayın, bulut ve benzeri konularla yakından ilgilenen yetenekli sekiz kişilik bir ekip olarak türkçe kaynak sayısını arttırma amaçlı, düzenli olarak bu konuları keşfeden yazılar yazıyoruz.

Sağlıcakla kalmanız dileğiyle.

-Uygar

Kaynaklar

  1. 7 Introduction to Server Virtualization and Application Virtualization | Mycloudwiki
  2. Virtualization Basics (vmware.com)
  3. Hypervisor Nedir? (elfanet.com.tr)
  4. Virtualization in Cloud Computing and Types — GeeksforGeeks
  5. What Is Virtualization? | IBM

--

--