IAAS, PAAS, SAAS ve Windows Azure (SDK2.2)

0 dakikada yazıldı

18052 defa okundu

Düzenle

Windows Azure tarafına hızlı bir giriş yapmadan önce bu yazımızda daha
fazla "Ne? nedir?" gibi :) veya "bulut da ne ola ki" gibi sorular yavaş
yavaş cevaplayabilir hale gelmek için genel kavramlara göz atacağız.
Manzarayı netleştirdikten sonra Windows Azure'un bu manzara içerisindeki
duruşunu da görüp ileriki yazılara doğru detaylara saldıracağız ;)

Dertlerin paylaşımı...

Bugün Windows ortamı için bir uygulama yazdığımızda diske bir dosya
yazmak veya diskten bir dosya okumak istediğimizde .NET platformunda
System.IO altındaki sınıflardan faydalanıyoruz. Bu sınıfları kullanarak
rahatlıkla bilgisayarın diskine erişim sağlayıp istediğimiz işlemleri
yapabiliyoruz. Peki programınızın çalıştığı bilgisayarda diskin IDE/SATA
vs gibi farklı donanım bağlantıları ile bilgisayara bağlı olması ile
ilgilenmemiz gerekiyor mu? Kesinlikle hayır. Bunun nedeni işletim
sisteminin donanım sürücüleri aracılığı ile donanım iletişimini
yönetirken tüm bu detayları bizden saklıyor olması. Tabi bu konu bu
kadar basit değil ve arada birçok katman var fakat bizim kabaca
edindiğimiz deneyim kullandığımız işletim sistemi ve diğer platformlar
sayesinde kodumuzu yazarken sisteme bağlı bir diskin hangi donanımsal
arabirimler ile bağlandığını umursamamız gerekmediği. İşte Windows Azure
da dağıtık uygulamalarda aynen bu kolaylığı sağlıyor ve sizi dağıtık
uygulama geliştirmenin birçok derdinden kurtarıyor.

Bir sonraki twitter'ı yazsam?

Kulağa çok radikal gelebilir fakat bir sonraki twitter veya facebook
veya belki de daha adını bile koymadığımız yeni bir girişimin
eşindiğinde olabilirsiniz. Belki de sadece elinizdeki bir web
uygulamasını alıp milyonlarca insanın kullanabileceği web ortamına
koymak ve hatta bunu servis olarak satmak istiyorsunuz. Senaryolar çok
genişletilebilir ve hatta bunları da ilerleyen zamanlarda detaylı olarak
konuşacağız fakat burada önemli nokta benim bir yazılım geliştirici veya
firma olarak hazırladığım uygulamanın artık tek bir fiziksel sunucunun
gücü ile yetinemiyor olması. Peki şimdi size soruyorum....

Bu soruları çoğaltmak mümkün. Önemli olan şu; çoğu yazılımcının veya
şirketin bu konularda derin deneyimleri yok, bilgi birikimleri yok.
Diğer yandan bu kararların hepsinin verilmesi için ayrı uzmanların firma
içerisinde bulunması ve hatta alınan bu kararlar sonrasında, örneğin
sanallaştırma çözümü olarak Hyper-V kullanmaya karar verdiyseniz,
seçilen ürün ve teknolojilerle ilgili sistem yönetimini yapabilecek
kadronun da sürekli şirket içerisinde istihdam edilmesi gerekecek.

Aslında elimizdeki resme kuş bakışı bakacak olursak, yazılım geliştiren
bir kişi / firma olarak hiç uzmanlık alanınızda olmayan ve özünde işiniz
olmayan tüm bu ek detaylar ile uğraşmak yerine tüm bunları bir hizmet
olarak alsanız çok daha rahat ve ucuz olmaz mı?

IAAS, PAAS ve SAAS
IAAS, PAAS ve SAAS

