daron yöndem | Microsoft Regional Director | Silverlight MVP
Microsoft Regional Director | Silverlight MVP

Bu hafta OpenDoor serisinin Bahrain ayağındaydım :) Bahrain'e ilk ziyaretim oldu bu, daha önce gitma şansım olmamıştı. Fakat tabi ki bölgedeki diğer ülkelerde yaşadığım deneyimlerden farklı bir deneyim yaşadım diyemem. Hatt bazılarını :) twitter'dan paylaştım da :)

Microsoft OpenDoor, Bahrain
Microsoft OpenDoor, Bahrain

Etkinlikte Azure, Windows Phone, Windows 8 Metro Development, HTML5, Kinect gibi sayıca bol oturumlarımla  neredeyse ana salonlardan birine el koymuştum konuşmacı olarak :) Katılımcı kitlesi süperdi diyebilirim, beklediğim çok ötesinde bir bilgi ile karşılaştım.

Haftaya da "Career Fair Day" de konuşmak üzere Qatar'da olacağım ;) Görüşürüz!

Windows Azure dünyasına girişimize devam ederken :) sıra geldi yavaş yavaş elleri kirletmeye... Azure ile ilgili ilk projemizi yaratma yolunda ilerlerken doğal olarak Visual Studio açıp birşeyler yapmak için bazı yüklemeler yapmamız gerekecek. Fakat onların öncesinde birkaç sorun yaratabilecek noktadan bahsetmek istiyorum, sonra da yükleme senaryomuza bakarız.

SQL 2008 R2 Express

Benim gibi kaç tane çılgın var bilmiyorum fakat ben developer makinesinde SQL Express sevmeyen bir insandım :) Bunu desteklemek için birçok neden bulabilirim ama detaylara girmeyelim :) Genelde hep SQL'in Developer Edition'ı default instance kurar devam ederdim. Windows Azure SDK'yi kurup local emülatörleri kullanmaya başladığınızda göreceksiniz ki bu emülatörlerin bazıları arka planda SQL kullanıyor. Maalesef default ayarlarda SQLEXPRESS'i arıyorlar :) Aslında çok büyük bir sorun değil bu çünkü isterseniz konsoldan birkaç takla ile konfigürasyonu değiştirebiliyorsunuz fakat siz de benim gibi tembelseniz :) SQLExpress kurun dertlerden kurtulun :) Saçma ve tembelce bir tavsiye olduğunu biliyorum ama parayla değil ya, kurun gitsin :)

VMWare Workstation

Şimdi bu da nereden çıktı diyorsunuz :) Eğer makinenizde VMWare Workstation kurulu ise ... silin! Şaka şaka :) Evet Microsoft büyük ihtimal ile silmenizi tercih edecektir malum rakipler :) ama sadece gidip servislerden Workstation Server servisini durdurmanız da yeterli olabilir :) Söz konusu servisin kullandığı portlar local azure emülatörü ile çakışıyor ve süper anlamlı hatalar alarak günlerinizi çürütüyorsunuz.. :) yani çürütebilirdiniz eğer bu yazıyı okumasaydınız.

Regional Settings

Az kaldı bir gün Windows Azure Türkiye'ye de gelecek. İşte o zamana kadar Control Panel'e gidip Regional Settings'deki herşeyi İngilizce yapıyorsunuz! :) Buna dil ayarlarından tutun bulunduğunuz ülke ayarına kadar herşey dahil. Dil İngilizce, ülke ABD olursa hiçbir sorun yaşamazsınız. (Not: Lütfen bu cümleyi tek başına kullanmayalım :)).

Son dokunuşlar

Şimdi olur ya ... birşeyler ters gider diye birkaç noktadan daha bahsedelim hızlıca. Makinenizde ASP.NET ve IIS kurulu olsun :) Özellikle IIS çoğu yazılımcının makinesinde olmayabiliyor. ASP.NET Development Server (Cassini) kullanmaya alıştığımız için özel senaryolar haricinde IIS makinede kurulu mu değil mi detayını gözden kaçırabiliyoruz. Azure emülatörü için IIS şart.

