Sanal Makine Nedir?

Çoğu insan sanal makine terimini duyduğunda, bir zamanlar fütüristik olan sanal gerçeklik setlerini veya modern bilgisayarlarında eski video oyunlarını oynamanın bir yolunu düşünürler. Ama burada bahsettiğimiz sanal makineler bunlar değil. Peki, sanal makine tam olarak nedir ve geliştiriciler ile ne ilgisi vardır?

Sanal Makine Nedir?
sanal makine nedir

Hepimiz işletim sistemlerimiz üzerine yemin edebiliriz. Windows, macOS, Linux, iOS, Android veya her ne kullanıyor olursanız olun; muhtemelen işletim sisteminizin neden üstün olduğuna dair bir listeniz vardır. Sorun değil, hepimiz böyleyiz.

Ancak bunu bir geliştirici olarak yapacaksanız, uygulamalarınızın ve web sayfalarınızın her yerde çalışmasını istiyorsanız diğer işletim sistemlerini keşfetmeniz gerekecek. Bir Mac üzerinden çalışıyorsanız, programınızın Windows'ta da çalıştığını tam olarak nasıl bileceksiniz? Android için tasarladığınız harika web uygulamasının iOS'ta da aynı görüneceğini kim söyleyebilir?

Geliştiricilerin sanal makineleri sevmesinin nedeni budur. Bu makaleyi okuduktan sonra; ne olduklarını, nasıl çalıştıklarını ve insanların bunları neden kullandığını anladığınızda muhtemelen siz de seveceksiniz.

İşletim Sisteminiz ve Siz

Sanal makinelerin ayrıntılarına girmeden önce, bir işletim sisteminin ne olduğunu ve nasıl çalıştığını anlamak önemlidir.

Bilgisayarlar, akıllı telefonlar ve tabletlerin tümü fiziksel bileşenlerden veya donanımdan yapılmıştır. Sabit sürücüler, işlemciler, piller, fanlar ve bellek kartlarının tümü donanımın bir parçasıdır.

İşletim sistemi (OS), bilgisayarınızdaki veya cihazınızdaki donanım bileşenlerini doğrudan kontrol eden bir yazılımdır. Windows, macOS, Linux, iOS veya Android gibi işletim sistemleri, donanımı farklı yollarla kontrol edecek şekilde programlanmıştır.

Bilgisayarınızda veya cihazınızda bir uygulama kullandığınızda, işletim sisteminiz o uygulamayı çalıştırmak için cihazın donanım bileşenlerini kullanır.

Sanal Makine Nedir?

Bilgisayarınızın veya cihazınızın donanım kapasitesi (bellek miktarı, işlem gücü vb.) yeterli ve yazılım kodu onunla uyumlu olduğu sürece işletim sisteminiz aracılığıyla hemen hemen her uygulamayı çalıştırabilirsiniz. Tamamen farklı bir işletim sistemi kullanıyormuşsunuz gibi görünen ve hissettiren bir uygulamayı bile çalıştırabilirsiniz.

Sanal makine tam olarak budur. Bir bilgisayarda, mobil cihazda ve hatta sunucuda, kurulu işletim sisteminden farklı bir işletim sistemi gibi görünüp çalışacak şekilde tasarlanmış bir yazılım uygulamasıdır.

Sanal Makine Nasıl Çalışır?

Bir sanal makineyi çalıştırmak için, donanım kaynaklarını sağlayan bir ana bilgisayar veya sunucu ile çalışmanız gerekir. Buna ana makine denir. Belirli bir ana makinedeki her sanal makineye misafir makine denir.

Donanım kaynaklarını yönetmek için ana makineler ve misafir makineler, hiper yönetici adı verilen özel bir yazılım türüne güvenir. Bir hiper yönetici, sanal makine için CPU, bellek ve depolama gibi bazı donanım kapasitelerini bölümlere ayırır. Bu şekilde sanal makine, ana makine sisteminin geri kalanından izole edilmiş halde tutulur.