Azure'un varoluş şekli ve nedenini anlamak için yukarıdaki manzara çok
değerli. Normal şartlarda yazdığımız bir uygulamayı müşteri ile
buluşturmak için slaytta en solda göreceğiniz manzara geçerli oluyor.
Birden çok sunucunun gücüne ihtiyacımız olacağını da düşünürsek
müşterideki doğru networking ayarlarının uygulamasından tutun doğru disk
seçimi ve disk yapılandırmasına kadar tüm detayları uygulamamızı istenen
performansla çalıştırabilmek adına düzenlemek zorunda kalıyoruz. Oysa bu
konular dahil işletim sisteminin yüklenmesi ve ayarlanması,
sanallaştırma tercihleri ve yönetilmesi gibi birçok konu bir yazılım
geliştirici ve sağlayıcı olarak çok da bizim uzmanlık alanımızda değil.
Fakat maalesef en alttan başlayıp SQL sunucusunun ve belki de .NET
Framework'ün kurulumuna kadar tüm adımları takip edip en sonunda da
artık kendi uygulamamızın datası ile kodunu ortama taşıyıp müşteriye
teslim edebiliyoruz.

Hikaye sanırım epey uzun ve meşakketli gelmiştir. Tüm bunların yerine
belki de bir sonraki adıma atlayıp "IAAS" modelini uygulayabiliriz.
IAAS yani Infrastructure As A Service yapısında altyapıyı farklı
birileri bize servis olarak sağlıyorlar. Yani artık network ayarlarından
ve yönetiminden tutun, disk seçimi, sunucu yönetimi ve sanallaştırma
gibi konularla benim ilgilenmeme gerek kalmıyor. Bu konularda bir
uzmanlık sahibi olmam, doğru stratejileri seçmem ve yönetimi için ekip
istihdam etmem gerekmiyor. Tabi tüm bunları yapan ve bana bu hizmeti
servis olarak sağlayan kuruma da servislerini kullandığım kadar ücretini
ödüyorum. IAAS servis sağlayıcıları olarak Amazon EC2 veya VMWare
vCloud'u örnek verebiliriz.

Herşey biraz daha yoluna girmiş gibi gözükse de hala elimdeki yazılımı
alıp arkasına da onlarca sunucunun gücünü alarak yazılımımı bir servis
olarak satmayı düşündüğümde veya bir diğer senaryoda bir sonraki
twitter'ı yazacaksam eğer IAAS modelinde işletim sistemini benim kurup
yönetmem, üzerinde .NET Framework gibi runtime kurulumlarını yapmam
hatta SQL sunucumu da kurmam vs gibi dertler var. Ya ben bu dertlerden
de kurtulmak istiyorsam? :) Geriye ne kaldı ki diyebilirsiniz, işte tam
da üstüne basmak istediğimiz nokta zaten bu. Geriye kalan tek şey benim
yazdığım kod, firmamın ürettiği çözüm! Zaten benim de satmak istediğim
şey bu. Yazdığım kodu, hizmeti satabilmek için gereken tüm diğer
(uzmanlık alanım dışı) konularla uğraşmak, o noktalara odaklanmak
istemiyorum.

Karşınızda PAAS!

Aşağıda aynı slaytı tekrar koyuyorum ki manzaranın gidişatını net bir
şekilde takip edebilelim. Üçüncü kolonda göreceğiniz "PAAS" yani
"Platform As A Service" seçeneğinde artık sadece networking vs değil
işletim sisteminden tutun, runtime'lara ve SQL'inize kadar herşey kurulu
olarak geliyor. Sadece kurulu olarak gelmiyor tüm bu altyapının bakımı,
yönetimi de servis sağlayıcı tarafından sağlanıyor. Artık benim sunucu
satın almam, networkü ayarlamam, yönetmem, sanallaştırma çözümlerini
seçmem, yönetmem, işletim sistemi lisansları almam, işetim sistemini
ayarlamam, yönetmem, runtime kurulumlarını yapıp güvenlik ayarlarını
yapmam ve patch yönetimine el atmam vs gibi hiçbir konuyla en ufak bir
ilişkim kalmıyor. Elimdeki uygulamamı ve datamı alıp direk bana sağlanan
PAAS ortamına koyup işimi bitiriyorum.

IAAS, PAAS ve SAAS
IAAS, PAAS ve SAAS

Manzara kulağa ne kadar hoş gelse de tabi herşey toz pembe değil :)
İleriki yazılarda nelerin değiştiği, nelerin kolaylaştığı veya
zorlaştığı gibi konulara da el atacağız. Yukarıdaki slayta göre toplam
kabaca 7 katmanı / işi servis sağlayıcıya atmış olmak bize maddi olarak
birçok getiri sağlasa da tabi ki bir bağımlılık ve belirli senaryolarda
bu bağımlılığın getirdiği sıkıntılar da kendini gösterecektir. Önemli
olan da bu sıkıntılar ile faydaları ölçüp doğru seçimi yaparak "Cloud'a
taşınıp taşınmamamız" gerektiği kararını verebilmek. Bu kararı
verebilecek noktada şimdilik çok uzağız :) Daha bu ilk yazımız.