Yükleme yollarında...

 Artık sıra geldi yüklemelerimizi yapmaya. Bunun için hızlıca Visual Studio'yu açıp yeni bir Cloud projesi yaratabilirsiniz desem de inanmayın :)

Azure araçlarını edinirken...
Azure araçlarını edinirken...

Yukarıdaki manzarada gördüğünüz "Enable Windows Azure Tools"u seçerek yeni bir proje yaratırmış gibi ilerleyebilirsiniz. Ekrana hemen (Visual Studio) içerisinde bir web sayfası açılacak ve oradan direk download işlemini yaparak yüklemenizi başlatabileceksiniz.

Yüklemeye doğru adım, adım...
Yüklemeye doğru adım, adım...

Download düğmesine bastığınızda karşınıza "Web Platform Installer" yüklemesi gelecek. Yine web sitesinden "Download / Install" diyerek yüklemeyi yapabilirsiniz. Yükleme öncesinde makinenizdeki gerekli şartları kurulum uygulaması test edecektir. Bu şartlar ve makinenizde hali hazırda yüklü olanlar da göz önüne alınarak yeni bir download listesi oluşturulacak. Listeyi onayladığınız gibi tek tek herşey makinenize indirilecek ve kurulacak :) Tüm bu süreç bittikten sonra artık Visual Studio'da Cloud projelerinizi görebileceksiniz.

Yükleme tamam.
Yükleme tamam.

İşte herşey tamam. Artık yeni Azure projeleri yaratmak için herşey hazır. Hadi ne bekliyorsunuz?

Bir sonraki yazıda görüşmek üzere ;)

Windows Azure'un iç yapısına göz atacağımız bu yazımız :) hala kod yazmaya başlamadığımız ikinci azure yazımız olacak. Maalesef elleri kirletmeye başlamadan önce ortamı biraz daha incelemek ve neyin nasıl çalıştığı ile ilgili fikir sahibi olmak gerek ;) Bir diğer deyişle ile bulutlara doğru uçuşa geçerken biraz kafadaki bulutları yok edeceğiz :)

Aslında herşey sanal...

Windows Azure ortamına uygulamanız ile geldiğinizde daha önceki yazılarda da bahsettiğimiz üzere uygulamanızın bir veya birden çok sunucuda çalışıyor olması yazdığınız kodu pek etkilemeyecek. Normal şartlarda birden çok sunucunun gücüne ihtiyaç duyduğunuz zamanlarda iki sunucunun önüne bir "Load Balancer" almak, yükü doğru şekilde dağıtmak, sunuculardan birinin sorun yaşaması veya arızalanması durumunda artık söz konusu sunucuya trafik yönlendirmemek gibi birçok senaryo ile ilgilenmek gerekirken işte tüm bunlarla Azure'un kendisi ilgilenecek.

Azure ortamına gelip uygulamanızı birden çok sunucuya yaydığınızda aslında elde ettiğiniz sunucular tamamen sanallaştırılmış, tertemiz Windows Server 2008 kurulumları. Bu temiz sanal makineler Azure'un kendi iç yapısında "Fabric Controller" olarak adlandırılan yönetici yazılımlar tarafından yönetiliyor. İsterseniz genel mimariye bakarken farklı bir senaryodan ilerleyelim.

Azure ortamında bir sunucunun doğuşu....

Aslında burada bir sunucunun doğuşu demek pek doğru değil, bir Node desek daha doğru olacak :) Özetle bir donanımın azure datacenter'ında varoluşunun başından yola çıkarsak yol boyunca neyin nasıl yerleştiğini görmek genel mimariyi görmek açısından da faydalı olabilir.

