Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Eğer yerel ortamımızda fiziksel bir sunucu ile çalışmak istiyorsak ya ek bilgisayarlar kullanmalı ya da bunun için malzeme temin etmeliyiz. Ancak bu yol hem gereksiz maliyetli hem de kullanışsız olduğundan çoğu geliştirici yerel ortamını sanallaştırma yardımı ile hazırlamaktadır.
Biz de kendi sunucularımızı VirtualBox ile sanal olarak oluşturacak ve bunlar üzerinden işlemler yürüteceğiz.
Sanallaştırma kavramı ilk olarak 1950'lerde ortaya atılır. 1960'larda IBM'in bu konu üzerinde çalışmaları olur ve 1990'larda VMware ile popülerlik kazanır. VMware'in ardından XenSource, Microsoft ve Oracle da bu kavram üzerinde çalışmaya başlar.
Sanallaştırma teorik olarak bilgisayar kaynaklarının bilgisayar kullanıcılardan soyutlanmasını ifade eder. Bunu sağlamak için bir soyutlama tabakası kullanılır. Bu tabaka çoğunlukla Hypervisor ya da Virtual Machine Monitor (VMM) olarak adlandırılır. Hypervisor'un üzerinde çalıştığı kaynak ana kaynak, bu kaynakta çalışan sanal yazılımlar da misafir yazılım olarak adlandırılır. Sanallaştırma amaçlarına ve teknolojisine göre iki farklı başlıkta incelenilir.
Ağ sanallaştırma, geleneksel olarak donanımdan yazılıma teslim edilen ağ kaynaklarının soyutlanması anlamına gelir. Bu sanallaştırma çeşidinde, birden çok fiziksel ağı tek bir sanal ağda birleştirebilir veya bir fiziksel ağı ayrı, bağımsız sanal ağlara bölebilir.
Sunucu sanallaştırma, fiziksel bir sunucuyu birden çok yalıtılmış sanal sunucuya bölme işlemidir. Her sanal sunucu kendi işletim sistemlerini bağımsız olarak çalıştırabilir. Bu sanallaştırma çoğunlukla sunucu kaynaklarını sunucu kullanıcılarından gizlemek için kullanılır.
Masaüstü sanallaştırma, uzak bir cihazdan erişilebilmesi için bir kullanıcının masaüstünün simüle edilmesidir. Bu sayede kurumlar, çalışanlarının bağlanmak için kullandıkları cihazlarının konumlarından, kaynaklarından, işletim sisteminde ve benzeri diğer etkilerinden etkilenmeden bağlandıkları cihazlarda çalışmasına izin verir.
İşletim sistemi sanallaştırma, doğrudan fiziksel bir donanım üzerinde ya da bir işletim sistemi üzerinde aynı fiziksel kaynakları kullanarak birden fazla misafir işletim sisteminin çalıştırılmasıdır.
Depolamanın sağlanması ve yönetiminin fiziksel donanımdan ayrılması için veri depolamayı soyutlayan bir sistemdir. Bu sanallaştırma, ayrı fiziksel depolama kaynakları tek bir mantıksal aygıt olarak yönetebilir. Sunucu sanallaştırmasından farklı olarak sanal depolama, yazılım kullanılarak oluşturulan bellekte çalışan depolama kontrolcüsüdür.
Hypervisor tabanlı sanallaştırma teknolojisi uzun süredir kullanılmaktadır. Fiziksel kaynaklar ile yazılımları birbirinden soyutlayan hypervisor katmanı kullanılarak bu tür sanallaştırma elde edilir. Bu sanallaştırma iki türlü elde edilir.
Tip 2'de Hypervisor doğrudan fiziksel kaynak üzerine kurulur. Fiziksel kaynak ile Hypervisor katmanı arasında herhangi bir işletim sistemi bulunmaz. Fiziksel kaynak doğrudan kullanıldığı için Tip 1'e göre daha performanslıdır. Bu tür sanallaştırma Apple Boot Camp, Microsoft Hyper-V, Proxmox ve VMware ESXi ile sağlanabilir.
Tip 1'de Hypervisor fiziksel kaynak üzerine kurulmuş işletim sisteminin üzerine kurulur. Fiziksel kaynakla iletişim ana işletim sistemi tarafından sağlanacağı için Tip 2'ye göre daha az performanslıdır. Bu sanallaştırma teknolojisi genellikle test amaçlı kullanılır. Bu tür sanallaştırma Oracle VirtualBox ve VMware Player ile sağlanabilir.
Linux tabanlı geliştirilmiş yeni bir sanallaştırma teknolojisidir. Tip 1'deki Hypervisor katmanı yerine işletim sisteminin üzerinde Docker Engine denilen bir katman bulunur. Bu katman sanallaştırılacak her bir uygulama için ayrı bir işletim sistemi gibi davranır. Bu sayede diğer sanallaştırma türlerine göre tek bir fiziksel kaynakta daha çok yazılım sanallaştırılabilir.
Multics, daha çok program geliştiricileri için düşünülmüş, çok kullanıcılı bir işletim sistemi projesidir. Kapsamının dışına çıkması ve projenin yavaşlaması nedeniyle projeye son verilir. Bu işletim sistemi 1969 yılında Bell laboratuvarlarında, kapsamı küçültülerek UNICS adıyla yeniden yayınlanır. Düşük seviyeli bir dil ile geliştirilen bu işletim sistemi 1973 yılında Dennis Ritchie (C programlama dilinin yaratıcısı) ve Ken Thompson tarafından C dilinde yeniden yazılır. UNIX adındaki bu işletim sistemi farklı bilgisayar platformlarına kolayca taşınır ve popülerleşir. Hızlı bir şekilde üniversite ve şirketlerde yaygınlaşan UNIX ile birlikte benzer sistemlerinin de geliştirilmesi uzun sürmez.
1980’li yılların başında AT&T şirketi para kazanmak amacıyla UNIX işletim sistemini pazarlamaya başlar. MIT’nin Yapay Zeka laboratuvarlarında 1980’li yılların başına kadar yazılım geliştirici olarak çalışan Richard Stallman, bir röportajında şu sözleri söyler:
Bu kararının ardından 1984 yılında tamamen özgür yazılımlardan meydana gelen bir işletim sistemi ve bu işletim sisteminin araçlarının geliştirilmesine başlar. Kısaca GNU adı verilen bu çalışmanın açılımı GNU is Not Unix yani GNU, Unix değildir. Stallman sonrasında yazılan diğer özgür yazılımların bir şemsiye altında toplanması için Free Software Foundation'ı yani Özgür Yazılım Derneği'ni kurar ve bu yazılımları korumak üzere General Public License yani Genel Kamu Lisansı adı verilen yazılım lisansını oluşturur. Bu derneğin amacı, özgürce dağıtımı yapılabilecek ve kodları üzerinde değişiklik yapılabilecek GNU projesine destek vermektir. GPL lisansı da temelinde, GNU projesi kapsamında geliştirilen uygulamaların, istenilen herhangi bir amaç doğrultusunda çalıştırma, kopyalama, dağıtma ve geliştirme özgürlüğünün korumasını hedefler.
Linux, Linus Torvalds adında Finlandiyalı bir bilgisayar mühendisinin 1991 yılında Helsinki Üniversitesi’nde henüz bir öğrenciyken, kişisel bilgisayarında kullanmak üzere geliştirmeye başladığı bir işletim sistemi çekirdeğidir. İnternet üzerinden duyurulan Linux çekirdeği, açık kaynak kodlu ve özgür bir yazılım olması sebebiyle programcıların büyük ilgisini çekmiştir ve kısa süre sonra, GNU hareketinin bir meyvesi ve aynı zamanda taşıyıcısı haline gelir. GNU için yazılmış özgür yazılımlar da çok kısa süre içerisinde Linux çekirdeği ile uyumlu hale getirilir ve ortaya güçlü, esnek ve açık kaynak kodlu bir işletim sistemi çıkar. GNU araçlarından ve Linux çekirdeğinden oluşan GNU/Linux işletim sistemi zaman içerisinde telaffuz kolaylıklarından ötürü Linux olarak adlandırılmaya başlanmıştır.
Özgür yazılım, kullanıcıların özgürlüğüne ve topluluğa saygı duyan yazılım demektir. Kısaca, kullanıcıların bir yazılımı çalıştırma, kopyalama, dağıtma, değiştirme ve geliştirme özgürlüğüne sahip olduğu anlamına gelir.
Özgür yazılımın kopyalarına sahip olmak için duruma göre ücret ödemeniz gerekebilir. Ancak kopyalarına nasıl sahip olduğunuzdan bağımsız olarak, her zaman için yazılımın kopyalama, değiştirme ve hatta kopyalarını satma özgürlüğüne sahipsinizdir.
Öyleyse, özgür yazılım bir fiyat değil, özgürlük meselesidir. İngilizcedeki "free software" kavramını anlamak için, bedava ekmeği değil ifade özgürlüğünü düşünmek gerekir. GNU’nun savunduğu dört temel özgürlük bulunmaktadır. Bir yazılım bu dört temel özgürlüğe sahipse, o yazılım özgür yazılımdır.
0 Numaralı Özgürlük: Herhangi bir amaç için, istediğiniz şekilde yazılımı çalıştırma özgürlüğü.
1 Numaralı Özgürlük: Her ne istiyorsanız onu yaptırmak için programın nasıl çalıştığını ögrenmek ve onu değiştirme özgürlüğü. Yazılımın kaynak koduna ulaşabilmek, bu iş için ön koşuldur.
2 Numaralı Özgürlük: Kopyaları dağıtma özgürlüğü.
3 Numaralı Özgürlük: Değiştirilmiş sürümlerinizin kopyalarını dağıtma özgürlüğü.
2 Numaralı Özgürlük sayesinde yazılımı dağıtarak başkalarına yardım edebilirsiniz. 3 Numaralı Özgürlük sayesinde de topluluğun sizin değişikliklerinizden faydalanmasını sağlayabilirsiniz.
Özgür yazılımlar tek çeşit lisansa sahip değildir. Temelde bütün lisanslar benzer olmalarına rağmen, farklı kullanımlara özgü onlarca lisans bulunmaktadır. En çok kullanılan örnekleri aşağıdaki gibidir.
GPL: (Genel Kamu Lisansı) Özgür yazılımların %66'sı tarafından tercih ediliyor. Yazılımın özgür olmasının yanı sıra, özgürlüğünü sürdürmesini de garanti altına alır.
LGPL: (Kısıtlı Genel Kamu Lisansı) GPL'den farklı olarak, yazılımın özgür olmayan yazılımlar tarafından da kullanılabilmesine olanak tanıyor.
Apache Lisansı GPL'e ek olarak, patentlere yönelik belirli kısıtlamalar içeriyor.
Açık kaynak kodlu bir yazılım özgür olmayabilir. Ancak, özgür bir yazılım açık kaynak kodludur. Açık kaynak teknik avantajlara odaklanır. Yazılımı açık kaynak olarak geliştirmek teknik olarak daha başarılı bir model olduğu için tercih edilir. Özgür yazılım ise teknik avantajlarının yanı sıra işin toplumsal boyutunu ve özgürlük kavramını da ele alır.
Güvenilirlik: Açık kaynak kodlu yazılımların belki de en büyük artısı olan güvenilir oluşları, kimi çevreler tarafından doğru olmayan bir mantıkla bir dezavantaj gibi gösterilmeye çalışılmakta ve topluma ‘Açık kaynak kodlu bir yazılımın tam olarak nasıl çalıştığı kaynak koduna bakılarak bilinebildiği için yazılımın barındırdığı güvenlik problemleri saldırganlar tarafından kolaylıkla tespit edilip kullanılabilmektedir’ gibi bir düşünce yerleştirilmeye çalışılmaktadır. Fakat açık kaynak kodlu bir yazılım, doğası gereği geliştirilmesi sürecinden kullanımı zamanına değin onbinlerce göz tarafından denetlenmektedir. Var olması muhtemel bir güvenlik problemi ya da kötü niyetli bir programcı tarafından bilinçli olarak yerleştirilebilecek bir kod parçası yazılım sizin elinize ulaşmadan tespit edilmekte ve hızla düzeltilmekte ya da size ulaşması engellenmektedir. Ayrıca kimse, binlerce insanın kollektif bir şekilde geliştirdiği bir yazılımın güvenilmez olduğunu idda ederken, sınırlı sayıda kişinin geliştirdiği ve kaynak kodunu kapattığı bir yazılımın güvenilirliğini kimin ve nasıl garanti edeceği sorusuna yanıt veremez.
Sağlamlık: Yine açık kaynak kodlu yazılımların doğal geliştirme süreci içerisinde çok sayıda insan tarafından denenmeleri ve kaynak kodlarının gözden geçirilmesi sonucunca ortaya yüksek kalitede, stabil ve kuvvetli yazılımlar çıkmaktadır.
Esneklik: Kaynak kodu açık bir yazılım hızla ve kolaylıkla yeni bir sistem üzerinde çalışacak şekilde yeniden yapılandırılabilmekte, bir kısmı çıkarılarak kapsamı daraltılabilmekte ya da eklenen yeni fonksiyonlarla kapsamı genişletilebilmektedir.
Uygulama Desteği: Çok geniş bir yelpazede ve çeşitlilikteki bir çok açık kaynak kodlu özgür yazılım her gün duyurulmaktadır. Herhangi bir konudaki ihtiyaç açık kaynak kodlu yazılımlarla hızlı ve kaliteli bir şekilde çözüme kavuşturulabilmektedir.