Windows Azure Platformunu Test Edin

Microsoft’un ücretsiz “Introductory Special” kampanyasıyla Windows Azure’ı tanımanın tam zamanı. Compute, Storage, SQL Azure, AppFabric ve CDN bileşenlerini içeren bir tur ve ilk dağıtım için pratik öneriler.

Windows Azure geçen yılın başında (Şubat 2010) ticari olarak hizmete açıldığında, bulut pazarındaki rekabet de yeni bir döneme girdi. Amazon Web Services geliştiriciye “bir sanal sunucu kirala, üstüne istediğini kur” diyen IaaS modelini kurarken, Microsoft daha en başından PaaS kampına yerleşti: “sen kodu yaz, ölçek, yama, yük dengeleme bizim işimiz.” Aradan bir yıl geçtikten sonra Azure platformunun ne kadar yol kat ettiğini, kendi gözümle bir test hesabı üzerinden incelemek için iyi bir bahane var: Microsoft’un yürürlükteki “Introductory Special” kampanyası.

Bu yazıda hem kampanyanın detaylarını, hem 2011 Şubat itibarıyla Windows Azure platformunda nelerin bulunduğunu, hem de ilk dağıtımınız için izleyebileceğiniz somut bir yolu paylaşıyorum.

Kampanya: Ücretsiz olarak ne veriyor?

Microsoft’un Free Trial / Introductory Special kampanyası, kayıt olduğunuz aydan itibaren belirli bir kullanım kotasını ücretsiz veriyor. Şu anda paketin içeriği yaklaşık olarak şöyle:

  • 750 saat Extra Small Compute Instance veya 25 saat Small Compute Instance.
  • 500 MB depolama (Windows Azure Storage) ile sınırlı bir kullanım, sınırlı sayıda storage transaction.
  • 1 GB Web Edition SQL Azure veritabanı (90 gün boyunca).
  • AppFabric için sınırlı erişim kontrolü ve servis veri yolu işlemleri.
  • Veri aktarımı için belirli bir hediye GB hakkı.

Bu paket, “bir gün boyunca düşük trafikli bir web uygulaması koşturmak” için yeterli; gerçek bir üretim yükünü kaldırmaz ama platformu tanımanız için fazlasıyla yeterli. Önemli not: kampanyaya kredi kartınızı vererek kayıt oluyorsunuz, kotanın üstüne çıkarsanız ücretlendirme başlıyor. Spending limit ya da kotaları takip eden bir alarm mekanizması olmadığı için pencerelerden bir tanesini hep açık tutmak gerek.

Kayıt sayfası: Free Windows Azure Platform Trial

Platformun bileşenleri

Windows Azure, tek bir ürün değil; birkaç farklı servisten oluşan bir platform. Şubat 2011 itibarıyla ana parçalar:

Windows Azure Compute, Web ve Worker Role’ler

Azure’da bir uygulama çalıştırmak için iki temel rol var:

  • Web Role: IIS üzerinde koşan ASP.NET/PHP uygulamaları için. Klasik web sunucu rolünü oynar; HTTP/HTTPS isteklerini karşılar.
  • Worker Role: Arka plan iş yükleri için. Bir kuyruk dinleyip görev işleyen, planlanmış görev koşturan ya da uzun süreli işlemler yapan bileşenler buraya konur.

İki rol arasındaki iletişim çoğunlukla Queue Storage üzerinden kuyruk modeliyle yapılıyor. Bu desen, uygulamanızı en başından dağıtık düşünmeye zorluyor, Azure’ın geliştirici disipliniyle ilgili en kıymetli yanlarından biri.

Instance boyutları Extra Small, Small, Medium, Large, Extra Large olarak değişiyor. Extra Small geçtiğimiz yıl eklendi ve dev/test senaryoları için fiyat tarafını çok daha makul hale getirdi.

Windows Azure Storage, Blob, Table, Queue

Azure’ın depolama tarafı üçlü bir model sunuyor:

  • Blob Storage: Büyük ikili dosyalar (görseller, videolar, yedekler) için. Block ve page blob ayrımı var; page blob, sanal disk imajları için optimize edilmiş.
  • Table Storage: NoSQL tarzı, anahtar-değer yapısında ölçeklenebilir tablolar. İlişkisel değil; ucuz ve hızlı.
  • Queue Storage: Mesaj kuyrukları. Web Role-Worker Role iletişiminin temel taşı.

Storage’ın güzel yanı, hepsinin REST API üzerinden çağrılabilmesi. Yani Azure dışındaki bir uygulamanın da Azure Storage’ı bir depolama hizmeti olarak kullanması mümkün.

SQL Azure

Klasik SQL Server’ın bulut sürümü. Mevcut SQL Server uygulamalarınızın büyük çoğunluğu küçük dokunuşlarla SQL Azure’a taşınabiliyor. Şu anda Web Edition (1 GB ya da 5 GB) ve Business Edition (10–50 GB) seçenekleri var. T-SQL’in büyük kısmı destekleniyor; ancak SQL Server Agent, cross-database query gibi bazı özellikler yok.

SQL Azure’ı IaaS değil, DBaaS olarak konumlamak gerek: yedekleme, replikasyon ve yüksek erişilebilirlik altta otomatik çalışıyor.

Windows Azure AppFabric