Azure ortamında bir sunucunun ilk dakikaları PXE ile başlıyor. PXE'nin detaylarına girmeye gerek yok, kabaca bir makine açıldığı gibi PXE Server'a bağlanıp daha üzerinde işletim sistemi yokken Windows PE imajı indirmesini sağlıyor. Makine bu şekilde hafiften ayağa kalktığı gibi hemen diske güzel bir format atılıp sonrasında da makine üzerinde çalışacak esas işletim sisteminin VHD'si indiriliyor. İndirilen Host OS VHD'si üzerinden boot edilen makinede artık Windows Azure Hypervisor (sanallaştırıcı) ve Fabric Controller (FC) Host Agent bulunuyor. Artık bu noktada makinede Azure DataCenter'ına hizmet etmek için hazır. Makine üzerindeki FC Host Agent doğrudan FC (Fabric Controller) ile iletişime geçerek makine üzerinde çalışması gereken uygulamaların listesini ve görevlerini almaya başlıyor.

Fabric Controller ve NOD Yapısı
Fabric Controller ve NOD Yapısı

Bu noktada biraz da Fabric Controller hakkında konuşmak lazım çünkü aslında Fabric Controller tüm Windows Azure Bulut İşletim Sistemi'nin normal bir işletim sistemi ile kıyaslanırsa Kernel'i görevini görüyor. Ayağa kalkan tüm makinelerde / NOD'lardaki işlemci, bellek vs gibi kaynakların nasıl dağıtılacağına ve hangi NOD'da hangi servisin, projenin çalışacağına Fabric Controller karar veriyor. Azure'a projenizi verip "bunu iki tane bir çekirdekli makinede çalıştır" dediğiniz Fabric Controller uygun iki fiziksel makineyi seçip orada size uygun kaynakları ayırıp isole çalışma alalanını yaratıp uygulamanızı da makineye aktarmakta sorumlu.

Fabric Controller da aslında kendi içinde bir Windows Azure servisi ve tamamen datacenter içerisinde dağıtık bir yapıda çalışıyor. Her Rack (bir paket server diyelim :)) başına FC toplam 5 kopya olarak tutuluyor. Bunun nedeni ise kabaca hem sorunlarla başa çıkıp "high avalability" (yani servisin olabildiğince ayakta kalması) sağlamak hem de Microsoft FC'ye kendi içinde update yaptığında sıralı update yaparken de her tür soruna karşı koruyabilmek.

FC'yi Windows Azure'un Kernel'ine benzetmemin nedenleri tabi ki bu kadar değil. DataCenter içerisindeki uygulamaların ve kaynakların dağılımının yanı sıra DataCenter'daki Load Balancer gibi donanımlarla da FC konuşuyor. Yani varsayalım ki iki sunucuda çalışan bir uygulamanız var ve bunu üç sunuya çıkarma karar aldınız. DataCenter'da uygun yeri bulup, size özel sanal makineyi ayağa kaldırıp, içine uygulamanızı koyup çalışır hale getirdikten sonra da Load Balancer'a "artık bu makineye de trafik gönderebilirsin" diyecek kişi FC'nin ta kendisi. Aynı şekilde makinelerden birinde sorun olduğunda uygun çözümleri üretecek kişi de FC'nin kendisi. Özetle uygulamanız için datacenter içerisinde tüm kaynaklar tek bir "makineymiş" gibi hissettiren kişi FC.

Bir NOD ayağa kalktıktan sonra içerisinde bulunan FC Agent doğrudan FC'ye bağlanıp görev için hazır olduğunu söylediği anda FC ona makine üzerinde çalışacak servislerin bilgilerini veriyor. Varsayalım üç tane iki çekirdekli sunucuda çalıştırmak istediğiniz bir uygulamanız var. FC elindeki makinelere bakıp (buna yeni gelen bir makine de dahil) boş yeri olan bir NOD'un FC Agent'ı ile iletişime geçip gerekli ek VHD'leri indirmesini istiyor. Neden mi? Azure ortamında şu an için resmi olarak bilgi verilmese de sonuç itibari ile alabildiğin en büyük makine 8 çekirdekli. Buradan yorum yaparak fiziksel olarak da NOD'ların en büyüğünün 8 çekirdek olduğunu düşünebiliriz. Bu durum tabi ki ileride değişebilir. Şimdi siz üç tane iki çekirdekli makine istediniz. FC gidip iki çekirdeği boş olan bir makine bulduğu anda o makinenin sizin Azure projenizi host etmek üzere bir sanal makine yaratıp kendi HOST VHD'sindeki Windows Azure Hypervisor ile ayağı kaldırmasını isteyecek. İşte bu tamamen size özel ayağa kaldırılacak sanal makinenin de bir Base.VHD'si var :) Önce o FC'nin "Image Repository"sinden indiriliyor. Sonrasında sıra geliyor Differential VHD'lere.

