|
Windows Azure & Cloud Computing - Genel Bakış ve Projelerin Yayınlanması |
|
Gönderiliyor lütfen bekleyin... |
|
|
Son bir yıldır hem Microsoft tarafından hem de Sun şirketleri tarafından web uygulamalarında yeni bir yaklaşıma gidildiğini ve bu yaklaşımın adını da Cloud mimarisi olduğu söylenmektedir. Peki, internet dünyasında performans ve diğer bazlı faktörler konusunda nasıl bir eksiklik vardı da büyük yazılım şirketleri yeni bir teknoloji arayışı içine girdi.
İnternet kullanım hızlarının artması ile artık internet üzerinden canlı televizyon yayınları, yüksek çözünürlükte resim ve video görüntüleme, boyutu büyük veriler ile çalışan web sayfaları ve daha birçok uygulama bizlerin kullanımına sunuluyor. Peki bu kullanım esnasında tek bir server ihtiyacımızı karşılayabilecek mi? İlk akla gelen cevap “evet, karşılıyor” olur. Fakat web sayfalarının günlük maksimum veri transferi genişliğini aştıklarında işte sorun ile karşı karşıyayız anlamına geliyor. Normalde nasıl bir adım izleriz. İlk olarak, gider daha büyük kapasiteli bir sunucu satın alır ya da kiralar yayınımıza öyle devam ederiz. O da yetmedi ve artık kendi bütçemizin en yüksek kapasitesine de ulaşmış durumdayız. Artık yapmamız gereken birçok sunucuya gelen istekleri yaymak ve yayınımızı ona göre sürdürmek olacaktır. Bu da yüksek bir maliyete sebep olmaktadır. Bir de farklı bir açıdan daha düşünelim. YouTube gibi video büyük video paylaşım sistemlerini örnek alarak bizde böyle bir sistem oluşturmaya karar verdiğimizi düşünelim. İlk olarak ne yaparız. *.wmv uzantılı dosyaları Media Player plug-in ‘ini kullanarak video yayını yaparız. Fakat bu görüntüleme yalnızca Windows işletim sistemi kullanıcıların isteklerini karşılayacak ve diğer işletim sistemi kullanıcıları için video izlenemeyecek. Kullanmamız gerektiğini açıklayan birinci sebep bu. İkincisi ile video yüklenme şekli. Media Player plug-in kullanarak hazırlanmış olan bir video görüntüleyebilmek için geçen yüklenme zamanının yüksekliği. Alternatif çözüm olarak Flash animasyon kullanımını düşünebilir. Fakat o da diğer yöntemimiz gibi yüklenme zamanı zorlukları ve diğer faktörlerden ötürü yavaş çalışan bir sistemdir. ( YouTube gibi sistemlerin Flash animasyon kullanarak video gösterdiğini unutmadık. Fakat bu tür sistemler bu işlemler için bizim ileriki konularda anlatacak olduğumuz yapının benzerini kullanarak görüntülemeyi gerçekleştirmektedirler.) Bir başka alternatif çözümümüz de Microsoft Silverlight ‘tır. Platform bağımsızlığı ve diğer faktörler sebebiyle streaming işlemlerinde oldukça iyi bir çözüm sunmaktadır. Daha fazla ince detaylara girmeden Cloud mantığının ne olduğuna bir göz atalım.
Cloud Computing Nedir?
Cloud Computing’ i açıklamak gerekirse; bir ağ yapısı kullanılarak, sadece Internet Explorer gibi bir program ile bütün uygulamalarınızı işlemci gerektiren, depolama alanı gerektiren bütün dosyalarınızı ana bir bilgisayarda tutarak, gerçek işinize odaklanmak. Bu işlemleri de yaparken, kullandığınız kaynakların ücretini ödemek, kullanmadığınız kaynaklara boşuna para yatırmamak.
Bu tanımı biraz daha açıklamak gerekirse, standart bir bilgisayar kullanıcısı olduğumuzu bilgisayarı yalnızca internete girmek, müzik dinlemek ve film izlemek için kullandığımızı varsayalım. Bu işlemleri yapmak için çok yüksek kapasiteli bir bilgisayar almanın bir anlamı yoktur. Çok iyi bir grafik tasarım mı yapacağız? Hayır. Oyun mu oynayacağız? Hayır. Bu durumda çok yüksek maliyette bir sistem kurup onu kullanmak bizim için gereksiz bir yatırım olacaktır. Cloud mantığını da bu şekilde düşünmemiz gerekmektedir. İnternet üzerinde sadece 10 mb lik bir alan kullanacaksak çok yüksek kapasiteleri kiralayıp da onu kullanmak tamamen gereksiz olacaktır. Ya da kullanılan bir işletim sistemine virüs girdi. Eğer biz kontrol ediyor olsaydık zaman kaybına sebep olacak bir çok işlem ile uğraşmak zorunda kalacaktık. Fakat diğer durumda yapmamız gereken bize ait olan dosyaları yedekleyip diğer tarafı bize sistemi sağlayanlara bırakmak olacaktır.
Kısaca Cloud mantığının bizlere kattıklarına göz atmak gerekirse;
• Maliyet
• Kullanım kolaylığı
• Güvenlik
• Ölçeklenebilirlik
• Sürdürülebilirlik
Şeklinde sıralayabilmemiz mümkündür.
Peki, bu mantığa gelene kadar ne programlama yapıları ile uğraştığımızı kısaca hatırlamak gerekirse;
• Prosedür temelli programlama
• Nesne temelli programlama
• COM temelli programlama,
• Servis temelli programlama
• Bulut Temelli Programlama
Servis temelli programlama çıktıktan ve Bulut temelli programlamanın temelini oluşturan Software as Service (SaaS) mantığı bizim yazılımlarımızı komple bir paket değil de parçalar olarak kullanabilmemize olanak tanıyan bir yapıdır.
Windows Azure
Azure aslında bir servis platformudur. Azure servis platformu Microsoft ‘un kendi veri merkezlerinde sunulan, internet seviyesinde Cloud Computing uygulamasıdır. Bu ortam Web geliştiricilerine yada başka cihazlar için geliştirme yapanlara gelişmiş bir platform sunar ve hibrid uygulamalar geliştirilmesine izin verir.
Azure ile geliştirilen uygulamalar daha hızlı ve daha az maliyetle geliştirilmesine olanak tanır. Azure ile uygulama geliştirmek istersek her zaman kullandığımız Visual Studio geliştirme ortamımızı ve .Net çekirdeğini kullanmamız yeterli olacaktır. Azure uygulamaları günümüzde gittikçe yaygınlaşan “kullan ve öde” yani kiralama modeline de uyumlu uygulamalar geliştirilmesine olanak tanımaktadır. Azure aynı zamanda açık ve belirli standartları temel alır, http, SOAP, REST ve XML teknolojileri temel olarak desteklenmektedir.
Azure Servis Mimarisi, en temelde Windows Azure ‘un olduğu bir yapıdır. Daha üst katmanlara çıktıkça kullanabileceğiniz servis platformlarının sağladığı
Live Servisler, .Net Servisleri ve SQL Servislerini sunar. En üst katmanda ise daha özel amaçlarda kullanılan
Exchange Servisleri, SharePoint Servisleri, Dynamics yer alır.
Windows Azure Nedir?
Azure’ un, yazılımcılar için geliştirme, servis bulundurma, servis yönetimi gibi ortamlarını oluşturabilmek amacıyla geliştirilmiştir. Visual Studio ile entegre bir biçimde anlık hesaplamaların internet ortamında bulundurulmasına, ölçeklendirilebilmesine ve yönetme bazında kullanılmasına olanak tanır. Windows Azure açık bir sistem olacağından şu anda Visual Studio ile yazılan yönetilebilir kodları (.Net ve CLR kullanan) desteklerken, ileride Microsoft un olmayan dilleri ve geliştirme platformlarını da destekleyecektir. Kısacası Windows Azure, Microsoft un Cloud Computing dünyasını ayakta tutmak için geliştirdiği İşletim sistemidir, şu anda sadece barındırma işlemleri yapabilmek adına geliştirilmektedir.
Live Servisleri Nedir?
Azure ‘un servis ortamında kullanıcıların verileri ve uygulama kaynaklarını kullanmaları için geliştirilmiş bir uygulamadır. Live servisleri ile gelişmiş uygulamalar, sosyal ağlar, kullanıcı deneyimleri gibi dijital ortamları kullanmanıza olanak sağlar, Live servisleri genelde web tabanlı uygulama geliştirmeye olanak tanıdığı için Azure ile kullanıldığında çok başarılı çözümler sunabilecektir.
Microsoft SQL Servisleri Nedir?
Microsoft SQL Servisleri, Microsoft SQL Server ‘in yeteneklerini ile Web tabalı Cloud Computing işlemlerini yapmamızı sağlayacak ilişkili veri tabanı hizmetidir. Bu servislerle ilişkili olarak sorgular yapmamızı, arama, veri eşleştirmesi yapabilmemizi sağlarken, bu işlemleri hem mobil kullanıcılarında hem de uzak bağlantı yardımıyla şirket ağlarına bağlı olarak çalışanlar için kullanabilmemiz mümkündür.
Microsoft .Net Servisleri Nedir?
Microsoft .Net Servisleri, Cloud tabanlı uygulamaları kolayca geliştirebilmemiz mümkündür. Bu servisler yardımıyla güvenli kod yazımı, erişim denetleyicileri kullanmamızı olanak tanımaktadır. Ayrıca bizlerin istediği özel servislerinde Cloud mantığında oluşturabilmemize olanak tanımaktadır.
SharePoint ve CRM servisleri Nedir?
Yazılım geliştiriciler, SharePoint ve CRM için kullandıkları ortamda, müşteri bilgisini ortak bir yerde tutup kullanabilmelerine olanak tanınacaktır. Bu esneklik ile Visual Studio kullanarak geliştiriciler tarafından bilinen ve aşina olunan yöntemler yardımıyla hızlıca uygulama geliştirilebilecektir. SharePoint, CRM ve daha sonra çıkacak yazılımların yetenekleri ile yazılımcıların kendi işlemlerine odaklanırken diğer işlemleri bu uygulamaları kullanarak çok daha gelişmiş ve hızlı uygulamaları Azure sisteminde yazabileceklerdir.
Windows Azure ve bu yapı üzerine oluşturulmuş servisleri grafiksel olarak açıklayan güzel bir resmi aşağıda görebilirsiniz.
Windows Azure ve Cloud Computing ile Uygulama Geliştirme
Windows Azure ve Cloud Computing ‘i detaylı bir şekilde açıklamaya çalıştık. Şimdi ise Uygulamaları nasıl geliştireceğimize göz atmaya çalışacağız.
Azure ile uygulama geliştirmeyi Visual Studio 2008 + SP1 ve Azure SDK yüklü olan bir bilgisayar üzerinde gerçekleştireceğiz.
Visual Studio 2008 yukarıda belirttiğimiz şartlar doğrultusunda hazırlandıktan sonra artık ilk uygulamamızı geliştirmek için hazır bulunuyoruz. File-> New Project yolundan sonra karşımıza gelen ekrandan
Cloud Service seçeneğini seçtikten sonra karşımıza gelen şablonlardan
Web Cloud Service seçeneğini seçerek uygulamamızı oluşturuyoruz.
Oluşturulan projenin içerisinde servis rolleri başta olmak üzere bazı klasörler oluşmaktadır. Bunların ne olduğuna göz atmak gerekirse;
Oluşturulan iki projeden birincisi Cloud Servistir. Bu proje üzerinde Web üzerinde uygulanacak olan roller,
*.cscfg uzantılı Cloud Service Configuration dosyası,
*.csdef uzantılı Cloud Service Defination dosyası bulunmaktadır. Bir diğer proje ise rol tabanlı olarak çalışan bir web projesidir.
Şimdi Default.aspx dosyasını açarak içerisine bir tane Label kontrolü ekliyoruz.
Sonrasında ise Label kontrolünün text özelliğine istediğimiz bir değer atıyoruz.
Label1.Text = “Hello Windows Azure”;
|
Daha sonra projemizin çalıştığı zaman dosya bazlı rollerini belirlemek için ServiceConfiguration.cscfg dosyasını açarak Instance yazan satırdaki 1 değerini 2 olarak değiştiriyoruz.
Projemizi derledikten sonra debug modda çalıştırdığımızda bize nasıl bir tepki verdiğine göz atalım;
Eğer ki uygulamamız normal bir şekilde derlendiyse bize Development Storage ve Development Fabric otomatik olarak çalıştırılmaktadır.
Not: Eğer ki bilgisayarınızda development storage çalışırken hata verdiyse aşağıdaki işlemi uygulayarak çalışır duruma getirebilirsiniz.
Windows Azure Mart SDK ‘sını bilgisayarımıza kurduğumuzda varsayılan sql server olarak
.\SqlExpress gelmektedir. Eğer ki faklı bir sql instance ‘ı kullanıyorsak ve Development Storage ‘ı kullanmak istediğimizde bizlere “Sql instance ‘ın da bir SQL Server bulamadım.” mesajını verecektir. Bu durumda yapmamız gereken Azure SDK ‘nın kurulu olduğu klasöre giderek DevelopmentStorage ‘ı buluruz.
Yukarıdaki ekranı çıkarmak için DevelopmentStorage uygulamasının üzerinde sağa tıklayıp özellikler seçeneğine basarsak elde edebilirsiniz.
Karşımıza çıkan ekranda DevelopmentStorage.exe ‘yi çift tıklayarak ister not defterinde ister Visual Studio ‘da isterseniz de başka herhangi bir metin düzenleyici de açabilirsiniz. Düzenlemelerimizi .\SqlExpress yazan yerlerde yapacağız.
Değiştirilecek yerler:
<connectionStrings> <add name="DevelopmentStorageDbConnectionString"
connectionString="Data Source=.\SqlExpress;Initial Catalog=DevelopmentStorageDb;Integrated Security=True"
providerName="System.Data.SqlClient" /> </connectionStrings> |
<services> <service name="Blob"
url="http://127.0.0.1:10000/"/>
<service name="Queue"
url="http://127.0.0.1:10001/"/>
<service name="Table"
url="http://127.0.0.1:10002/"
dbServer="localhost\SqlExpress"/> </services> |
Yukarıda config dosya içersinde yer alan .\SqlExpress ‘leri kendimize uygun bir şekilde değiştirdiğimizde artık uygulamamız çalışır duruma geliyor. Sonrasında da bize aşağıdaki gibi bir ekran sunarak artık servislerimizi yönetebilmemize olanak tanıyacaktır.
Development Fabric ‘i incelersek bize rollerimizin başladığını ve servis detaylarımızı göstermektedir. Biz biraz önce config dosyasında yaptığımız değişiklikle iki tane rolün çalışmasını istemiştik. Çalıştırılan rolleri Developemnt Fabric üzerinde görebilmemiz mümkündür.
Not: Development Fabric ortalama 30 ile 90 saniye arasında başlamaktadır.
CloudService ile imzalı web servis oluşturmaktadır. Bu servisi Service Details seçeneğinde görebilmemiz mümkündür.
Rollerimizi Web rol seçeneğine bastığımızda görebilmemiz mümkündür. Ayrıca bu rollerin de çalıştığı gözlemlenmektedir. Eğer ki config dosyasında Instance değerini bir vermiş olsaydık bize gösterilecek olan web rol de bir tane olacaktı.
Son olarak oluşturulan sayfamıza göz atalım;
Her şey sorunsuzca oluşmuş ve ilk Cloud uygulamamızı oluşturmuş bulunuyoruz. Eğer projemize breakpoint koyduğumuz bir bölüm varsa da sorunsuzca debug edebilmemiz mümkündür.
Şimdi yapacağımız işlem ise oluşturulan bir Cloud servisini nasıl web üzerine yayınlayacağımızı adım adım inceleyeceğiz.
İlk olarak yapmamız gereken CloudServis projemizi publish ederek internet üzerine yayınlanabilir bir duruma getiriyoruz.
Publish işlemi tamamlandığında bize sıkıştırılmış olarak servisimizi sunar ve bu servisin olduğu klasörü açar. Ayrıca servisimizi yayınlayabilmemiz için gerekli olan web sayfasını da açarak bizim işlemlerimize devam etmemize olanak tanımaktadır.
Live ID ‘miz ile açılan sayfaya giriş yaptığımızda aşağıdaki gibi bir ekran bizlere sunulmaktadır.
New Project seçeneğine basarak yeni projemizin düzenlemeye başlayabiliriz.
Yeni proje seçeneğine tıkladıktan sonra karşımıza gelen ekranda Hosted Services seçeneğine basarak projemizi oluşturmaya devam edebiliriz.
Karşımıza gelen ekranda bize projemizin başlığını ve açıklamasını girmemiz istenmektedir. Bu işlemleri tamamladıktan sonra bir diğer adıma geçebiliriz.
Bu adımda projemizin ismini belirliyoruz. Uygunluğunu kontrol ettirdikten sonra sayfanın en alt kısmında yer alan Create butonu yardımı ile projemizi oluşturuyoruz.
Deploy seçeneğini seçerek Publish ettiğimiz projeyi web alanımıza ekleyeceğiz.
Gerekli dosyaları bilgisayarımız üzerinden gösterdikten sonra sayfanın alt kısmında yer alan deploy seçeneğine basarak projemizi deploy ediyoruz.
Run butonuna basarak projemizin derlenmesinin tamamlanmasına ve production ortamı için bekleme aşamasına geçmektedir.
Artık projemizi internet tarayıcılarımızda görür duruma gelmiş bulunuyoruz. Web Site URL yazan yerdeki linki tıkladığımızda kendi bilgisayarımızda geliştirmiş olduğumuz projenin internet ortamına aktarıldığını görmüş oluruz.
Projemizin sorunsuz bir biçimde çalıştığını gördüğümüze göre artık eşleştirme işlemi ile production ortamına uygulamamızı taşıyabiliriz.
Bu işlem sonucunda artık uygulamamız production ortama geçmiş bulunuyor.
Web üzerinde projemizi oluştururken başlarda verdiğimiz web adresi ile artık uygulamamıza girebilir duruma gelmiş bulunuyoruz. Artık
http://turhaltemizer.cloudapp.net adresine girerek uygulamamızı görebiliyor olacağız.
Artık uygulamamızı oluşturmuş ve internet üzerinde görebilir duruma gelmiş bulunuyoruz. Daha iyi uygulamalar geliştirmek artık bizlerin hayal gücümüze kalmıştır.
Yazımız boyunca incelediklerimize tekrardan kısaca bir göz atmak gerekirse; ilk olarak Cloud mimarisine göz attık sonrasında Windows Azure ‘un ne olduğunu ve tabanında çalışan servislerin ne olduğunu tanım seviyesinde değinmeye çalıştık. Temel açıklama kısımlarını tamamladıktan sonra Visual Studio ortamında ilk uygulamamızı geliştirip development fabric üzerinde web rolleri ile ilişkili servislerin çalışıp çalışmadığını kontrol ettik, sonrasında ise uygulamamızı publish ederek web ortamında yayınlanır duruma getirdik. Bir sonraki adımımızda ise oluşturduğumuz Cloud servis projesini web üzerinde nasıl yayınlanabilir duruma getireceğimizdi. Bu işlemi de adım adım inceledikten sonra yazımızı tamamlamış ve ilk uygulamamızı da internette görülebilir bir duruma getirdik.
Daha sonraki Azure yazılarında bu teknolojiyi, mimariyi ve servislerini daha detaylı olarak inceliyor olacağız.
Herkese mutlu günler diliyorum.
Turhal Temizer
[email protected]
http://turhal.blogspot.com
Makale:
Windows Azure & Cloud Computing - Genel Bakış ve Projelerin Yayınlanması .NET 3.0 ve .NET 3.5 Özel Bölümü Turhal Temizer
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|