Bulut Programlama

Yasal Uyari: Bu yazi, BiTKOO firmasinin blogundan, Doron Grinstein’in izni alinarak turkceye cevirilmis ve bazi yerlerde degisiklikler/eklemeler yapilmistir.
Yazinin orjinalini http://bitkoo.com/blog/?p=16 adresinden bulabilirsiniz.

Teknik Bilgi Gereksinimi: Cok az

Bulut programlama son birkac yildir gundeme yogunlukla giren bir kavram. Microsoft firmasininda Azure servisleri adi altinda pazara girmesinden sonra daha cok kisi bulut programlama kavramini duymaya basladi. Peki nedir bulut programlama?

Bu soruyu wikipedia’ya google’a sorabilirsiniz, veya etrafinizdaki kisilere sorabilirsiniz; eminim ortak kavramlar disinda, birbiriyle celisen kavramlarda duyacaksiniz. Peki en basit tanimiyla, nedir bulut programlama:
“Bir firmanin veri saklama, veri isleme (arama/hesaplama vs) islemlerini baska bir firmaya devretmesidir. Bu devir kisminda, islemleri devir alan firmanin, mahkeme karari ile bile, bilgilere ulasamamasi, gerektiginde sisteme dinamik olarak yeni donanim ekleme/cikartma islemlerini yapabilmesi onemlidir. Buna gore verinin ve programin sahibi degismiyor fakat bunlari calistirildigi ortam artik outsource edilmis oluyor.”
 
Peki bulut programlamayi bu kadar cazip olan nedir? Genelde bulut programlamayi anlatirken verilen klasik ornek elektrik/su/gaz gibi kurumlarla yaptiginiz anlasmalardir. Siz evinize su/elektrik/gaz baglattiginizda,  firmanin bu servisi nasil getirdigi ile cok ilgilenmiyorsunuz, ilgilendiginiz tek sey, suya olan ihtiyacaginiz. Kullandiginiz su kadar firma size ay sonunda fatura kesiyor, hic su kullanmazsaniz genelde hicbir ucret odemiyorsunuz.  Kendi sirketinize bir sunucu ciftligi aldiginizda, sunucular calistigi surece bunlarin elektik masrafi odemeniz gerekiyor, lisans anlasmalari, bakim ucretleri, sunucu yenilenmeleri gibi masraflari da duzenli olarak karsilamaniz gerekiyor. Bu masraflari sunuculari hic kullanmazsanizda odemeniz gerekiyor. Ayrica eger musterileriniz baska bir kitada ise, kitalar arasi internet yavasligindan dolayi, o musterileriniz icin bir yavaslik soz konusu olabiliyor. Bulut ortaminda ise, belirli bir bolgeden gelen yogunluga gore, verileriniz/programlariniz o bolgedeki sunuculara otomatik olarak kopyalaniyor. Ozel gunlerde (bayram, yilbasi vs), sistemde yogunluk olacagini dusunuyorsaniz, cok hizli bir sekilde sisteminize hafiza/bandwith/cpu ekleyip, ozel gunlerin sonunda bunlari kaldirabiliyorsunuz.

Su an firmalar bulut programlama icin programciya bircok degisik altyapi sunuyor, ornek olarak Microsoft .NET ortaminda gelistirme yapiyorsaniz,Microsoft Azure ortamini daha rahat kullanabilirsiniz. Visual Studio ortaminda gelistirme yapip, uygulamanizi buluta atabilirsiniz. Eger Amazon ortamindaysaniz, sistemi kendiniz konfigure edebilirsiniz (isletim sistemi, veritabani vs).
Bulut progralama ortamini sunan firmalar genelde “su an ki programinizi alin, cok az degistirip, buluta atabilirsiniz” iddiasinda bulunsa da, gercekte bu islemler bu kadar kolay olmuyor. Hem sistemi alirken, hem konfigure ederken, hem de programlarken oldukca teknik bilgi ile karsi karsiya kalabilirsiniz.
Peki programci icin ideal bulut programlama ortami nasil olmalidir? Ornek olarak veri saklama (storage veya veritabani) islemlerinizi bulut ortamina atabilsek, nasil bir onyuz programcinin isini kolaylastirirdi?

Benim vizyonuma gore olmasi gereken basit bir onyuz (interface) su sekilde olabilir:

using System;
using System.Xml;
namespace BiTKOO
{
interface INGI
{
Guid Put(XmlDocument data);
XmlDocument Get(XmlDocument query);
Guid Monitor(Uri callbackAddress, XmlDocument query);
bool UnMonitor(Guid id, XmlDocument securityContext);
}
}

Guid Put(XmlDocument data): Bu fonksiyon buluta herhangi bir veriyi koymak ici kullanilabilir. Geriye donen diger Guid. 
Bu XmlDocument veri tipinin icinde ise guvenlik, sifreleme, kimlik dogrulama, yetki dogrulama, retention kurali, verinin kendisi icin
segmentler bulunabilir. Bu xml veri tipine daha sonra ihtiyaca gore veriyi hangi ortamda saklanabilecegi, eski veriye ne
yapilmasi gerektigine dair bilgiler bulunabilir.

XmlDocument Get(XmlDocument query): Bu fonksiyon buluttan veriyi cekmek icin kullanilabilir. Query parametresinde hangi veriyi
secmek istedigimiz (ornegin butun verilerimi, yoksa belirli bir sorguya icin mi: sehir==”istanbul” vs), bu veriyi almak isterken hangi yetkiyi,
kimligi kullanacagimiz, eger sifreleme varsa bununla ilgili veriler bulunabilir.

Guid Monitor(Uri callbackAddress, XmlDocument query): Eger buluttan bir veriyi cekip, baska bir adrese gonderilmesini istiyorsak,
bu fonksiyonu kullanabiliriz. Ornek bir senaryo su sekilde olabilir: Stok bilgilerinden, stok kodu "AKBANK" olan bilgiyi cek,
her 1 saatte, belirli bir web servisini cagir ve sorgu sonucunu buraya gonder. XmlDocument icinde kimlik/yetki dogrulama,
sifreleme islemleri ile ilgili segmentler bulunabilir.

Bool UnMonitor(Guid id, XmlDocument securityContext): UnMonitor fonksiyonu, yukarida belirtilen Monitor ile baslatilan bir servisi durdurmak icin kullanilir.

Bu onyuzu bir bulut sisteminin kullandigini dusunurseniz, sizin programci olarak kullandiginiz dilin onemi kalmiyor. Bunun disinda programci olarak:
* Sunucu nerede bariniyor?
* Sunucuda hangi isletim sistemi kosuyor?
* Ortamda load balancer var mi?
* Veriyi nasil sifrelerim?
* Sunucu retention nasil uygulayacak?
* Veritabani nasil?
* Sistem yogun oldugunda kac tane sunucu eklensin otomatik olarak
* …

gibi islemlerle biz ilgilenmiyoruz. Bunlar acik protokoller sayesinde veya basit konfigurasyonlarla hallediliyor.
Bu vizyonumuz gerceklestiginde, artik programcilarin sistemin yol actigi limitlerden kurtulup, daha yaratici yazilim cozumleri ureteceklerine inaniyoruz.

Peki sizin bu konudaki gorusleriniz nedir?

Hakkinda: Yaziyi yazan/ceviren: Volkan Uzun, BiTKOO (http://www.bitkoo.com) firmasinda Principal Software Developer olarak calismaktadir.
Kendisine volkan@[nospampease]bitkoo.com adresinde ulasabilirsiniz.



Etiketler :




0.0352041721344 sn. | 4