Toplam üç tane diff VHD ekleniyor sanal makineye. Bunlardan ilki içerisinde FC Guest Agent da bulunan ve host edeceğiniz uygulama türüne göre değişen VHD. Örneğin Azure'da isterseniz üzerinde IIS bulunan veya bulunmayan farklı sanal makineler (role instance) alabiliyorsunuz.  İlk VHD bu gibi ana değişiklikleri belirlerken FC Guest Agent gibi ana makinedeki FC Host Agent ile konuşacak FC Agent'ını da içeriyor. Malum size özel ayrılan bu sanal makine içerisindeki hayatın tos pembe olmasını sağlayan Agent ancak FC Guest Agent olabilir. Sanal makinede bir sorun olduğunda bunu FC Guest Agent çözemezse doğrudan FC Host Agent'a haber veriyor. Eğer Host Agent da durumu çözemezse bu sefer FC'ye haber veriyor. Katman katman ilerleyen bu yetki zincirinde aslında herkesin kendince bir çalışma alanı var :) FC Guest Agent uygulamanın sağlıklı çalıştığından emin olursan FC Host Agent sanal makinelerin sağlıklı çalışmasına FC ise datacenter'ın sağlıklı çalışmasına bakıyor.

Diff VHD'lerimize geri dönersek :) ikinci Diff.VHD doğrudan size ayrılmış bir disk alanı. Burayı uygulamanız kullanabilir. Tabi unutmamak gerek ki bu alan aslında kalıcı bir alan değil. Örneğin sanal makinede bir sorun olursa ve FC uygulamanızı başka bir sunucuya taşıma kararı alırsa tüm bu süreç baştan başlıyor ve eski Diff VHD'ler direk çöpe atılıyor. Yani özetle şu an bahsettiğimiz Diff VHD uygulamanız tarafından bir disk olarak kullanılabilse de kesinlikle kalıcı bir veri saklama noktası değil. Zaten uygulamanızın birden çok sunucuda çalıştığını ve bu VHD'lerin sync edilmediğini de düşünürsek :) Load Balancer arkasındaki bir uygulama için kesinlikle böyle bir kalıcı veri saklama konumu düşünülemez.

Üçüncü VHD :) Uygulamanızın kendisi! Azure'a uygulamanızı verdiğinizde tek bir paket olarak veriyorsunuz. Bunun detaylarını ileriki yazılarda göreceğiz. Verdiğiniz paket açılarak bir VHD haline çevriliyor ve makineye ataçlanıyor.

Artık makinemiz ayakta!

İşte artık azure'da uygulamamız ayakta :) Bir NOD'un azure datacenter'ındaki yaşam döngüsüne bakmış olduk. Kısaca özetlemek gerekirse :) (pek kısa olamayacak ama)

  • PXE Server üzerinden Windows PE gelir ve boot olur.
  • Makineye format atılır, Base.VHD indirilir ve oradan boot edilir.
  • Hypervisor ve FC Host Agent artık çalışır durumdadır.
  • FC Host Agent gider FC'den rolleri öğrenir.
  • FC Host Agent içerisinde FC Guest Agent'ın da bulunduğu Base.VHD'yi indirir.
  • FC Host Agent üzerinde bulunacak rollere göre Diff.VHD'yi indirir.
  • FC Host Agent uygulamamızın bulunduğu Diff.VHD'yi indirir.
  • FC Host Agent sanal makineyi ayağa kaldırır.
  • FC Host Agent uygulamamızı makinede çalışırır, herşey yolunda ise Load Balancer'a haber verir ve makineye trafik gelmeye başlar.