Üst düzey servisler katmanı. İki temel parçası var:

  • Service Bus: Bulut ve şirket içi (on-premise) uygulamalar arasında NAT/firewall arkasından iletişim kuran mesaj otobüsü. Hibrit senaryolar için çok kritik. Klasik VPN kurmadan, brokeraj benzeri bir iletişim sağlıyor.
  • Access Control Service (ACS): Federe kimlik doğrulama. Windows Live ID, Google, Yahoo, Facebook hesaplarını ya da kurumsal Active Directory’nizi tek bir token modeli üzerinden uygulamanıza bağlayabiliyorsunuz.

AppFabric, uygulamayı sadece “buluttaki bir kutu” olmaktan çıkarıp bulut + on-premise + dış kimlik sağlayıcıları arasında akıcı bir mimari kurmaya yarayan tutkal görevi görüyor.

Windows Azure CDN

Geçtiğimiz yıl içinde önizlemesi açılan, blob storage’daki içerikleri dünya genelindeki edge node’larda önbelleğe alan içerik dağıtım ağı. Statik içerik servis ediyorsanız tek tıkla devreye alınıyor.

İlk dağıtım için pratik bir yol

Eğer Azure’ı ilk kez denemek istiyorsanız, küçük ve yararlı bir senaryoyla başlamayı öneririm. Mesela: Bir görsel yükleme + küçük resim üretme uygulaması.

Adım adım:

  1. Free Trial’a kaydolun. Kredi kartı bilgisi gerekiyor; kotayı aşıp aşmadığınızı haftalık kontrol edin.
  2. Windows Azure SDK ve Tools for Visual Studio 2010’u kurun. Visual Studio Express sürümünde de çalışıyor.
  3. Yeni bir Cloud Service projesi açın. Bir Web Role ve bir Worker Role ekleyin.
  4. Web Role’de basit bir ASP.NET MVC sayfası: kullanıcıdan görsel yüklemesini alıp Blob Storage’a koysun, ardından Queue Storage’a “şu blob için thumbnail üret” mesajı bıraksın.
  5. Worker Role: kuyruğu dinlesin, gelen mesajdaki blob’u okusun, küçük resmini üretsin ve blob’a geri yazsın.
  6. Yerel ortamda çalıştırın. SDK ile gelen Compute Emulator ve Storage Emulator, bulut servislerini geliştirici makinenizde taklit eder.
  7. Cloud Service paketi (.cspkg) üretin ve Windows Azure Portal’dan ilgili Staging slotuna yükleyin.
  8. Test edip beğendikten sonra VIP Swap ile staging’i production’a geçirin. Bu, Azure’ın deploy disiplininin güzel taraflarından biri: production’a doğrudan dokunmadan, hazır olan ortamı tek tıkla canlıya alıyorsunuz.

Bu senaryo, Compute (Web + Worker), Storage (Blob + Queue) ve dağıtım modelini bir arada öğretiyor. Ardından SQL Azure’a bir kullanıcı veri tablosu ekleyebilir, AppFabric ACS ile Google ya da Windows Live ile giriş ekleyebilirsiniz.

Karşılaştırma: Azure’ın güçlü ve zayıf yanları

Geliştirici gözünden hızlı bir kıyas:

  • Güçlü: .NET, Java ve PHP için olgun geliştirme deneyimi; PaaS olduğu için altyapı yönetimi yok; SQL Azure ile tanıdık T-SQL; AppFabric ile hibrit mimari; coğrafi olarak dağıtılmış veri merkezleri (ABD Kuzey/Güney, Avrupa Kuzey/Batı, Asya Doğu/Güneydoğu).
  • Zayıf/Eksik: Henüz VM Role olgun değil (Beta aşamasında); yani “klasik bir Windows sunucusunu olduğu gibi kaldır götür” esnekliği AWS EC2 kadar yok. Linux iş yüklerini doğrudan koşturmak için resmi destek yok. Türkiye’den bakınca veri merkezi olarak en yakın seçenek North Europe (Dublin) ya da West Europe (Amsterdam); gecikme makul ama Türkiye lokal değil.

Türkiye perspektifi

Türk yazılım evlerinin Azure’a yaklaşımı şimdiye kadar daha çok “merak edip uzaktan izleme” düzeyinde. Ücretsiz deneme, bu eşiği aşmanın en kolay yolu. Özellikle .NET tarafında üreten ekiplerin, Azure’ı en az bir küçük projeyle deneyip mimari okuryazarlık kazanmasını öneririm. PaaS dünyasının “sunucu işletmiyorum” modeli, alıştığınız her şeyi yeniden düşündüren bir disipline davet ediyor; bu disiplinin ileride iyi bir yatırım olduğunu düşünüyorum.

Sonuç

Microsoft, Azure ile bulut pazarına geç değil ama farklı bir kapıdan girdi: PaaS önceliği, .NET ekosistemine yakınlık ve hibrit mimari için AppFabric. Bir yıl içinde Compute, Storage, SQL ve AppFabric eksenlerinde olgun bir paket çıkardılar. Ücretsiz kampanyayı, platformu el yordamıyla anlamak için iyi bir fırsat olarak görüyorum. Önümüzdeki yazılarda kendi dağıtım denemelerimi ve karşılaştığım sürprizleri paylaşmaya devam edeceğim.

Kayıt: Free Windows Azure Platform Trial