Bir sanal makine kullandığınızda, işletim sistemi yalnızca kendisine tahsis edilen kaynakları tanıyacaktır. Örneğin, 16 GB RAM'e sahip bir bilgisayarınız varsa ve hiper yöneticiniz sanal makineye 4 GB RAM veriyorsa, sanal makine işletim sisteminizdeki sistem ayarları 4 GB RAM'e sahip bir bilgisayar kullandığınızı gösterecektir.

Neden Sanal Makine Kullanılır?

Yazılım geliştirmeyle ilgilenen herkes (Ön Uç Geliştiriciler, Arka Uç Geliştiriciler ve Tam Yığın Geliştiriciler) sanal bir makine kullanmaktan yararlanabilir. Bunun nedeni, sanal makinelerin çok fazla test esnekliği sunmasıdır. 

İşte sanal makinelerin en büyük avantajları:

Aynı Anda Birden Fazla İşletim Sistemi Çalıştırabilme

Bir sanal makine kullanmanın en büyük avantajı, aynı anda farklı farklı işletim sistemlerini çalıştırabilmektir. Tek sınırlayıcı faktör, ana makinenin donanım kaynaklarıdır.

Bu, uygulama veya yazılım geliştirirken, başka bir fiziksel makine satın almak veya farklı bir sunucu kullanmak zorunda kalmadan, çalışmanızı birden çok işletim sistemi üzerinde etkin bir şekilde test edebileceğiniz anlamına gelir.

Bir Sunucunun Gücüne Her Yerden Erişebilme

Bir sunucu veya ana makine kullanıyorsanız, çevrimiçi bağlantınız olduğu sürece sunucunun işlem gücüne erişebilirsiniz. Teorik olarak, bir dizüstü bilgisayardan veya bir tabletten yüksek performanslı programlar yazabilir, çalıştırabilir ve test edebilirsiniz.

Komple Sistem İzolasyonu

Bir uygulama tasarlıyorsanız, gözden kaçırdığınız bir hata nedeniyle programın tüm sisteminizi çökertmesi isteyeceğiniz son şey olur.

Sanal makineler, geliştiricilere uygulamalarını doğrudan fiziksel bir makinede çalıştırmadan önce test etmeleri için sanal bir alan sağlar. Sanal makine ortamınızda bir disk çökmesi olursa, ana makinenin disk bölümünü etkilemez.

Sanal Makinelerin Dezavantajları

Sanal makineler, geliştiriciler için onları mükemmel bir seçim haline getiren pek çok avantaj sunsalar da mükemmel bir çözüm sunmazlar. Sanal makineler özellikle sistem verimliliğini azaltır ve ağ karmaşıklığını artırır.

Sanal Makineler Daha Az Verimlidir

Bilgisayarınızın yerel işletim sisteminde bir uygulama çalıştırdığınızda, işletim sistemi bilgisayarın donanım kaynaklarına doğrudan erişebilir. Ancak sanal bir makinede, bölümlenmiş donanım kaynakları yalnızca dolaylı olarak kullanılabilir. Sanal makinede bir uygulama çalıştırdığınızda, sanal makine önce ana makinenin işletim sistemi aracılığıyla donanım kaynaklarına erişim ister. Bu, sanal makineleri daha yavaş ve daha az verimli hale getirir.

Sanal Makineler Ağ Karmaşıklığı Ekler

Bir fiziksel makine ağını yönetmek ve güvenliğini sağlamak yeterince zor olabilir ve sanal makineler eklemek bunu daha kolay hale getirmez. Bir sonraki geliştirme projenizde sanal bir makine kullanmayı planlıyorsanız, sanal makinenizi güvende tutmak veya BT ekibinizle konuşmak için fazladan biraz BT çalışması yapmaya hazır olduğunuzdan emin olun.

Bir Sonraki Geliştirme Projeniz İçin Bir Sanal Makine Kullanın

İlk uygulamanızı nasıl oluşturacağınızı öğrenmeye hazır olduğunuzda (ister ön uç React uygulaması ister arka uç JavaScript uygulaması olsun), farklı işletim sistemi ortamlarında nasıl çalıştığını görmek için bir sanal makine kullanmayı düşünün. Çünkü her ne kadar dezavantajları bulunsa da mevcut en iyi ve en masrafsız yol bu gibi duruyor.