İşte durum budur :) Sanırım blogumun en uzun ve kodsuz yazılarından biri oldu bu ;)

Kendinize çok iyi bakın.

INETA Kayseri etkinliği de geldi geçti :) Geçen hafta sonunu 5 konuşmacı ile Kayseri'de geçirdik. Ben de iki günde iki Azure oturumu ile sahne aldım. Kayseri malum benim memleketim sayılır :) o nedenle ayrı bir sempati de duyduğumu söylemem gerek.

INETA Kayseri Etkinliği
INETA Kayseri Etkinliği

Etkinliğin sahibi ACM ekibine binlerce teşekkür etmem gerek. Kayseri ekibi geçen sefer de bu sefer de süper bir iş çıkardı. Hem etkinliğin organizasyonu hem de itiraf etmem gerek :) konuşmacıların ağırlanması konusunda süperler. Katılan herkese de ayrıca teşekkürler ;) Bir dahaki sefere görüşmek üzere!

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 birçok dertten kurtarıyor.

Bir sonraki twitter'ı yazsam?

Kulağa çok radikal gelebilir fakat bir sonraki twitter veya facebook veya belki de daha adını koyamadığı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....

  • Bir load balancer nasıl ayarlanır?
  • RAID 0 ile RAID 5 arasında farklar nelerdir?
  • Hyper-V ile VMWare sanallaştırma ürünleri arasındaki farklar nelerdir? Hangisi seçmeli?
  • Dağıtık uygulamalarca cache'leme nasıl yapılır?

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 manzarayı ç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şin PAAS kısmında devreye giriyor. Windows Azure dediğimiz ürün bir PAAS ürünü. 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ındaki 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 ;) yazıları takip etmeye devam edin.

Bu hafta başından beridir yine Qatar'daydım :) Geçen ay OpenDoor için Qatar'a gittikten sonra daha tam bir ayı doldurmuşken yine gitmek pek de planlarımda yoktu. Son anda QITCOM konferansına şirket olarak katılacağımız ortaya çıkınca :) bana da yollar gözüktü.

QITCOM'daki Windows 8 ve Kinect demolarımız...
QITCOM'daki demolarımız bulunduğu alan.

Konferans'ta Microsoft alanının Windows 8, Surface, Kinect ve Windows Phone kısımlarını IdentityMine olarak biz sunduk. Gerçek müşterilerin gerçek uygulamalarını gösterdiğimiz Surface, Windows 8, Kinect ve Windows Phone ortamları arasında en çok ilgiyi Windows 8 ve Kinect'in çektiğini itiraf etmem gerek :) Benim için zevkli olduğu kadar da yorucu bir gezi oldu, neredeyse MVP Summit dönüşü hemen Qatar'a geçtiğim için hala yorgunluğu atabilmiş değilim.

Bu arada unutmadan :) haftaya hafta sonu Kayseri'deyiz ;) Detayları için buraya göz atabilirsiniz. Görüşürüz ;)

Bir MVP Summit daha geldi geçti :) Her yıl tüm MVP'lerin davetli olduğu MVP Summit'in bu sene 2012 sürümü de :) geçen hafta gerçekleşti. Bu vesile ile yanlış bilmiyorsam toplam 15-20 MVP Türkiye'den Summit için Microsoft Redmond ofislerine doğru uçuşa geçtik :) Toplam 17-26 saat arası sürebilen uçuş silsilesi sonrasında vardığımız Summit eğlenceli olsa da maalesef sonrasında direk paylaşabileceğimiz birşeyler olmuyor.

Klasik Microsoft Campus Giriş Fotosu
Klasik Microsoft Campus Giriş Fotosu