SAAS nedir peki?

Yukarıdaki görsele baktıkça bir de olayın "Software As A Service" ayağı
olduğunu görüyorsunuzdur. Yine tahmin edebileceğiniz üzere SAAS
modelinde herşey doğrudan sağlayıcı tarafından sunuluyor. Buna güzel bir
örnek olarak Gmail veya Hotmail verilebilir. Biz bu uygulamaları
doğrudan mail için kullanıyoruz, parasını veriyoruz ve bitiyor. SAAS
özellikle IAAS veya PAAS ile beraber düşünüldüğünde yazılım geliştirici
bir firma veya kişi olarak anlamlı bir resim çizecektir. Örneğin siz
yazılımınızı alıp IAAS veya PAAS ortamına koyup kendi müşterilerinize
SAAS sağlıyor olabilirsiniz. Örneğin PAAS ortamında size PAAS servisini
sağlayan firmaya kullandığınız kadar kaynağa karşılık ödemeyi yapıp
üzerine koyduğunuz kendi yazılımınızla beraber bu ortamı SAAS olarak
kendi müşterilerinize farklı fiyatlandırmalar ile satabilirsiniz. Kabaca
aradaki fark da sizin yazılımınız yarattığı değer ve karınız olacaktır.

Windows Azure nasıl giriyor işin içine?

Windows Azure tam da işe ilk başta PAAS tarafından girdi. Yani .NET,
Java her ne ise kodunuzu ve datanızı alıp Windows Azure'un PAAS ortamına
koyup SAAS olarak müşterilerinizle paylaşabiliyorsunuz. PAAS tarafında
Microsoft dışına bakarsak Google AppEngine veya SalesForce.com güzel
örnekler olacaktır. PAAS sayesinde bir sürü dertten kurtulup, sonraki
yazılarda detaylı olarak inceleyeceğimiz bir çok esneklik ile de ciddi
kar edebilirsiniz ;) Bir süre önce Azure'da IAAS da sunulmaya başlandı
hatta yeni gelen componentler ile IAAS tarafı epey de kuvvetleniyor
diyebilirim. Benim şu an için süper ilgi alanıma girmese de IAAS
tarafına göz attığımız yazılar da olacak.

Azure Web Sites ne peki?

Son olarak bahsetmeden geçmek istemediğim bir konu da "Azure Web Sites"
olayı :) Ben Azure Web Sites'ı bir noktaya kadar SAAS olarak kabul
ediyorum. Web sitesini yayınlamak isteyenlere yayın hizmetini SAAS
olarak sunuyor desem aslında ciddi bir anlam kargaşası yaratacak olsam
da PAAS'dan farkının altını çizmek için de böyle birşey yapmak
durumundayım :) PAAS daha ağırlıklı olarak en basit şekli ile inanılmaz
ölçeklenebilirliğe ihtiyacı olan ve mimari açıdan back-end / UI ayrımı
yapmak zorunda kalan (Web / Worker) uygulamalara hitap ediyor. Daha
basit mimariye sahip web sitelerinin yayınlanabileceği Azure Web Sites
içe bir üst kademeye çıkarak detayları biraz daha yazılımcıdan
uzaklaştırmayı amaçlıyor. İki hizmet arasındaki birkaç ipucu verici
farka değinmek gerekirse, PAAS'ta ölçeklenebilirlikte bir sınır yokken
Azure Web Site'da ben bu makaleyi yazarken 10 sunucu sınırı vardı. Diğer
yandan isterseniz Azure Web Sites projenizi paylaşımlı bir sunucuda da
çalıştırabilirsiniz, oysa aynı şeyi PAAS tarafında yapma şansınız
olmayacaktır. Azure Web sites "Cloud" ortamında olunduğunun çok daha az
hissedileceği daha yüksek seviyeli bir hizmet sunarak giriş seviyesi
ölçeklenebilirlik sağlamayı amaçlıyor. Bu hali ile ben IAAS/PAAS
taraflarında herhangi bir konsepte oturtamıyorum Web Sites ürününü :) O
nedenle olsa sa SAAS'tır diyip konuyu burada bitiyorum ;)

Görüşmek üzere.