Summit tamamen kapalı bir konferans olarak MVP'lere özel olduğu için tüm oturumlar da gizlilik sözleşmesi çerçevesinde yapılıyor ve anlatılan hiçbirşeyi dışarı çıkaramıyoruz. Ama bu tabi ki zamanı geldiğinde paylaşamayacağımız anlamına da gelmiyor :) Ürünler çıktıkça MVP'lerden de paylaşımları bekleyebilirsiniz tabi ki.

MVP Summit 2012'de Stat :)
MVP Summit 2012'de Stat :)

Bu seneki Summit'in en ilginç noktası Summit Parti'si için tutulan gerçek Stat'tı :) Stat'da MVP görüntüleri, yazıları çoşturulmuş şekilde dururken tabi ki partinin 2000'e yakın MVP'yi misafir ettiğini ve bunların sadece %1'inin bayan olduğunu da kenara not alırsak nasıl bir parti'den bahsettiğimizi tahmin etmek bile istemeyebilirsiniz :D

IdentityMine Şirket Yemeği
IdentityMine Şirket Yemeği

Hazır Seattle'a kadar uğramışken şirkete :) IdentityMine'a da uğramamak olmazdı tabi. Hatta üzerine bir de şirket yemeği organize edilince tadından yenmedi :) Ben de böylece Aralık başından beri beraber çalıştığın bir sürü arkadaşla yüz yüze tanışabilmiş oldum. Ekip süper eğlenceli ama ben uzaklarda kaldığım için eğlencenin fena latency yapıyor malum :D

Neyse, işte böyle bir... 4 günlük Amerika ziyareti sonrasında Türkiye'ye döndüm ve 12 saat sonra da Qatar semalarına doğru uçuşa geçtim :) Qatar detaylarını da yakında yazarım. Çok yakında memlekette 24 saatten fazla kalabilme hayali ile hepinize sevgiler! (Acı çektiğimin farkında olmayıp "hocam iyi geziyorsun" maili atanlar burada ayrıca selamlar, bilmem anlatabildim mi :D)

Çok uzun zamandır yazmak istediğim bir yazı hatta yazı türlerine bir giriş olur umarım bu blogpostum. Kullandığım ve herkese de tavsiye edebileceğim şeyler... yazıları... :) Bu yazıda değineceğimiz konu malum, DropBox.

Konumuz ne?

Konumuz online ortamda, bir diğer anlamda "Cloud"'ta backup ve file storage. Dosyalarınızın bir kopyasını gerçek zamanlı olarak bulutlarda tutup sürekli ve anlık bir yedek sahibi olmaktan bahsediyoruz. Eminim ki sizin de aklınıza ilk gelen şey "Benim bilgisayarda 40GB datam var nasıl olacak ki o iş?" sorusu olacaktır. Hemen kendi yaşadığım senaryoyu sizle paylaşiyim.

Bulutlarda yedekleme...
Bulutlarda yedekleme...

Yılbaşında kendime bir yılbaşı hediyesi olarak 50GB'lık bir DropBox hesabı aldım. Neden DropBox? gibi sorulara sonra değineceğiz :) Laptop'ımdaki verilerin haftalık yedeğini tutsam da hafta içerisinde yaptığım çalışmaların yok olabilmesi riski, (laptop çalınması, bozulması vs) benim ciddi canımı sıkmaya başlamıştı. Zaten içerisinde bulunduğum yoğun tempoda bir de bir haftalık bir çalışmayı kaybetmeyi göze alamıyordum. Günlük backup senaryolarını da denedim ama sağlıklı olmuyor itiraf etmek gerekirse.

Bunun üzerine gidip bir Cloud Backup senaryosu için DropBox hesabı aldım. Laptop'umdaki tüm herşeyi zaten C'de bir klasörde tutuyordum :) Yıllardır böyle yaparım. Yedeklemeyi, taşınmayı çok kolay hale getiriyor. Klasöre baktım ve tam 40GB olduğunu gördüm. Harici disklerde tuttuğum resim ve video arşivleri tabi ki buna dahil değil ama zaten onların anlık yedeğinin alınmasına da gerek yok.

DropBox hesabımı alıp diskimdeki klasörü gösterdik sonra ilk upload 4 gün sürdü :) 4günlük bu upload bittikten sonra DropBox sürekli değişiklikleri sync ederek efsanevi bir performans gösterdi!!! Geçen 1.5 aylık sürede evimde kullandığım 2Mbit hatta bile en ufak bir sıkıntı veya değişiklik hissetmedim. Live Backup sürekli çalışıyor ve hiçbirşeyi de etkilemiyor. Atıyorum Word ortamında çalışırken her Ctrl+S'in doğrudan, anında cloud'a differential (sadece dosyadaki değişen kısımlar) sync edilmesi süper bir hareket!

DropBox candır...
DropBox candır...

İtiraf etmem gerek ben bu kadar rahat çalışabileceğini tahmin etmiyordum. 50GB hesapla beraber bir de PackRat aldım :) böylece her dosyanın sınırsız geçmiş sürümleri ve silinen dosyaların da yedekleri sınırsız olarak tutuluyor!

Ne kadar para verdin?

Şimdi tüm bunları yazmamın aslında birkaç nedeni var. Birincisi eğer siz de benim gibi bu işin düzgün çalışacağından şüpheli iseniz.. emin olun süper çalışıyor. Hayatımı değiştiren servislerden biri oldu DropBox! Reklam gibi olacak ama :) "artık korkmuyorum" :D veri kaybı diye birşey yok hayatımda. 50GB alan için DropBox'a yıllık 100$ veya aylık 10$ ödüyorsunuz. Bence bunlar verilen hizmet için çok kabul edilebilir rakamlar. Ayrıca DropBox'ın bir de 2GB'lık ücretsiz hesap seçeneği var. Öğrenciler eğer EDU uzantılı mailleri ile hesap açarlarsa referral'lar ile beraber 16GB'a kadar ücretsiz hesaba sahip olabiliyorlar.

Birden çok bilgisayarda çalışanlar için ideal!

DropBox reklamı devam ediyor :) ama adamlar hak ediyor cidden. DropBox hesabımı alırken rakip olarak incelediğim bir diğer servis de SugarSync'di. SugarSync özellikle dosya paylaşımı konusunda daha kuvvetli. DropBox bilgisayarınızda Sync edeceği herşeyin tek bir root folder altında olmasını beklerken SugarSync farklı lokasyonları alabiliyor. Bu benim için çok büyük bir dert olmasa da bence hoş bir özellik. Fakat diğer yandan Dropbox'ın benim vaz geçemeyeceğim bir özelliği var! "LAN Sync". Eğer siz de benim gibi birden çok bilgisayar kullanıyorsanız bu bilgisayarlar arası dosyaların sync tutulması da dertleriniz arasında olabilir. Dropbox'da bir hesap açtıktan sonra istediğiniz kadar bilgisayara hesabınızı yükleyebilirsiniz. Böylece tüm bilgisayarlardaki dosyalar birbiri ile ve cloud ile sync olacak. İşin güzel tarafı ise eğer bu bilgisayarlar aynı network'deyse sync işlemi tamamen internal network'de de yapılabiliyor. Yani bir bilgisayar zaten sync olmuştu Cloud ile, diğerini açtınız. Diğer bilgisayarın sync olması için Cloud'dan değişiklikleri download etmesi gerekmiyor, network'de aynı DropBox hesabının yüklü olduğu diğer PC'den direk değişikleri alabiliyor! Bu muhteşem bir artı! Özellikle farklı durumlarda farklı bilgisayarlar ile dışarı çıkan birisi iseniz bilgisayarınıza sürekli güncel oluyor. SugarSync'de maalesef tüm sync işlemleri Cloud üzerinden olmak zorunda. Yani aynı network'de de olsalar tüm PC'ler için cloud'dan tekrar indiriliyor dosyalar.

Güvenlik

Son zamanlarda DropBox'dan "Muhteşem birşey" diye bahsettiğim bazı arkadaşlarım "ya güvenlik?" sorusunu sordular :) Bilgisayarınıza yüklediğiniz DropBox client'ı her veriyi önce AES-265 ile encrypt ediyor ve sonra cloud'a gönderiyor. Bağlantı zaten SSL ile korunmuş durumda. SugarSync'de durum biraz daha kötü çünkü client veriyi cloud'a göndermeden önce değil de gönderildikten sonra encryption sunucu tarafında yapılıyor :( DropBox burada da bir adım önce çıkıyor.

Paylaşım

DropBox'ın paylaşım özellikleri çok kompleks değil. O konuda SugarSync biraz daha iyi. Ama itiraf etmek gerekirse bana DropBox'takiler yetiyor. Herkese açık klasörler tanımlayıp, dosyaları atıp linkini paylaşabiliyorsunuz. Sevdiğim tarafı :) dosya upload'u arkaplanda DropBox client'ı tarafından yapılıyor ve upload başlamadan bile upload bitinceki dosya linkini alabiliyorsunuz :) Böylece dosya paylaşmak için DropBox public klasörüne dosyayı sürüklemem, hemen bir sağ tık ile linki almam yeterli oluyor. Upload'un zaten arkadan halledileceğini biliyorum :)

Ayrıca bir de paylaşımlı klasörler var DropBox'ta ;)

Sonuç

DropBox candır! :) Paralı seçenekleri kullanmasanız da (ki deneyin derim) 2-16GB arası ücretsiz hesap alıp bu lüksü yaşayın derim.

Not: Bu makaledeki tüm DropBox linkleri referral linkidir ;) Sonra "vay çakaaal" gibi tepkiler görmiyim :)

Özlemişim, yine özlemişim :) İki yılı bulmuş sanırım İstanbul'da INETA'nın büyük bir etkinliği olmayalı. Bu hafta sonu İstanbul etkinliği Microsoft binasında gerçekleşti. Ben de "Azure'a Migration Senaryoları" başlığı ile bir oturum sunarak etkinliğe katıldım.

INETA İstanbul 2012 Etkinliği
INETA İstanbul 2012 Etkinliği

Oturumun aslında ilk gününde olmasına karşın ikinci gün de etkinlik ortamında bulunmak istedim. Katılan herkese bu güzel "geek" ortamı için :) teşekkür etmem gerek. Aralardaki sohbetler, öğle yemeği, etkinliğin her anı benim için süper eğlenceli ve zevkli geçti. Muammer'e etkinlik organizasyonundaki emeği için çok teşekkür ediyorum. Süper bir iş çıkardı. Etkinliğin sponsorları, Microsoft ve BTAkademi ekibine de ayrıca teşekkür etmeliyim ;) Herşey için çok sağolun.

Bir başka etkinlikte görüşmek üzere ;)

Bu haftayı Kuveyt'de Microsoft OpenDoor konferansında geçirdim :) Bu aralar yine "leyleği havada görmüş" durumdayım. Geçen hafta Qatar sonrasında bu hafta da Kuveyt'de Microsoft OpenDoor'da dört oturumum olacaktı :) Son anda oturum sayım altıya çıktı (Nedenini sormayın :)) böylece sanırım tüm OpenDoor serisinde en çok oturumu olan konuşmacı rekorunu kırıp "konuşmacılıktan" "hamallığa" doğru ilerlemiş oldum :D Malum iki günde 6 oturum "insan" olma sınırları dışında.

Microsoft OpenDoor, Kuwait
Microsoft OpenDoor, Kuwait

Neyse, Allah'tan tüm konular bildiğim konular da sorun olmuyor. Oturumlarda Windows 8, Windows Phone 7.5, Kinect, HTML5 ve Azure konularına değindik. Siz bu yazıyı okurken ben büyük ihtimal Türkiye'ye dönüş yollarında olacağım. Hafta sonu da biliyorsunuz "INETA Istanbul" etkinliği var. Eh artık hafta sonu görüşmek üzere ;)