You are on page 1of 82

Windows Azure ile Cloud Computing Uygulamalar

10 Agustos 2013(v0.1) brahim ATAY

1|Page brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar

2013 brahim ATAY

Bu kitabn tm yayn haklar brahim ATAY'a aittir. Kendisinden izin alnmadan bu eserden ksmen veya tamamen alnt yaplamaz, hibir ekilde kopya edilemez, oaltlamaz ve yaynlanamaz.

Birinci Yayn: 2013 / Trkiye

ISBN: 978-605-64256-0-8

2|Page brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar - 1 Cloud Computing mimarisi, 1970 ylndan balayarak gelien sre ierisinde kullanlan alt yap sistemlerin gelitirilmesi ve eksiklerinin giderilmesi ile ortaya karlmtr. Bu yazlm ile Cloud Computing mimarisi ve Windows Azure Platform ile ilgili anlatmlar gerekletirilmitir. Windows Azure ile Cloud Computing Uygulamalar - 2 Cloud Computing mimarisi, gelitirici ynnde birok problemi zmlenmektedir. Sz konusu zmler ile birlikte terminolojimize yeni kavramlar ve yaklamlar eklenmi bulunmaktadr. Bu yazmda Cloud Computing sistemleri zerinde bulunan uygulamalarn Scalability srelerine deinmi bulunmaktaym. Windows Azure ile Cloud Computing Uygulamalar - 3 irketler i ve d operasyonlar ynetmek amac ile eitli enstrmanlar kullanmaktadr. Operasyon srelerinin deimesi, uygulama sistemlerinin de deiimlere adapte olabilmesi gerekmektedir. Sz konusu sre iletmelerin srekliini devam ettirebilmesi iin byk nem tamaktadr. Windows Azure Platformu, irketler iin birok kolaylklar ve minimum maliyet ile irketlere zgr alma imkan salayabilmektedir Windows Azure ile Cloud Computing Uygulamalar - 4 Uygulama gelitirilmesi ya da mevcut uygulamalarn Windows Azure Platform a tanmas ile ilgili birok senaryo retilebilir. Gelitirilen senaryolar; zaman, maliyet ya da srelerin basit olarak gerekletirilebilmesi mmkn olmaktadr. rnek verilen senaryolar, istek ve mevcut koullara bal olarak ekillendirebilecektir. Windows Azure Platform u ile irketler minimum maliyet ile zgr almalarna olanak salamaktadr. Windows Azure ile Cloud Computing Uygulamalar - 5 Mesleki gerekliklere bal olarak ekillenen hayatlarda, adaptasyon renilmesi zor olmasna karn, zmleri de yannda getirmektedir. Yeni bir adaptasyon srecine girmekteyiz. Ama gemite sahip olduumuz bilgilerin zerine yeni kat oluturmaktayz. WindowsAzure.FunnyApp projesi ile Windows Azure Platform ve Cloud Computing mimarisini anlayarak. Elenceli olarak srece adapte olmay amalamaktayz. Windows Azure ile Cloud Computing Uygul amalar - 6 uygulamalarn baarl ve performansl almas, uygulama yazlm mimarisi ve konumlandrld platform ile ilikili olarak gereklemektedir. Windows Azure Cloud Service uygulama gelitirme modeli ile gelitirilen uygulamalar, i srecine bal olarak paralarna ayrlarak, beklenen baar ve performans elde edilebilmektedir.

3|Page brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar - 7 Windows Azure Storage yaklam, gelitiricilerine kullandklar verilerin snflandrma ve planlamaya yneltmektedir. Veri ynlarnn, Windows Azure Storage uyumluluunun salanmas ile esnek ve kolay ynetilebilir yaplara sahip olunmaktadr. Windows Azure ile Cloud Computing Uygulamalar - 8 uygulamalarn baarl ve performansl olarak alabilmesi iin gelitiricilerin, i tecrbelerine gre eitli yaklamlar uygulanmaktadr. Gnmzde depolama ve verinin kullanm konusunda yeni konseptler oluturulmaktadr. Microsoft Windows Azure Platform ile de srece yeni bir bak as oluturulmutur. Windows Azure i le Cloud Computing Uygulamalar - 9 corafyalar ve gereksinimleri her gn farkllayor. Srelere uyum salamak her zamannkinden zor ve maliyetli olmaktadr. Gnmz artlarnda irketlerin ekonomik, kaliteli ve srdrlebilir altyaplar sahip olmasnn en kolay yolu Cloud Computing den gemektedir. Bu blmde Windows Azure Platform zerine Windows Azure Cloud Services konsepti ile gelitirilmi WindowsAzure.FunnyApp uygulamas adm adm yaynlama srelerini incelenmitir. Windows Azure ile Cloud Computing Uygulamalar 10 Maliyetlerin yksek olduu dnemimiz de irketler, farkl kariyer odakl kiileri outsourcing ederek altrma ans bulabilmektedir. srelerin ynetebilmek iin kullanm olduklar altyap sistemleri ise, Cloud Computing hizmetleri ile salamaya allmaktadr. Bu blm ile irketler iin Cloud Computing altyapsnn nemini ve Windows Azure Platform ile kazanacaklar baz olanaklar hakknda bilgi verilmitir.

4|Page brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar 1


Cloud Computing mimarisi, 1970 ylndan balayarak gelien sre ierisinde kullanlan alt yap sistemlerin gelitirilmesi ve eksiklerinin giderilmesi ile ortaya karlmtr. Bu yazlm ile Cloud Computing mimarisi ve Windows Azure Platform ile ilgili anlatmlar gerekletirilmitir.

5|Page brahim ATAY | www.ibrahimatay.org

Toplumlarn byme ve deimesi kanlmaz sretir. Kyafet almak iin dar kp, maazalar gezdiimiz gnler uzak olmasa gerek. Gemite internet de kyafet satlacana inanmayan kiiler, gnmzde internet maazalar ile son moday takip etmektedirler. Saatlerce aradmz bir kitab, kitapya gidip kitab anlatp, kitapda var olup olmadn anlamak ile uramak yerine artk kendi kitapmz olduk. Aram olduumuz kitab, birka internet sitesi dolaarak zaman kaybetmeden satn alabiliyoruz. Gemiten gnmze birok sre ve deneyimler ile byk maazalardan / kitaplardan, byk internet sitelerine terfi etmi olduk. Srelerin bu ekilde ilerletilmesi ile birlikte, internet maazalarnn tketim toplumundaki yeri bymeye devam etmektedir. Bymeye devam eden internet maazalar / kitaplar / sosyal alar sahiplerden, irketlerden karak internet kullanclarna ait alanlar haline geldi. Giderek artan mteri taleplerine bal olarak maazalar, yeni alanlar alarak mterilerine daha iyi hizmet etmek ve daha ok sat yapabilmek amac iine girmilerdir. Sz konusu sre internet ortamnda olan bir maazay dndmzde ise, yeni sunucular ve sunucu yneticileri ie alnacaktr. Internet alanlarnn sunucu alma yar zaman ierisinde byk MainFrame mimarilerinin kurulmas gerektirdi. erisinde bulunulduu sre en iyi zm olarak gsterilebilecek mimari olarak sylenebilirdi.

(IBM 7090 - Stanford University) 6|Page brahim ATAY | www.ibrahimatay.org

Artan kullanc talepleri, zaman ierisinde uygulama gelitirme srelerini de byk oranda etkileyerek, yeni zmlerin ortaya kmasna yol amtr.

Kullanc taleplerinin younluunun artmasna bal olarak 1970 ve ncesinde birok zm ile talepler karlanmaya allmtr. 1970 ylnda mainframe kurulmas ile sunucularn birbirine baml olarak alma stratejisi, 1980 ylnda yerini Client -Server mimarisi ile datk uygulamalara brakmtr. Sz konusu deiimler, gelitirilen uygulamalarn ve donanm mimarilerinin yeniden ekillendirilmesine neden oldu. ve kiisel uygulamalar istedikleri yerden erime yetersizlii nedeni ile 1990 yl ile Web(Internet) uygulamalar gndeme gelmeye balamtr. 1970 ve 1980 yllarnda benimsenen uygulama gelitirme yaklamlar Web(1990s - Internet) devrimi ile yetersiz kalmaya balanmtr. Sz konusu sre ile yeni uygulama gelitirme mimarisi olan SOA mimarisi ortaya kmtr. 1970 ile balayarak 2010 ylna gelinen sre ierisinde birok gelitirilmi uygulama ve irketlerde biriken sunucu alt yap dalar meydana gelmitir. Geliim srecinde 2010 ylna gelindiinde kullanclarn Web(Internet)te geirilen srenin artmas ve i uygulamalarnda younluklarn artmas Cloud Computing mimarisinin oluturulmasna neden olmutur. Cloud Computing mimarisi 1970 ylndan balayarak 2010 ylna kadar olan sre ierisinde gelitirilen mimari yaklamlar ve donanm alt yaplarn temel alarak gelitirilmitir. 7|Page brahim ATAY | www.ibrahimatay.org

Cloud Computing in temellerini oluturulan mimariler zaman ierisinde birok deneyim ve alt yap problemleri ile eitli konularda hizmetler vermitir. Sre ierisinde oluturulan zmler ynetim, enerji, lisanslama ile ilgili almalar gibi birok maliyet, zaman ve gvenlik gibi konulara problemler ortaya karmtr. Cloud Computing mimarisi ise gemi dnemlerde meydana gelen problemlerin zm olarak kamza kmaktadr. Konu ile ilgili rnek vermek gerekir ise; Kyafet sat yapan internet uygulamas ele alndnda, uygulamalarn sunulmas ve desteklenmesi amac ile baz satn alm ilemlerinin yaplmas gerekmektedir. Yaplmas gereken satn alma gereksimleri bulunmaktadr. Satn alma gereksinimleri ile ilgili olarak temel liste aadaki gibi olmaktadr. 10 adet sunucu makine 10 adet sunucu kurulum maliyeti 10 adet makine zerinde kullanlmas amac ile sunucu ilemtim sistemi temini Gvenlik yazlmlarnn temin edilmesi Sunucu ynetim, bakm ve gvenlik ilemlerini gerekletirecek ekiplerinin oluturulmas

Yukardaki belirtilen rnek gereksimlerin salanmas ile kyafet sat sreci balamtr. Sre balam ve uygulama durum analizi yapldnda aadaki gibi baz sonular olumaktadr. Kurulmu olan alt yap gereksinimlerin zerindedir. Kurulmu olan alt yap gereksimleri karlamamaktadr. Kyafet sat uygulamasna yeni sunuclar gerekmektedir. Sunucu ynetim, bakm ve gvenlik maliyetleri srekli olarak artmaktadr. Enerji problemleri yaanmaktadr. Lisans maliyetleri artmaktadr.

Kyafet sat maaza uygulamas Cloud Computing alt yapsn kullanld bir mimaride konumlandrldnda sunucu satn alma ve kurulma sreci kredi kartnzn bilgilerinizi girmeniz kadar hzldr. Internet maazas ierisinde yaplan kampanya srecinde, internet maazasnn sahip olduu sunucu, bellek, enerji ve gvenlik gereksinimleri bulunmaktadr. Cloud Computing mimarisi ile internet maazasann gereksnim duyguu gereksinimlere bal olarak otomatik olarak deitirilmektedir. Yaplan deiimler sunucu satn alma, kurulum ve dier ilemlerin yaplmasn beklemeksizin genilemektedir. Sz konusu ihtiyalarn salanmas, kullandn kadar deme eklinde kullanlmas, fazla sunucu ve enerji tketilmesini nleyecektir. Cloud Computing mimari geliimleri ile ilgili olarak birok zm bulunmaktadr. Sz konusu zmler kendileri ierisinde de destekledikleri platfomlar bulunmaktadr. Aada baz Cloud Computing Platfom salayaclar bulunmaktadr.

8|Page brahim ATAY | www.ibrahimatay.org

Microsoft Windows Azure Amazon Web Service Google App Engine

Cloud Computing Platfom salayclar ile ilgili olarak getiimiz terihlerde San Fransico da dzenlenen Meet Windows Azure konferans(MEET Windows Azure konferans ile ilgili konferans notlarm balantda bulabilirsiniz.) ile Windows Azure platfomunun dier Cloud Computing platfomlarndan avantajlar ve platfom yeniliklerinden bahsedilmitir.

Gelitirilmi olan Kyafet sat magaza uygulamasnn Windows Azure Platforma tanmas istemi olduunuz uygulamanz gelitirme srecinde birok uygulama alt yapsn kullanabilmekteyiz. Aada Windows Azure Platfomun desteklemi olduu teknolojiler bulunmaktadr. ASP.Net MVC & WebForm Ruby Python NodJS F# Java Php

Windows Azure Platfomun uygulama gelitirme ilmeleri ile ilgili olarak Eclipse IDE ve Visual Studio IDE aralar ile tam destek salamaktadr.

9|Page brahim ATAY | www.ibrahimatay.org

Gelitirmi olduumuz uygulama, yukarda belirtilen uygulama gelitirme teknolojilerini desteklemiyor ise, Virtual Machine destei sayesinde istemi olduunuz uygulama gelitirme mimarisini gelitirek kullanlmasna olanak salamaktadr. Sz konusu zellik saysesinde, Windows Azure Platfomun zerinde istenilen uygulama kullanclara sunulabilmektedir. Cloud Computing mimarisi, 1970 ylndan balayarak gelien sre ierisinde kullanlan alt yap sistemlerin gelitirilmesi ve eksiklerinin giderilmesi ile ortaya karlmtr. Bu yazlm ile Cloud Computing mimarisi ve Windows Azure Platfom ile ilgili anlatmlar gerekletirilmitir.

EK Not: Blm ile ilgili uygulama videosu ve sunumunu incelemek iin aadaki balanty kullanabilirsiniz. http://www.ibrahimatay.org/post/2012/12/16/Windows-Azure-ile-Cloud-ComputingUygulamalari---1-(-Video-).aspx

10 | P a g e brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar 2


Cloud Computing mimarisi, gelitirici ynnde birok problemi zmlenmektedir. Sz konusu zmler ile birlikte terminolojimize yeni kavramlar ve yaklamlar eklenmi bulunmaktadr. Bu yazmda Cloud Computing sistemleri zerinde bulunan uygulamalarn Scalability srelerine deinmi bulunmaktaym.

11 | P a g e brahim ATAY | www.ibrahimatay.org

Yazdan kalma bahar gnleri yaamaktayz. Gne, kimi zaman bulutlarn arkasna saklanarak, hayatmzda farkllklar yaratyor. imize geldiimizde, notlarmzn, grevlerimizin ve almalarmzn yolunda gitmesini umarz. lerimizi gerekletirirken, bilerek ya da bilmeyerek bulutlar kullanrz.

Grevlerimiz yazlm gelitirmek, sreleri takip etmek ya da takmlarn organizasyonu salamak ise, zaman ierisinde birok mimari ile i ie olmak zorundasnzdr. Gemite Visual Basic 6 ile gelitirmi olduumuz uygulamalar, gnmzde Web uygulamalar olarak grmekteyiz. Getiimiz tarihlerde yaynlam olduum, Windows Azure ile Cloud Computing Uygulamalar - 1 isimli yayn ile insan hayat ve biliim dnyasndaki gelimelerden bahsedilmiti. Sz konusu sreler 1970 ylndan balayarak devam etmektedir.

12 | P a g e brahim ATAY | www.ibrahimatay.org

nsanlarn ve hizmet vermeyi amalayan sistemlerin deiimleri srekli olarak devam etmektedir. Yaadmz dnem ierisinde insanlar istedikleri ortam ya da sistemle Dnya ile balantda kalmak istemektedirler. steklere cevap retilmesi amac ile yeni uygulama gelitirme mimarileri oluturulmaktadr. Mimariler, dnemin ihtiyalarna uygun olarak eitlilik gstermektedir. erisinde bulunduumuz dnem problemlerine bal olarak Cloud Computing mimarisi oluturulmutur. Cloud Computing mimarisi, uygulama gelitirilmesi ve sunulmas ile ilgili olarak birok konuda kolaylklar salamaktadr.

13 | P a g e brahim ATAY | www.ibrahimatay.org

Cloud Computing uygulamalar iin, farkl alma tarzlar bulunmaktadr. Sz konusu alma tarzlar, uygulamalarn kullanm younluklarna bal olarak deiim gstermektedir. Yukarda belirtilen grafik ile uygulama alma tipleri belirtilmitir. Grafik ierisinde belirtilen uygulama alma tarzlar ile ilgili aklama bulunmaktadr.

On and Off
Kurumlar ierisinde ksa dnem de baz uygulamalarn altrlmas gerekmektedir. Uygulamalar gerektiinde altrlp ve ilem tamamladnda kapatlmas ile yaam sresini tamamlamaktadr. Uygulama srekli olarak kullanlmad iin, sistem gereksinimleri kullanmasnn sarfiyatta yol amamas nedeni ile kapatlmaktadr.

Growing Fast
Gnmzde birok yeni i fikri oluturulmaktadr. Genel olarak dnldnde internet i fikirleri youn olarak artmaktadr. Yeni oluturulan i fikri, baladnda baz nedenlerden dolay, minimum kullanm dzeyinde almaktadr. fikri ile ilgili gerekli almalarn yaplmas ile kullanm, artmakta ve artan performans gereksinimleri grafii olumaktadr.

Unpredictable Bursting
Kurumlar ierisinde mali ilemler, srekli olarak gereklemektedir. Artan mali bilgilerle, vergi hesaplama dnemlerinde finans uygulamalarnn alma sreleri artmas ve buna bal olarak sistem gereksinimleri de artmaktadr. Vergi hesapla dnemlerinin tamamlanmas ile uygulama doal alma srecine dnerek doal gereksinimlerine ekilmektedir.

Predictable Bursting
nternet zerinde gerekleen pazarlama sreleri, srekli olarak artmaktadr. nsanlarn kiisel zevkleri, istekleri ve yaplan kampanya srelerine bal olarak, internet al/veri sitelerinin de younluklar srekli olarak deimektedir. Gerekleen srete, internet pazarlama uygulamasnn farkl sistem gereksinimlerine sahip olmas gerekmektedir.

14 | P a g e brahim ATAY | www.ibrahimatay.org

Yaayan uygulamalar, deiik dnemlerde farkl alma younluklar tarz sergilemektedir. Sz konusu tarzlar uygulamalarn younluklarna gre deiim gstermektedir. Uygulamalar zerinde oluturulan younluklara bal olarak, performans gereksinimleri artmakta ya da azalmaktadr.

Uygulama performansna bal olarak, uygulama makine saylarnn artrlmas ya da mevcut makinelerin glendirilmesi gndeme gelecektir. Sz konusu durumlar uygulama yaam sresi ile ilgili olarak farkl durumlardr. Sz konusu sreler yukarda ekillendirilmitir. Cloud Computing mimarisinin kullanm olduu, uygulamada birden fazla makine ile iin(rnein: Internet portal ) gerekletirilmesi amalanyor ise, Scale-Out(Makine saysnn artrlmas) yaplmas gerekmektedir. Srecin tamamlanmas ile Scale-In(Makine saysnn azaltlmas) yaplarak uygulamann doal snrlarna ulatrlabilmektedir. Kullanlan uygulamann ayn makine zerinde altrlarak, gerekletirilecek olan iin (rnein: resim ileme sreleri) tamamlanmas istenildiinde Scale-Up (Memory ya da CPU art) yaplmas gerekmektedir. lemlerin tamamlanmas ile Scale-Down (Memory ya da CPU azaltlmas) yaplarak uygulama makinesinin doal snrlarna ulatrlabilmektedir. Not: Windows Azure mimarisi ile uygulama Scabilitynin otomatik olarak ekillendirilmesi salanabilmektedir. Cloud Computing mimarisi, gelitirici ynnde birok problemi zmlemektedir. Sz konusu zmler ile birlikte terminolojimize yeni kavramlar ve yaklamlar eklenmi bulunmaktadr. Bu yazmda Cloud Computing sistemleri zerinde bulunan uygulamalarn Scalability srelerine deinmi bulunmaktaym. 15 | P a g e brahim ATAY | www.ibrahimatay.org

EK Not: Blm ile ilgili uygulama videosu ve sunumunu incelemek iin aadaki balanty kullanabilirsiniz. http://www.ibrahimatay.org/post/2012/12/21/Windows-Azure-ile-Cloud-ComputingUygulamalari---2-(-Video-).aspx

16 | P a g e brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar 3


irketler i ve d operasyonlar ynetmek amac ile eitli enstrmanlar kullanmaktadr. Operasyon srelerinin deimesi, uygulama sistemlerinin de deiimlere adapte olabilmesi gerekmektedir. Sz konusu sre iletmelerin srekliini devam ettirebilmesi iin byk nem tamaktadr. Windows Azure Platformu, irketler iin birok kolaylklar ve minimum maliyet ile irketlere zgr alma imkan salayabilmektedir

17 | P a g e brahim ATAY | www.ibrahimatay.org

alma yaam boyunca farkl ihtiyalar ortaya kmaktadr. Gnmzde grsel ve iitsel iletiimin ya da eitim aralarnn artmas, hazrlanan almalarn srece uygun olarak tasarlanmasn gerektirdi. Sz konusu sree; alanlar ya da mteriler ile eitim videolarnn ve dokmanlarn paylalmas rnek gsterilebilir. Gerekletirilen operasyonlar, irket ii ya da dnda kullanlan hizmetler ile salanmaktadr. Gnmzde irketinizin ne kadar byk olduu deil, srelere ne kadar hzl adapte olduunuz ve cevap verdiiniz nem kazanmaktadr. Bymeye alan irketler, artan operasyonlar ve younluklarna bal olarak zgr alabilecekleri sistemleri kullanmaktadr. irketler gereksinimlerine bal olarak, operasyon srelerini kolaylatrmak amac ile birok uygulama kullanmaktadr. Kullanlan uygulamalarn kullanm ve bilginin gvenliini salamak amac ile eitli IT kurallar oluturmaktadr. Oluturulan kurallar, irket stratejilerine bal olarak hazrlanmaktadr. Gvenlik kurallar, IT yetki lilerinin tecrbe birikimleri ile snrl olmaktadr. Kstl IT kurallarna bal olarak da kstl kontrol listeleri ve gzden karlan gvenlik zafiyetleri olumaktadr. Cloud Computing salayclar ve zellikle Windows Azure platformu ISO/IEC 27001 standartlar erevesinde gvenlik sreleri ynetmektedir. ISO/IEC 27001 standartlar, International Electrotechnical Commission ve International Organization for Standardization, kurumlarn risk ynetimi ve risk ileme planlarn, grev ve sorumluluklarn, i devamll planlarn, acil durum olay ynetimi prosedrleri hazrlamasn ve uygulamada bunlarn kaytlarnn tutmasn srelerini incelemektedir.

18 | P a g e brahim ATAY | www.ibrahimatay.org

irketler operasyon srelerini ynetmek ve izlemek amac ile birok zmler kullanmaktadr. Kullanlan zmler operasyon srelerinin bymesi ile yetersiz kalmasna neden olmaktadr. Artan uygulama gereksinimleri yeni sunucu, uygulama lisanslar ve yneticilerin eitilmesi ya da ie alnmas gereksinimlerini dourmaktadr. Gelien artlar irketlerin, gereksinimlerine bal olarak gereksinim zmleri oluturmasna neden olmaktadr. Yaplan planlamalar ile ilgili olarak birok senaryo oluturulabilmektedir. Aada rnekte baz gereksinim senaryolar bulunmaktadr. Senaryo - I irket ierisinde ok miktarda video ierik bulunmaktadr. erikleri mterilere ya da alanlara nasl ulatrabiliriz?

19 | P a g e brahim ATAY | www.ibrahimatay.org

Uygulanan klasik zm - I irketler oluan gereksinime gre satn almalar yapmaktadr. irketin kendisi ierisinde ya da darya ak video yayn yapabilmek amac ile donanm, ilemlerin yerine getirme amac ile yazlmlarn satn alnmas gerekmektedir. Yaplan satn alma ilemlerine bal olarak, sistemlerin ynetimini gerekletirecek takm elemanlarnn eitimi ya da ie alnmas gerekmektedir. Gerekleen srecin, zaman ierisinde artan verilerin depolanmas, gvenlii gibi nedenlerden dolay yeniden ekillendirilmesi gerekmektedir. Windows Azure Platformu ile Uygulanabilecek zm Windows Azure Platform kullanlmas ile irket gereksinim ve stratejilerine bal olarak, video ieriklerin ekillendirilmesi ve kullanclar iin yaynlanabilmesi mmkndr. Sreci gerekletirmek amac ile Windows Azure Media Service ile ilgili birka bilgi renilmesi yeterli olmaktadr. Kullanlan Windows Azure platform hizmetleri gereksinimlere bal olarak istenildii gibi ekillendirilebilmektedir. Senaryo - II irketler pazarlama srelerini baarya ulatrmak amac ile mterilerini tanyarak , CRM srelerini gerekletirmektedir. irketlerin CRM srlerini gerekletirmek iin, mteri ile ilgili verileri depolamak ve gerektiinde analiz yapmas gerekmektedir. Uygulanan klasik zm - II irketlerin hedef kitlelerine ulamak amac ile mterilerinin gerekletirmi olduu satn alma ya da zevkler ve ilgilendikleri konular ile ilgili bilgiler toplamas gerekmektedir. Bymekte olan irketlerin, artan mteri portfyne bal olarak toplamas gereken bilgi de artmaktadr. Artan bilgilere bal olarak bilgilerin depolanmas, analiz edilmesi ve pazarlama stratejisi oluturma sreleri, alt yaplarn yetersiz kalmas nedeni ile yavalayacak ve istenilen pazarlama manevralarnn yaplmasn engelleyecektir. Operasyon srelerinin devamlln salanabilmesi iin yeni alt yap sistemlerinin satn alnmas gerekmektedir. Windows Azure Platformun ile Uygulanabilecek zm irketlerin hedef kitlelerine, ulalabilmesi amac ile kitlenin tannmas ve kitlere bal olarak stratejilerin hzl ekilde oluturulmas gerekmektedir. irket, artan veri havuzunu Windows Azurea tamas ile Big Data (Hadoop, MongoDB)zmleri ya da SQL Database seenekleri kullanarak depolayabilmektedir. Depolanan veriler, SQL Reporting hizmeti ile hzl ekilde raporlanabilmektedir. Sz konusu ilemler ve gereksinimler birka kk konfigrasyon ile ekillendirilebilmekte ve sre devam etmektedir. Senaryo - III irket ierisinde gerekli olan operasyonlarn gerekletirilebilmesi amac ile eitli gereksinimlere sahip uygulama makineleri gerekmektedir. Sz konusu makinelere farkl lokasyonlar zerinden eriebilmesi gerekmektedir. 20 | P a g e brahim ATAY | www.ibrahimatay.org

Uygulanan klasik zm - III Operasyonlarn devamn salamak amac ile farkl seeneklerin salanabildii donanm gereksinimlerinin satn almlarnn yaplmas gerekmektedir. Satn alnan ekipmanlarn ynetilebilmesi amac ile gerekli yazlm alnmas ve ynetim sreleri gerekletirecek yneticilerin eitilmesi ya da ie alnmas gerekmektedir. Windows Azure Platformun ile Uygulanabilecek zm irketler kullandklar teknolojik enstrmanlara gre farkl konfigrasyon a ve iletim sistemine sahip makineler kullanmaktadr. zellikle kampanya dnemine girecek olan irketler iin operasyonlarn ynetebilmesi iin gerekli alt yaplarn salanmas byk nem tamaktadr. irketler sahip olduu alt yap istemleri Windows Azure Platformuna tamas ile istenilen konfigrasyon ve sayda makinelere sahip olabilmektedir. zellikle irket isteklerine bal olarak Windows, Linux ya da farkl yazlm sistemlerini barndrabilmektedir. irketler i ve d operasyonlar ynetmek amac ile eitli enstrmanlar kullanmaktadr. Operasyon srelerinin deimesi , uygulama sistemlerinin de deiimlere adapte olabilmesi gerekmektedir. Sz konusu sre iletmelerin srekliini devam ettirebilmesi iin byk nem tamaktadr. Windows Azure Platformu, irketler iin birok kolaylklar ve minimum maliyet ile irketlere zgr alma imkan salayabilmektedir.

EK Not: Blm ile ilgili uygulama videosu ve sunumunu incelemek iin aadaki balanty kullanabilirsiniz. http://www.ibrahimatay.org/post/2013/1/15/Windows-Azure-ile-Cloud-ComputingUygulamalari---3-(-Video-).aspx

21 | P a g e brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar 4


Uygulama gelitirilmesi ya da mevcut uygulamalarn Windows Azure Platform a tanmas ile ilgili birok senaryo retilebilir. Gelitirilen senaryolar; zaman, maliyet ya da srelerin basit olarak gerekletirilebilmesi mmkn olmaktadr. rnek verilen senaryolar, istek ve mevcut koullara bal olarak ekillendirebilecektir. Windows Azure Platform u ile irketler minimum maliyet ile zgr almalarna olanak salamaktadr.

22 | P a g e brahim ATAY | www.ibrahimatay.org

Zamann getiini, yaam ierisinde meydana gelen deiikler ile fark etmekteyiz. Gn gne ile yeni balanglar hazrlanmakta, yeni balanglar sahip olduumuz alkanlklarn deimesine neden olmaktadr. Zaman insanlara adapte olmay ve ilerlemeyi retmektedir. nsanlar deimekte ve deiimlerine en byk katky, gelitirilen uygulamalar ve kullanm sreleri etki etmektedir. Gemite konumak iin kilometrelerce uzaklklar amak iin urarken, artk bilgisayarn dier yannda grebiliyoruz . Gnlk hayatta kullandmz uygulamalar hayatlarmz deitirdi. Meydana gelen deiim uygulama gelitiricilerinin uygulama gelitirme srelerini etkiledi ve srelere hzl adapte olmasna neden oldu. Uygulama gelitirme sreleri, gelitirilecek uygulama trn, gelitirme aamasnda kullanlacak olan Framework ve takm kltrne gre farkllklar gstermektedir. Gnmzde Web uygulamalarnn gelitirilmesi ve kullanc younluklarnn artmas ile uygulamalarn Windows Azure ve benzeri hizmet salayc sistemlere tanmasna ynelik zmler oluturulmaya balad. Gnmzde Cloud Computing salayclara ynelik gelitirilen uygulamalar, salayc irketin yaam sresine ilikili olarak yaamn devam ettirmektedir. Cloud Computing salayclar ve zellikle Windows Azure Platfom, salam olduu Cloud Computing hizmetilerini European Commission ve benzeri kurumlarn standart almalarna bal olarak ekillendirmektedir. Cloud Computing zerinde barndrlacak olan uygulamalarn, standartlarna bal olarak gelitirilmesi Cloud Computing salayc irketlerin de bamsz olarak, uygulamalar istedii salayc irkette konumlandrmasna olanak salanmaktadr. blm ile irketler iin Cloud Computing altyapsnn nemi ve Windows Azure Platform ile kazanacaklar baz olanaklar hakknda bilgi verilmitir.

Uygulama gelitirme srelerinde, gelitirilmesi istenen uygulamaya bal olarak, farkl uygulama gereksinimleri ortaya kabilmektedir. Gereksinimler uygulama gelitirme 23 | P a g e brahim ATAY | www.ibrahimatay.org

aamasnda balayarak, uygulama yaam dngsnn tamamlanmas srecin de de devam etmektedir. Gelitirme sresini tamamlanm olan uygulamalar, yaamlar boyunca gereksinimlere bal olarak farkl srelere dahil edilebilmektedir. Sz konusu sreler uygulamann Cloud Computing salaycsna tanmas ya da Cloud Computing odakl olarak gelitirilmesi eklinde senaryolatrlabilmektedir. Aada uygulamalarn Cloud Computing salayclarndan olan Windows Azure Platform una rnek tama senaryolar belirtilmitir. Senaryo I Gelitirme sreci tamamlam ve almakta olan uygulamalarmz bulunmakta. Uygulamalar Windows Azure Platform una tamak istiyoruz. Fakat uygulamalar ile ilgili yeni gelitirme yamamza zamanmz bulunmamaktadr. Uygulamalarmz Windows Azure Platform una nasl tayabiliriz? zm nerisi I Tanmas istenen uygulamalarn, Windows Azure Platform un salad kolaylklarnda biri olan sanal makine zerine konumlandrarak yaam srecine devam ettirilebilir. Senaryo II almakta olan uygulamalarmz bulunmakta. Uygulamalarmz Linux zerinde almakta ve Windows Azure Platform un kullanmak istiyoruz. Fakat uygulamalarmzn kullanm olduu veritaban ve uygulama mimarisini (programlama dili ya da 3rdParty yazlmlar) Windows Azure Platform desteklememekte. Uygulamalarmz Windows Azure Platform una tamak iin ne yapmamz gerekmektedir? zm nerisi II Windows Azure Virtual Machine zellii ile uygulamalar iin istenen yaam ortam oluturulabilir. Windows Azure Virtual Machine destei ile Linux (CentOS,Ubuntu ve Suse), Windows Server(2008 ve 2012) iletim sistemleri kullanlabilmektedir. Tanmas istenen uygulamalarn gereksinimi olan 3rdParty yazlmlar ise, Windows Azure Virtual Machine balanlarak kurulumlar yaplabilmektedir. almalarn gerekletirilmesi ile istenilen uygulamalar Windows Azure Platform una kolaylk ile tanabilmektedir. Senaryo III Uygulamalarnz almakta olduu mevcut sanal makineler (Hyper-V ya da VMware zerinde) bulunmakta. Sanal makinelerin bulunduu donanmlar yetersiz ve zaman ile gereksinimler artmakta. Artan gereksinimleri hzl ve dk maliyet ile zmek istiyoruz. Sreci nasl zebiliriz? zm nerisi III Kullanmda bulunan sanal makineler Windows Azure Platforma tanmas ile dk maliyetli ve artan ihtiyalara cevap retebilen sistemler oluturulabilmektedir.

24 | P a g e brahim ATAY | www.ibrahimatay.org

Kullanmda bulunan sanal makineler Windows Azure Virtual Machine zerinde tanarak, basit ve hzl ekilde ilemler gerekletirilebilmektedir. Belirtilen tama senaryolar, uygulama srelerinde kullanlmas muhtemel neriler dir. Bu neriler tanmas istenen uygulama ve izlenmesi gereken stratejilere bal olarak deiiklikler ve farkl uygulanmalar olabilir.

Uygulama gelitirme sreleri, teslim sreleri ya da uygulama gelitirecek olan takma gre farkllklar gstermektedir. zellikle Cloud Computing odakl uygulama gelitirme srelerinde farkl senaryolar retilebilmektedir. Aada baz Windows Azure Platform ynelik uygulama gelitirme senaryo rnekleri belirtilmitir. Senaryo I Gelitirmeye balayacamz olan uygulamann teslim tarihi ok yakn ve eitim alma zamanmz bulunmamakta. Uygulamamanz Windows Azure Platform odakl olarak gelitirmek istiyoruz. Uygulamamz nasl gelitirebiliriz? zm nerisi I Klasik uygulama gelitirme srelerinde SQL Server veritaban, verilere performansl eriebilmek iin .Net Cache ya da 3rdParty olarak MemCached kullanmaktayz. Windows Azure Platform odakl uygulama gelitirme srecinde SQL Database ve gelitirilen uygulamaya bal olarak Hadoop ya da MongoDB gibi NoSQL veritabanlar kullanlabilmektedir. Uygulama Caching sreleri ile ilgili olarak ise, MemCached kullanabilmemize olan salamaktadr. Salanan kolaylklar ile mevcut uygulama gelitirme bilgilerini kullanarak Windows Azure Platform un da uygulamalarmz konumlandrabilmekteyiz. Senaryo II Gelitirmek istemi olduum uygulamay Windows Azure Platform da en iyi performans ve st dzey gvenlik ile almasn istiyorum. Uygulamam nasl gelitirmeliyim? zm nerisi II Gelitirilmesi istenen uygulamay, st dzey gvenlik seviyesinde altrlmas amaland senaryolarda Windows Azure Cloud Services ve Windows Azure un veri yn nesneleri olan Table ve Blob nesneleri kullanlmas nerilmektedir. Gerekletirilen gelitirme Windows Azure Platform enstrmanlarn kullanarak yaplm olacaktr. 25 | P a g e brahim ATAY | www.ibrahimatay.org

Uygulama gelitirilmesi ya da mevcut uygulamalarn Windows Azure Platform a tanmas ile ilgili birok senaryo retilebilir. Gelitirilen senaryolar ; zaman, maliyet ya da srelerin basit olarak gerekletirilebilmesi mmkn olmaktadr. rnek verilen senaryolar, istek ve mevcut koullara bal olarak ekillendirilebilmektedir. Windows Azure Platform u ile irketler minimum maliyet ile zgr almalarna olanak salamaktadr.

EK Not: Blm ile ilgili uygulama videosu ve sunumunu incelemek iin aadaki balanty kullanabilirsiniz. http://www.ibrahimatay.org/post/2013/1/16/Windows-Azure-ile-Cloud-ComputingUygulamalari---4-(-Video-).aspx.aspx

26 | P a g e brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar 5


Mesleki gerekliklere bal olarak ekillenen hayatlarda, adaptasyon renilmesi zor olmasna karn, zmleri de yannda getirmektedir. Yeni bir adaptasyon srecine girmekteyiz. Ama gemite sahip olduumuz bilgilerin zerine yeni kat oluturmaktayz. WindowsAzure.FunnyApp projesi ile Windows Azure Platform ve Cloud Computing mimarisini anlayarak. Elenceli olarak srece adapte olmay amalamaktayz

27 | P a g e brahim ATAY | www.ibrahimatay.org

Gn ierisinde birok yeni konu okuyoruz. imize yarayan konular, kendimize katmaya alyoruz. Her yeni konu, hayatmza yeni alkanlklar ve bak alar kazandrmaktadr. Kazanlan yeni alkanlklar ve bak alar yeni deiimler oluturmaktadr. Yeni konular renmek, elenceli olsa da uygulama srecinde zorlu, adal ve sancl olmaktadr. Her yeni konu balanacak yeni bir nokta olarak dnlse de mevcut olan bilgilerin zerinde klan kat olarak grlmesi gerekmektedir. Her yeni oluturulan kat, zirveye giden yeni bir merdiven olarak grmeliyiz. Deiim sreleri, deiime kar direnleri oluturur. Meydana gelen diren ise, adaptasyon srecinde yeni admlarn atlmasna neden olmaktadr. Gnmzde teknolojik yenilikler birka gn, hafta ya da aylk deiimler ile gereklemektedir. Srece gelitirici gznde bakldnda ise, son kullancdan daha hzl adapte olmamz ve fark yaratmamz gerekmektedir.

Gemite Visual Basic ve Classic ASP ile gelitirdiimiz uygulamalarn yerini, ASP.Net MVC ya da SharePoint in kullanlarak gelitirilen projeler ald. Zaman hzla ilerliyor. Geen zaman ierisinde deiimleri fark ederek, yeni bilgilere sahip ol arak yrnmek gerekmektedir. Sre, gelecee daha salam admlar ile yrmeyi salayacaktr. Her deiim sreci, yeni adaptasyon sreleri oluturmaktadr. Gelitirici olarak, kullanlan Framework yaplarnn ksa dnemler ile yeni srmlerinin yaynlanmas, teknik srelere hzl adapte olmamza neden olmaktadr. Teknik adaptasyon srelerinin hzl, basit ve anlalr olabilmesi amac ile uygulama ortamlar hazrlamaktayz. Hazrlanan 28 | P a g e brahim ATAY | www.ibrahimatay.org

uygulama ortamlar kimi zaman gemite gerekletirilen projelerden ya da yeni oluturulan uygulama senaryolar ile ekillenmektedir.

Teknik adaptasyon srelerinde hzl, anlalr ve elenceli olmas amac ile uygulama projeler gelitirmekteyiz. Cloud Computing mimarisi ve zellikle Windows Azure Platform anlam amac ile uygulama projesi gelitiriyor olacaz. Windows Azure Platform u anlama ve ona elenceli ekilde adapte olabilmemiz amac ile WindowsAzure.FunnyApp isimli uygulama projesini gelitiriyor olacaz. Gelitirilmesi amalanan uygulama projesi, gnlk hayatmzn paras haline gelen Instagram projesine benzemektedir. Gerekletirilen proje ile kullanclarn diledikleri fotoraflar uygulama vastas ile paylamas amalanmaktadr. Proje ierisinde baz senaryolar aada belirtilmitir. Kullanc hesabnn ilemleri (kullanc ad, parola, eposta) Resim ykleme alannn oluturulmas (istenen resmin yklenmesi, aklama, ilgili etiketler) Yklenen resimlerin thumbnail boyutlarnda ekillendirilmesi (Windows Azure Worker Role) Yklenen resimlerin grntlenmesi (thumbnail boyutunda resimlerin listelenmesi) Resminde detay gsterilmesi (aklama, etiketler ve yklene boyutlarda resim) Yorum giri alann oluturulmas (kullanc ad, eposta ve yorum) Yorumlarn listelenmesi (Kullanc ad ve yorum gsterilmesi)

29 | P a g e brahim ATAY | www.ibrahimatay.org

Belirtilen uygulama senaryolarna bal, veri yaplarnn oluturulmas gerekmektedir. Aada uygulama senaryolarnn gereksinimlerinin salanmas amac ile oluturulan snfn yaps bulunmaktadr.

Gelitirilmesi amalanan uygulama projesi ierisinde kullanclarn ilemleri gerekletirmesi amac ile Windows Azure Web Role(Web uygulamas), resim ileme ve dier youn zaman gerektiren ilemlerin gerekletirilmesi amac ile Windows Azure Worker Role(Windows Service nesnelerini benzer alma prensipleri olan Windows Azure Role yapsdr.) kullanlacaktr. Uygulama veri ilemleri ve katmanlar arasnda haberleme ilemlerini, Windows Azure Platform nesneleri olan Blob, Table ve Queue nesnelerini kullanacaktr.

30 | P a g e brahim ATAY | www.ibrahimatay.org

Uygulama projesi Github ve Codeplex zerinde bulunan repository zerinde gncel kodlar paylalmaktadr. Uygulama projesi ile ilgili olarak yaanan problemleri zmlenmesi amac ile github ya da Codeplex zerinde bulunan Wiki kullanmanz nermekteyim. Uygulama repository adresleri aada belirtilmitir. Codeplex / https://windowsazurefunnyap.codeplex.com/ Github / https://github.com/ibrahimatay/WindowsAzure.FunnyApp Mesleki gerekliklere bal olarak ekillenen hayatlarda, adaptasyon renilmesi zor olmasna karn, zmleri de yannda getirmektedir. Yeni bir adaptasyon srecine girmekteyiz. Ama gemite sahip olduumuz bilgilerin zerine yeni kat oluturmaktayz. WindowsAzure.FunnyApp projesi ile Windows Azure Platform ve Cloud Computing mimarisini anlayarak. Elenceli olarak srece adapte olmay amalamaktayz.

EK Not: Blm ile ilgili uygulama videosu ve sunumunu incelemek iin aadaki balanty kullanabilirsiniz. http://www.ibrahimatay.org/post/2013/1/18/Windows-Azure-ile-Cloud-ComputingUygulamalari---5-(-video-).aspx

31 | P a g e brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar 6


uygulamalarn baarl ve performansl almas, uygulama yazlm mimarisi ve konumlandrld platform ile ilikili olarak gereklemektedir. Windows Azure Cloud Service uygulama gelitirme modeli ile gelitirilen uygulamalar, i srecine bal olarak paralarna ayrlarak, beklenen baar ve performans elde edilebilmektedir.

32 | P a g e brahim ATAY | www.ibrahimatay.org

irketler, yaamlarn srdrebilmek amac ile eitli i sreleri gerekletirmektedir. sreleri, srekli ve baarl sonular retilmesi, i kural ve standartlar ile salanmaktadr. Oluturulan i kurallar, kalitenin korunmasn amalamaktadr. Gnmzde mteri memnuniyetinin, devaml ve istenildii gibi salanmas, i uygulamalar ile gerekletirilmektedir. standart ve kurallarnn farklk gstermesi, kullanclar zelletirilmi uygulamalara yneltmektedir.

Mteri portfylerine, uygun retim ve hizmetlerin sunulmas, i srelerinin srekli ve baarl olmas ile salanmaktadr. stenilen sonular, sreleri gerekletiren ve izleyen uygulamalarn salkl almas ile salanmaktadr. uygulamalar kullanm, gerekletirecei i srecinin younluuna bal olarak deimektedir. rnein; ylba dnemini de ierisine alan yln son ay, e -ticaret ve irketlerin muhasebe blmleri, hesaplar kapatabilmek ve rn satmak amac ile youn olarak almaktadr. Gerekletirilen ilemler, yln dier zamanlarna gre daha youndur. uygulamalar, farkl zaman birimlerinde oluan i younluklarn baar ve performans ile alabilmesi iin elastik alma ortamlarna ihtiya duymaktadr. irketler, i srelerini devaml, en az maliyet ve baarl olarak gerekletirmek amac ile uygulamalarn Cloud Computing salayc irketler ve zellikle Microsoft Windows Azure Platforma tamaktadr. 33 | P a g e brahim ATAY | www.ibrahimatay.org

uygulamalarnn Windows Azure Platforma tanmas ile uygulamalarn, kullanabilecei zengin alt yap salanmaktadr. Uygulamalarn alma ortamnda Windows Azure Platform gibi zengin bir ortama tanmas, kullanclar tarafnda meydana gelecek olan i yknn dzenlenmesine ve uygulama zerinde bulunan stresin azaltlmasn salayacaktr. Ama Windows Azure Platform un salam olduu alt yap gcn amaland gibi kullanlmasn salamayacaktr. uygulamalar, Windows Azure Platform ierisinde en iyi baar ve performans yakalayabilmesi iin, uygulamalarn Windows Azure Platform a uyumlu olarak gelitirilmesi gerekmektedir. Uygulama yaam ortamlar, uygulamalar zerinde bulunan i younluu dzenlemesini salamaktadr. Kullanlan uygulamalarn yazlm mimari yaps ise, uygulamann salk ve baarl almasn salamaktadr. Gelitirilen i uygulamalarnn, Windows Azure Platform alt yap zenginliklerini en iyi ekilde kullanlabilmesi iin Windows Azure Platform un desteklemi olduu, Windows Azure Cloud Service uygulama modelinin kullanlmas nerilmektedir. Uygulamalar, Windows Azure Cloud Service modeli ile kolay ynetilebilir, gvenli ve elastiki yaam ortam kazanmaktadr. Uygulama gelitiricilerinin, Windows Azure Platform zenginleri ve Windows Azure Cloud Service uygulama modelinin hzl ve kolay renebilmesi amac ile WindowsAzure.FunnyApp uygulama rnei hazrlanmtr. Uygulama rnei ile temsili olarak i younluklarn datlmas ve katmanl alma sreleri incelenmitir. Uygulama rneinde aada belirtilen, senaryolar gerekletirilmitir. Kullanc hesabnn ilemleri (kullanc ad, parola, eposta) Resim ykleme alannn oluturulmas (istenen resmin yklenmesi, aklama, ilgili etiketler) Yklenen resimlerin thumbnail boyutlarnda ekillendirilmesi (Windows Az ure Worker Role) Yklenen resimlerin grntlenmesi (thumbnail boyutunda resimlerin listelenmesi) Resminde detay gsterilmesi (aklama, etiketler ve yklene boyutlarda resim) Yorum giri alann oluturulmas (kullanc ad, eposta ve yorum) Yorumlarn listelenmesi (Kullanc ad ve yorum gsterilmesi)

uygulamalar ierisinde kullanc ilemlerinin gerekletirildii alanlar olduu gibi youn i yknn olduu paralar da bulunmaktadr. uygulamalarnda rnein; resim ya da video ileme, youn muhasebe ve arama ilemleri gerekletirilebilmektedir. Sz konusu ilemler, Windows Service uygulamalar ya da kullanc ilemlerinin devam ettirebilecei ekilde planlanmaktadr.

34 | P a g e brahim ATAY | www.ibrahimatay.org

Uygulama rnei olan, WindowsAzure.FunnyApp almas ierisinde kullanc tarafnda yklenen resim ieriin, ierik bilgisi alnarak ileme katmanna tanmaktadr. Yaplan ilem ile kullanc almalarna devam ederken, resim ileme sreleri farkl katmanda tamamlanmaktadr. lem srecinde Windows Azure nesneleri kullanarak, katmanlar arasnda mesajlama ilemleri ile gereklemektedir. Windows Azure Platform ierisinde birbirinden bamsz olan, uygulama katmanlar iletiiminin salanmas amac ile Queues nesnelerinin kullanlmas nerilmektedir. Queues nesneleri, Windows Azure Storage ierisinde bulunduu gibi Windows Azure ServiceBus Queues yaklam ile de kullanlmaktadr.

Windows Azure Platform ierisinde ayn uygulama domaininde alan, katmanlar aras iletiimin salanmas amac ile Windows Azure Storage ierisinde bulunan Queues nesnesi kullanlmas nerilmektedir. Uygulama paralarnn d ya da i sistemler ile iletiim salamas iin Windows Azure ServiceBus Queues yaklamn kullanlmas nerilmektedir. Windows Azure Platform un desteklemi olduu Queues nesneleri ile ilgili bilgi ve karlatrma aada bulunmaktadr.

35 | P a g e brahim ATAY | www.ibrahimatay.org

zellik Toplu mesaj gnderme Toplu mesaj alma WCF Entegrasyonu WF Entegrasyonu Server-Side Transaction Log Zamanlanm Gnderim En az mesaj boyuttu En fazla mesaj boyuttu Kuyruk Algoritmas Kullanlan iletiim protokoll Peek fonksiyon destei Authentication Yetki tabanl iletiim

Windows Azure Queues Desteklemiyor Destekliyor Desteklemiyor Gelitirme Gerektiriyor Destekliyor Destekliyor 64KB 100TB HTTP/HTTPS zerinde Rest Destekliyor Symmetric key Desteklemiyor

Windows Azure Service Bus Queues Destekliyor Destekliyor Destekliyor Destekliyor Desteklemiyor Destekliyor 256KB 1,2,3,4 ya da 5GB First-In-First-Out (FIFO) HTTPS zerinde Rest Desteklemiyor ACS claims Destekliyor

Gerekletirilen uygulama rnei, d herhangi sistem ile iletiim kurmamas nedeni ile Windows Azure Queues kullanlmtr. Uygulama ierisinde mesaj ieriinin gnderilmesi ve dinleyici tarafndan alnmas ile ilgili sreler gerekletirilmitir. Uygulama senaryolar, aada kaynak kodlar ile incelenmektedir. Aada anlatlan sreler de kullanlmak zere baz sabitler tanmlanmtr. Tanmlanan deikenler, yazlan kod ierisinde anahtar ieriklerin tek noktada kontroln salamaktadr. Blob, Queue nesneleri iin tanmlanan deiken deerlerinin, kk harf ile yazlmasna dikkat edilmelidir.
public class Utils { public const string ConfigurationString = "DataConnectionString"; public const string CloudQueueKey = "imagequeue"; public const string CloudBlobKey = "imageblob"; }

Uygulama Senaryosu I Kullanc tarafnda resim ve ilgili bilgilerin girilmesi ilemleri gerekletirilmektedir. Gerekletirilen ilemler ile ilgili bilgiler mesaj kuyruuna girmesini salayacaktr. Konu ile ilgili kaynak kodlar, yorumlar ile aada anlatlmtr.
private static readonly object _look = new object(); private static bool _storageInitialized = false; // ilem gerekletirlecek olan nesnelerin tanmlanmas

36 | P a g e brahim ATAY | www.ibrahimatay.org

private static CloudBlobClient _blobClient; private static CloudQueueClient _queueClient; protected void Page_Load(object sender, EventArgs e) { this.Page.Title = "Image Uploads"; if (IsPostBack) return; InitializeStorage(); } protected void ButtonSave_Click(object sender, EventArgs e) { if (FileUploadImage.HasFiles & Page.IsValid) { string uniqueBobName = string.Format("{0}/funnyimage_{1}{2}", Utils.CloudBl obKey, Guid.NewGuid().ToString(), Path.GetExtension(FileUploadImage.File Name)); CloudBlockBlob blob = _blobClient.GetBlockBlobReference(uniqueBobName); blob.Properties.ContentType = FileUploadImage.PostedFile.ContentType; blob.UploadFromStream(FileUploadImage.FileContent); FunnyAppRepository<Post> postRepository = new FunnyAppRepository<Post>(); FunnyAppRepository<Tag> tagRepository = new FunnyAppRepository<Tag>(); MembershipUser user = Membership.GetUser(Page.User.Identity.Name); if (user != null) { Post post = new Post { PostContent = TextBoxDescription.Text, PostTitle = TextBoxTitle.Text, State = false, UserId = user.ProviderUserKey.ToString() }; string[] tags = TextBoxTag.Text.Split(';'); foreach (string tag in tags) { if (!string.IsNullOrEmpty(tag)) { tagRepository.Create(new Tag() { PostRowKey = post.RowKey, PostPartitionKey = post.PartitionKey, TagName = tag, }); tagRepository.SubmitChange(); } } postRepository.Create(post); postRepository.SubmitChange();

37 | P a g e brahim ATAY | www.ibrahimatay.org

// Kuyruk nesneleri CloudQueue queue = _queueClient.GetQueueReference(Utils.CloudQueueKey); // mesaj ieriinin oluturulmas // mesaj ierisinden birden fazla bilgi olmas sebebi ile "," karakteri ile bilgiler birbirinden ayrlmtr. CloudQueueMessage message = new CloudQueueMessage(string.Format("{0},{1},{2}", blob.Uri, post.P artitionKey, post.RowKey)); // Mesaj kuyrua eklenmitir. queue.AddMessage(message); LabelResult.Text = "Uploaded"; } else { LabelResult.Text = "Failed"; } } } private void InitializeStorage() { if (_storageInitialized) { return; } lock (_look) { if (_storageInitialized) { return; } try { // hesap bilgilerinin alnmas CloudStorageAccount storageAccount = CloudStorageAccount.FromConfigurat ionSetting(Utils.ConfigurationString); // image blob taycsnn oluturulmas _blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = _blobClient.GetContainerReference(Utils. CloudBlobKey); container.CreateIfNotExist(); // Blob taycsna ile ilgili eriim ayarlarnn tanmlanmas var permissions = container.GetPermissions(); permissions.PublicAccess = BlobContainerPublicAccessType.Container; container.SetPermissions(permissions); // create queue to communicate with worker role _queueClient = storageAccount.CreateCloudQueueClient(); CloudQueue queue = _queueClient.GetQueueReference(Utils.CloudQueueKey);

38 | P a g e brahim ATAY | www.ibrahimatay.org

queue.CreateIfNotExist(); } catch (WebException exception) { Trace.Write(exception.Message); } _storageInitialized = true; } }

Uygulama Senaryosu II Mesaj kuyruunun dinlenmesi ve ilgili bilgilerin alnmas gerekmektedir. Sz konusu bilgilerin alnmas ile Worker Role ierisinde resim ileme sreci istenilen boyutlara ekillendirilecektir. Dinleme ilemi, uygulama yaam sresi boyunca, kullanc talepl erinin gerekletirilmesi amac ile sonsuz bir dng ierisinde gerekletirilmektedir.
// ilem gerekletirlecek olan nesnelerin tanmlanmas private CloudQueue _queue; private CloudBlobContainer _container; public override void Run() { // Worker nesnesi ierisinde srecin srekli olarak gerekletirilmesi amac il e // sonsuz dngye alnmas gerekmektedir. while (true) { try { // lem srecinde kuyruk ierisinde bulunan mesajn dinleme ilemi CloudQueueMessage message = _queue.GetMessage(); if (message != null) { string[] messageArray = message.AsString.Split(new char[] { ',' }); string outputBlobUri = messageArray[0]; string partitionKey = messageArray[1]; string rowkey = messageArray[2]; // Kuyruk ierisinde okunan mesaj, dng ierisinde tekrar okumas nemek amac ile // mesaj Peek edilmektedir. _queue.PeekMessage(); string inputBlobUri = Regex.Replace(outputBlobUri, "([^\\.]+)(\\.[^ \\.]+)?$", "$1-myimage$2"); _container.CreateIfNotExist(); CloudBlob inputBlob = _container.GetBlobReference(outputBlobUri); CloudBlob outputBlob = _container.GetBlobReference(inputBlobUri); var u = inputBlob.Uri.AbsolutePath;

39 | P a g e brahim ATAY | www.ibrahimatay.org

// Blob nesnesi ierisinde bulunan resim ierii okunmas using (BlobStream input = inputBlob.OpenRead()) using (BlobStream output = outputBlob.OpenWrite()) { ProcessImage(input, output); output.Commit(); outputBlob.Properties.ContentType = "image/jpeg"; outputBlob.SetProperties(); FunnyAppRepository<Post> postRepository = new FunnyAppRepositor y<Post>(); Post post = postRepository.Find(partitionKey, rowkey); post.PostImage = inputBlobUri; post.State = true; postRepository.Update(post); postRepository.SubmitChange(); _queue.DeleteMessage(message); } } } catch (StorageClientException e) { Trace.Write(e); } } } public override bool OnStart() { // Worker zerinde balatlmas amalanan varsaylan balant says ServicePointManager.DefaultConnectionLimit = 12; // Uygulama ierisinde balant bilgilerinin alnma ilemi CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) => configSetter(RoleEnvironment.GetConfigurationSettingValue(configName))); // Uygulama ierisinde balant bilgilerinin alnma ilemi var storageAccount = CloudStorageAccount.FromConfigurationSetting(Utils.Configu rationString); // kuyruk nesnesi ile ilgili refeasnlarn oluturulmas CloudQueueClient queueStorage = storageAccount.CreateCloudQueueClient(); _queue = queueStorage.GetQueueReference(Utils.CloudQueueKey); // kuyruk nesnesinin bulunup-bulunmad kontrollnn yaplmas _queue.CreateIfNotExist(); CloudBlobClient blobStorage = storageAccount.CreateCloudBlobClient(); _container = blobStorage.GetContainerReference(Utils.CloudBlobKey); _container.CreateIfNotExist();

40 | P a g e brahim ATAY | www.ibrahimatay.org

return base.OnStart(); } // Resim boyutlandrma ilemleri ile fonksiyon public void ProcessImage(Stream input, Stream output){ ... }

uygulamalarnn, her yeni gn daha fazla kullanlmas ile i ykleri artrlmaktadr. Gerekletirilen her srecin, devaml ve baarl sonular retmesi beklenmektedir. Srelerin planland gibi gereklemesi, sre ierisinde kullanlan uygulamann salkl almas byk nem tamaktadr. Not: Yaplan anlatmn rneklenmesi amac ile WindowsAzure.FunnyApp uygulamas hazrlanmtr. Aadaki balant kullanarak, uygulama kaynak kodlarna eriebilirsiniz. Github / https://github.com/ibrahimatay/WindowsAzure.FunnyApp uygulamalarn baarl ve performansl almas, uygulama yazlm mimarisi ve konumlandrld platform ile ilikili olarak gereklemektedir. Windows Azure Cloud Service uygulama gelitirme modeli ile gelitirilen uygulamalar, i srecine bal olarak paralarna ayrlarak, beklenen baar ve performans elde edilebilmektedir .

EK Not: Blm ile ilgili uygulama videosu ve sunumunu incelemek iin aadaki balanty kullanabilirsiniz. http://www.ibrahimatay.org/post/2013/4/18/Windows-Azure-ile-Cloud-ComputingUygulamalari%E2%80%946-(-Video-).aspx

41 | P a g e brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar 7


Windows Azure Storage yaklam, gelitiricilerine kullandklar verilerin snflandrma ve planlamaya yneltmektedir. Veri ynlarnn, Windows Azure Storage uyumluluunun salanmas ile esnek ve kolay ynetilebilir yaplara sahip olunmaktadr.

42 | P a g e brahim ATAY | www.ibrahimatay.org

Zaman ierisinde planl ya da plansz olarak, birok ilem yaplmaktadr. Gnmzde sosyal alar ile paylamlar ya da bankalar ile birok harcamalar yapmaktayz. Yaplan ilemler kullanclar iin nemli olmasa da irketler iin CRM bilgisi olarak depolanmaktadr. Gnmzde mteri isteklerini, talep etmeden hazrlayan irketler kazanmaktadr. Yeni nesil CRM sreleri, her yeni gn zellik kazanarak ekillenmektedir. Sz konusu CRM sreleri, yasal yaptrmlara bal gerekletirilmektedir.

planlama ve senaryolar gereksinim ve yasal yaptrmlara uyumluluk salanmak amac ile gncellemektedir. Uygulamalarn kullanm srecinde gereksinim duyulmayan, herhangi zellik dnemde gereksinim duyulabilmektedir. Gerekleen deiimler, kullanlan i uygulamalarnn ekillendirilmesi ya da yeniden gelitirilmesi gndeme gelebilmektedir. Trkiye Cumhuriyetinde, 1999 yln sonu itibari ile vatandalk numaras uygulamas balatlmtr. Uygulama ile isim benzerliklerinde kaynaklanan problemler ve tm ilemlerin tek numara zerinde gerekletirilmesi amalamtr. alma ile bata salk sektr olmak zere, insan ile ilikili tm sektrlerde kullanlan uygulamalarda, vatandalk numarasn temel alma zelliinin kazandrlmas gereksinimi ortaya kmtr.

43 | P a g e brahim ATAY | www.ibrahimatay.org

Yaplan ilemler ile tamamlanm mevcut ya da sren ilem verilerinin dzenlenmesi gereksinimi ortaya kmtr. sreleri, kural ya da yasal yaptrmlarn uygulanmas sebebi ile ilem girdi ve ktlarnn deiiklik gstermesi gndeme gelebilmektedir. Yaplan ilemler, mevcutta verilerin dzenlenmesi, performans ve depolama srelerini de etkilemektedir.

uygulamalar, kullanclarndan yazl ya da Binary trnde eitli veriler ile almaktadr. allan veriler, ynlarn olumasna neden olmaktadr. Veri ynlar ise, zaman ile byk veri(Big Data) olgusunu gndeme getirmektedir. Her irketin alm olduu ana i dal zerinde almas, konu ile ilgili uzmanlamasn salayacaktr. Gereksinimleri duyduu dier yan ihtiyalar, konunun uzmanlarnda salamas, i srecini ve retimin kalitesini artracaktr. irketler, mevcut veri ynlarn, depolama, analiz ve ynetim iin eitli i uygulamalar kullanmaktadr. Veri ynlar ile ilgili ilem yaplabilmek amac ile eitli aralar satn alnmaktadr. Yaplan satn alma hareketleri, her irketin birer veri merkezinin oluturmasna neden olmaktadr. Veri merkezlerinin kurulmas, ynetilmesi, bakm ya da nitelikli i gcnn oluturulmas, irketlerin i kollar dnda yklerin altna girmesine neden olmaktadr.

44 | P a g e brahim ATAY | www.ibrahimatay.org

Gnmzde sektr ve i kollarn eitlenmesi, i ihtiyalarnn ile ilgili duyulan verinin artmasna neden olmaktadr. gereksinimleri salanmas ve istenilen sonularn retilebilmesi iin i uygulamalarnn, Cloud Computing saylayclara ve zellikle Microsoft Windows Azure Platform a tanmaktadr. uygulamalar, gerekletirilmesi istenen sreci en avantajl sunmas amac ile eitli teknolojik bamlklara yklenmektedir. eitli nedenlerden dolay, deien i sreleri, kullanlan uygulamalarn da gncelleme gereksinimini ortaya kartmaktadr. Uygulamalar, i sreleri ile ilgili eitli avantajlar sunarken, deiim srelerinde handikaplarn olumasna neden olabilmektedir. Uygulama mimarileri, i sre ve yasal bamlklar nedeni ile kullanc tarafndan verilerin gncellenmesi gndeme gelebilmektedir. Uygulama veri yaplarnn, zaman ve ihtiyalarn gereince deimesi, uygulama performans ve veritaban optimizasyonu gibi problem oluturabilmektedir. Gemi dnemde gereksinim olduu dnlen veriler, farkl bir dnemde gereksinim duyulmayabilir. Benzer yaklam olarak, baz uygulama verileri gereksinim duyulabilmektedir. Yaplan ilemler, verinin depolanmas ya da analiz srecini etkileyebilmektedir.

Gelien teknoloji ile i srelere uygun, kolay ve hzl i zmleri oluturulabilmektedir. Gnmz i uygulamalarnn, hzl veri sorgulama ve veri ile ilgili yapsal dzenleme 45 | P a g e brahim ATAY | www.ibrahimatay.org

gereksinimleri ortaya karmtr. Meydana gelen gereksinimler, verinin yapnn esnek olmas ihtiyacn dourdu. 2009 yln da elenceyi se, ilikisel=yanl; olan gerek Dnyadan faydalan slogan ile yaplan, "no:sql(east)" konferans ile NoSQL konusunda eitli dncelerin olumasnda byk etki oluturmutur. NoSQL, 1998un sonlarna doru ortaya kan bir kavramdr. Klasik ilikisel veritaban yapanda bulunmayan ve sorgulama iin SQL dili kullanmayan veritaban trdr. Genel olarak xml ya da JSON formatnda veri depolama yapmaktadr. ihtiyalar, i verisinin esnek olma gereksinimi beraberin de ihtiyacn hizmet olarak sunulmasn da salamtr. Microsoft ve dier Cloud Computing salayclar eitli depolama hizmetleri ile kullanclarna Cloud Storage hizmetleri sunmaktadr. Microsoft da Windows Azure Platform ile kullanclarna ilikisel(SQL Database) veritaban hizmeti sunduu gibi No-Relation(Windows Azure Storage) i zm de sunmaktadr. Windows Azure Platform No-Relation i zm olarak, Windows Azure Storage hizmeti salamaktadr. Hizmet ile Binary ve dier veri trleri farkl nesneler ierisinde gveli ve yksek optimizasyonu deerlerinde, depolanmas salanmaktadr. Aada Windows Azure Storage hizmeti katmanlar belirtilmitir.

Windows Azure Storage hizmeti, paral ve paralara zg zelliklerin olmas sebebi ile anlatmn devamnda Windows Azure Storage n paralarndan olan Windows Azure Table Storage ile ilgili bilgiler verilecektir. Windows Azure Table Storage, SQL Database yaklamnda bulunan Table nesnesine benzemektedir. Ama yapsal baz zg zelliklerden dolay, Windows Azure Table Storage yaps SQL Databasede baz farklklar gstermektedir. Aada Windows Azure Storage ve SQL Database ile ilgili bilgi ve karlatrmalar bulunmaktadr.

46 | P a g e brahim ATAY | www.ibrahimatay.org

zellik likisel veri Server-side alama Geo-replication Scale-out LINQ destei Veri eriimi Ynetim protokoll En az veri depolama En fazla veri depolama Firewall Gvenlii REST protokol ile eriim Transaction Transaction logs tutma

Windows Azure Table Storage Desteklemiyor Desteklemiyor Destekliyor Otomatik Destekliyor OData Protokol HTTP/HTTPS zerinde REST 1MB 100TB Tablo bana Desteklemiyor Destekliyor Destekliyor (Limitli) Desteklemiyor

SQL Database Destekliyor Destekliyor Desteklemiyor Manuel Destekliyor ODBC ya da JDBC HTTP/HTTPS zerinde REST ile ODBC/JDBC 2GB 150GB Tablo bana Destekliyor Destekliyor Destekliyor Destekliyor

Windows Azure Table ile almak, veritaban ilemlerini Entity Framework ile yapmak kadar kolay, ilevsel ve hzldr. Windows Azure Table Storage, veri ilem srelerin de LINQ sorgularn kullanlabilmektedir. Entity Framework ile gelitirilen uygulamalarda DbContext nesnesi kullanld gibi Windows Azure Table Storage yapsnda ise, TableServiceContext nesnesi kullanlmaktadr.
public class FunnyAppContext : TableServiceContext { public FunnyAppContext(string baseAddress, StorageCredentials credentials) : base(baseAddress, credentials) { } public IQueryable<Tag> Tag { get { return this.CreateQuery<Tag>("Tag"); } } public IQueryable<Post> Post { get { return this.CreateQuery<Post>("Post"); } } public IQueryable<Comment> Comment { get { return this.CreateQuery<Comment>("Comment"); } }

47 | P a g e brahim ATAY | www.ibrahimatay.org

Uygulama rnei olan, WindowsAzure.FunnyApp almas nesneye ynelimli olarak gelitirilerek, gerek yaamda karlaabilecek durumlar ele alnmaya allmtr. Aada WindowsAzure.FunnyApp almas ile ilgili snf ilikisel emas bulunmaktadr.

Yukardaki ema da grld gibi EntityBase snf TableServiceEntity snfnda tretilmitir. Yaplan tretme ile Windows Azure Table Storage Entity fonksiyonellii kazandrlm olacaktr. Temel snf olan EntityBase snfndan treyen snflar, PartitionKey , RowKey ve Timestamp zellikleri kazanmaktadr. Sz konusu zellikler, Windows Azure Table Storage ierisinde verilerin, benzersiniz(PartitionKey , RowKey) ve ilem zaman(Timestamp) ile ilgili bilgiler tamaktadr.
public class EntityBase : TableServiceEntity { public EntityBase() { this.PartitionKey = DateTime.UtcNow.ToString("MMddyyyy"); this.RowKey = string.Format("{0:10}_{1}", DateTime.MaxValue.Ticks - DateTim e.Now.Ticks, Guid.NewGuid()); } }

48 | P a g e brahim ATAY | www.ibrahimatay.org

Klasik uygulama veritaban uygulama gelitirme srecinde gerekletirildii gibi Windows Azure Table Storage ile de GRUD ilemleri yaplabilmektedir. Yaplan ilemlerin bir kalp zerinde gidebilmesi amac ile Repository tasarm deseni kullanlmtr.
public interface IRepository<TEntity> { TEntity Find(string partitionKey, string rowKey); TEntity Find(string rowKey); void Create(TEntity entity); void Delete(TEntity entity); void Update(TEntity entityToUpdate); void SubmitChange(); IQueryable<TEntity> Get(); }

Windows Azure Table Storage nesnesi ile veri ilemlerinin ynetebilmesi amac iin Repository nesnesinin ynetilebildii FunnyAppRepository snf hazrlanmtr. Snf EntityBase trne ait nesnelere hizmet vermek amac ile snrlandrlmtr.
public class FunnyAppRepository<TEntity> : IRepository<TEntity>, IDisposable where TEntity : EntityBase { // veri ilemleri ile ilgili hesap // bilgilerinin alnmas private static CloudStorageAccount _storageAccount; // i nesnesi ile ilgili tanmlamann yaplmas private readonly FunnyAppContext _context; // nesne trne ayit isim alnmas private readonly string _entitySetName; public FunnyAppRepository() { // veri ilemleri ile ilgili gerekli bilgilerin alnmas _storageAccount = CloudStorageAccount.FromConfigurationSetting(Utils.ConfigurationString) ; // veri hesab bilgilerine bal olarak, // veri nesnelerinin Windows Azure Storage zerinde oluturulmas CloudTableClient.CreateTablesFromModel( typeof (FunnyAppContext), _storageAccount.TableEndpoint.AbsoluteUri, _storageAccount.Credentials); // seili olan nesne trnn isminin alnmas _entitySetName = typeof (TEntity).Name; // // // // seili olan nesne ile ilgili gerekli tanmlamalarn Windows Azure Storage ierisinde olup/olmadn kontrollnn yaplmas. Sz konsu nesnenin Windows Azure Storage ierisinde olmamas durumunda nesne isimine bal olarak, gerekli tanmlamalar yaplmas

49 | P a g e brahim ATAY | www.ibrahimatay.org

_storageAccount.CreateCloudTableClient().CreateTableIfNotExist(_entitySetNa me); // GRUD ilemlerinde sorumlu olan, i nesnesine eriim ile ilgili // gerekli bilgilerin atanmas this._context = new FunnyAppContext(_storageAccount.TableEndpoint.AbsoluteU ri, _storageAccount.Credentials); this._context.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1)) ; } // nesne trne bal olarak // rowkey ve partitionkey ile kayt getirme public TEntity Find(string partitionKey, string rowKey) { return (from g in _context.CreateQuery<TEntity>(_entitySetName) where g.PartitionKey == partitionKey && g.RowKey == rowKey select g).FirstOrDefault(); } // nesne trne bal olarak // rowkey ile kayt getirme public TEntity Find(string rowKey) { return (from g in _context.CreateQuery<TEntity>(_entitySetName) where g.RowKey == rowKey select g).FirstOrDefault(); } // nesne trne ayit yeni ye oluturma public void Create(TEntity entity) { this._context.AddObject(_entitySetName, entity); } // nesne silmek iin public void Delete(TEntity entity) { this._context.DeleteObject(entity); } // nesne gncellemek iin public void Update(TEntity entityToUpdate) { this._context.UpdateObject(entityToUpdate); } // yaplan deiikleri depolama alanna yanstmak iin public void SubmitChange() { this._context.SaveChanges(); } // nesne trne ayit tm ierikleri ekebilmek iin

50 | P a g e brahim ATAY | www.ibrahimatay.org

public IQueryable<TEntity> Get() { return this._context.CreateQuery<TEntity>(_entitySetName); } public void Dispose() { GC.SuppressFinalize(this); } }

Tanmlamas yaplan i nesnelerinin, kullanm ile uygulama senaryosu olan, Kullancn tarafnda yklenen fotoraflarn grntlenme sreci gerekletirilmektedir. Yaplan ilem ile LINQ sorgusu kullanarak gereklemektedir.
Protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) return; // Post nesne trne ayt, repository i nesnesinin tanmlanmas FunnyAppRepository<Post> _postRepository = new FunnyAppRepository<Post>(); List<PostViewData> viewDatas = new List<PostViewData>(); // istenilen ncllerin oluturulduu Linq sorgusu _postRepository.Get().Where(post => post.UserId == Membership.GetUser(Page.User .Identity.Name) .ProviderUserKey.ToString()).ToList() .Where(post=> post.State) .OrderByDescending(post => post.Timestamp) .Take(20).ToList().ForEach(post => viewDatas.Add(new PostViewDat a() { PostContent = post.PostContent, PostImage = post.PostImage, RowKey = post.RowKey, UserId = post.UserId })); this.RepeaterImages.DataSource = viewDatas; this.RepeaterImages.DataBind(); }

Her yeni gn, yeni almalar ve ilemler yapmaktayz. Gerekletirilen sreler, veri ynlar olumasna neden olmaktadr. Meydana gelen veri ynlar, gncelleme, analiz ve depolama gibi gereksinimleri ortaya karmaktadr. Yaanan problemler, ortaya kan NoSQL yaklamlar ile amalanmaktadr. Veri yaplarnn hatal analiz ve planlanmas nedeni ile veri ile ilgili tm alanlarda problemlerin ortaya kmas mmkn olacaktr. 51 | P a g e brahim ATAY | www.ibrahimatay.org

Not: Yaplan anlatmn rneklenmesi amac ile WindowsAzure.FunnyApp uygulamas hazrlanmtr. Aadaki balant kullanlarak, uygulama kaynak kodlarna eriebilirsiniz. Github / https://github.com/ibrahimatay/WindowsAzure.FunnyApp Windows Azure Storage yaklam, gelitiricilerine kullandklar verilerin snflandrma ve planlamaya yneltmektedir. Veri ynlarnn, Windows Azure Storage uyumluluunun salanmas ile esnek ve kolay ynetilebilir yaplara sahip olunmaktadr.

EK Not: Blm ile ilgili uygulama videosu ve sunumunu incelemek iin aadaki balanty kullanabilirsiniz. http://www.ibrahimatay.org/post/2013/5/22/Windows-Azure-ile-Cloud-ComputingUygulamalari---7-(-Video-).aspx

52 | P a g e brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar 8


uygulamalarn baarl ve performansl olarak alabilmesi iin gelitiricilerin, i tecrbelerine gre eitli yaklamlar uygulanmaktadr. Gnmzde depolama ve verinin kullanm konusunda yeni konseptler oluturulmaktadr. Microsoft Windows Azure Platform ile de srece yeni bir bak as oluturulmutur.

53 | P a g e brahim ATAY | www.ibrahimatay.org

Zaman srekli ilerliyor. Gemite byk prodksiyonlar ile yaplaca inanlan almalar, kiisel cihazlar ile gerekletirilebilir hale geldi. Yaanlan anlar kayt etme istei, herkesi fotorafs ve rejisr olabilme yollu amtr. Yaam hzl deiiyor. Yaanan deiimin en byk mimar ise teknoloji olarak grnmektedir. Teknoloji kullanclarna birok olanak salad gibi kendisi ierisinde farkl olanakszlar da bulunmaktadr.

irketler, i srelerini standartlar ile devamlln salayabilmek amac ile eitli teknolojiler kullanlmaktadr. Kullanlan teknolojiler, gerekletirilmesi istenen srecin baarl ve en az problem ile tamamlamas beklenmektedir. Beklenen sonularn alnmas, mteri memnuniyetinin salanmas irketler iin nemli olmaktadr. sreleri devaml ve istenilen kalite de yrtlmesi, mteri ve salayc(retici) arasnda olumlu ilikilerin kurulabilmesi iin nemli bir ba olarak grlmektedir. irk etler sunduklar hizmet ya da rnlerin, mterilerine tantabilmek amac ile reklam filmleri ve kataloglar kullanmaktadr. Kullanlan metreyeler, teknoloji sistemlerin kullanlmas ile oluturularak mterilere ulatrlmaktadr. Gnmzde irketler tantmlarn salayabilmek amac ile birok yntem kullanmaktadr. Kullanlan yntemlerin byk ksm , teknoloji sistemlerin kullanld ve mteri memnuniyetin n planda olduu sistemlerdir. rnein; Atn ve mcevher sat yapan irketler, hazrlad rnleri Web sitesi zerinden eitli fotoraflar kullanarak tantmn yapmaktadr. Ayrca her zaman mterilerinin yannda olabilme olana, rn destek ve sat srecini iin aktif sreler gerekletirebilmektedir. Gerekleen sreler ile irket, genileyen mteri portfyne sahip olmaktadr.

54 | P a g e brahim ATAY | www.ibrahimatay.org

dnyasnn hzl manevrana cevap verebilmek, irketlerin yaamnn devam ettirebilmesi iin ok nemlidir. Genileyen i sreleri ile yeni teknoloji inovasyonlarn n almaktadr. novasyon hareketleri, gemite yaplan hatalarda ders alnarak oluturulmaktadr. Gnmzn inovasyon zmleri incelendiinde en belirgin zellikleri srdrlebilir, ekonomik, esnek ve gvenilir olarak sralanmaktadr. Belirtilen zellikler Cloud Computing mimarisinin en temel zellikleridir. Cloud Computing mimarisi eitli irketler tarafndan yorumlanmaktadr. zellikle Microsoft, Windows Azure Platform rn ile kullanclarna ekonomik ve kolay ynetilebilir hizmetler salamaktadr. Windows Azure Platform, esnek ve devamll salanmas istenen birok i zmn yaayabilmesi iin eitli zmleri sunmaktadr. Sunulan i zmleri, yeni birok konsept kullanarak, i sreleri esnek olabilmesine olanak salamaktadr. irketler gerekletirdii youn i sreleri, teknoloji olarak incelendiin de problemlerin temelinde depolama sorunlar ile karlalmaktadr. Srecin gvenli ve en az problem ile salanabilmesi amac ile Microsoft, Windows Azure Platform ile yeni depolama konseptti, Windows Azure Storage altyapsn sunmutur. Windows Azure Storage, yksek optimizasyonu deeri olan ve yksek gvenlii seviyeli depolama altyapsdr. Sz konusu altyap, klasik uygulama gelitirme yaklamn tesin de nesnel ve veri kayp problemlerin en alt dzey de olan bir sistemdir. Windows Azure Storage altyaps, i gereksinimlerine cevap retecek para dan olumaktadr. Aada Windows Azure Storage altyaps paralar ema ile gsterilmektedir.

Windows Azure Storage, kullanc i gereksinimlerine gre Table, Queue ve Blob isimli paradan olumaktadr. Windows Azure Storage, Table ve Queue paralar ile ilgili Windows Azure ile Cloud Computing Uygulamalar makale serisinin dier blmlerin de bilgiler verilmitir. Bu alma ile Windows Azure Blob Storage ile ilgili bilgiler verilmesi amalanmaktadr.

55 | P a g e brahim ATAY | www.ibrahimatay.org

uygulamalar ounlukla kullanclarn dan eitli Binary(fotoraf ya da Word dosyas) ierikler alnmaktadr. Klasik uygulama gelitirme yaklam incelendiin de kullanclarn dan alnan dosya ieriklerinin uygulama makinesi zerine konumlandrlmaktadr. Kullanc dosyalarn ve i uygulamas ile ayn makine zerine konumlandrlmas, zaman ierisinde depolama eitli problemlerin ortaya kmasna neden olmaktadr. uygulamalarnn, Windows Azure Blob Storage altyaps kullanarak gelitirilmesi ile uygulama verilerin depolama yaklam farkl bir konseptte tanmaktadr. Uygulama verileri, Windows Azure Storage ile uygulama alanndan bamsz, esnek ve yksek gvenlikli altyapya tamaktadr. Aada Windows Azure Blob Storage ile ilgili iletiim emas bulunmaktadr.

Windows Azure Blob Storage, i gereksinimlerine gre eitli olanaklar sunmaktadr. Yukarda bulunan ema da grld gibi Windows Azure Storage, REST mimari ile iletiimini salayan, iki ayr paradan olumaktadr. Aada Windows Azure Blob Storage altyaps ile ilgili baz zellikler ve aklamalar bulunmaktadr. zellik Snapshot Eriim Seviyesi Aklama Depolanan verinin belirlenen tarihe kadar sadece okunabilir halde dondurulmas eklinde hizmet verme durumudur. Depolanmas istenen verinin zel(private), sadece genel(public) okuma ya da genel(public) eriim ile tm yetkiler salanabilmesi eklinde eriim yetkileri snrlandrlabilmektedir.

56 | P a g e brahim ATAY | www.ibrahimatay.org

Disaster Recovery

Backup

Geo-repolaction zellii sayesinde depolanan veri bir den fazla lokasyon zerine kopyalanmaktadr. Gerekleen kopyalama ile herhangi noktada yaanan sistem problemlerin de farkl bir nokta zerinde veri eriim sreleri devam ettirilebilmektedir. Salanan olanaklar ile Disaster Recovery srecine destek verilebilmektedir. Windows Azure Blob Storage ierisinde depolanan veriler, eitli Windows Azure hizmetleri ile yedekle olanaklar salanabilmektedir. Depolanan verinin farkl corafik nokta da kopyalarn oluturulabilmektedir. Windows Azure Blob Storage, zerinde tad verileri Http ya da Https olarak eriilebilmesinin olanak salayabilmektedir. Depolama szm 2616 RPC standart da bal olarak Http ya da Https zerinde REST iletiimine de olanak salamaktadr. Windows Azure Blob Storage zerinde yaplan ilemlerin gemi dnk incelebilmesi amac ile yaplan veri hareketleri depolanabilmektedir. Windows Azure Blob Storage, Block Blob olarak en fazla 200GB ve Page Blob olarak ise, 1TB veri depolayabilmektedir.

Geo-Replication Eriim Protokolleri

Logging

En Fazla Depolama Miktar

Gelitirilen i uygulamalar, gerekletirecei i srecine bal olarak, depolama planlamalar yaplmaktadr. Yaplan depolama planlar, i verisinin okuma / yazma younluklar ya da veri boyutlar ile ilgili ekillenmektedir. Windows Azure Blob Storage konsepti ile i gereksinimlerine gre Page Blob ve Block Blob isimli iki farkl nesne ile hizmet vermektedir. Aada sz konusu nesneler ile ilgili temel bilgi karlatrmalar bulunmaktadr. zellik En fazla Veri Depolama En Az Veri Depolama Snapshot Eriim Seviyesi Eriim Protokolleri Logging Block Blob 4MB 200GB Destekliyor Private,Public blob, Public container Http/Https/Rest Destekliyor Page Blob 512Byte 1TB Destekliyor Private,Public blob, Public container Http/Https/Rest Destekliyor

57 | P a g e brahim ATAY | www.ibrahimatay.org

Yaplan anlatmn anlalmas amac ile WindowsAzure.FunnyApp isimli uygulama rnei hazrlanmtr. Hazrlanan uygulama rnei ile i senaryolar incelenerek, Windows Azure Platform hakknda farkl deneyimler paylalmtr. Uygulama rnein de Windows Azure Storage ile ilikili nesnelerin kullanm kolaylatrc anahtar deikenler tanmlanmtr. Tanmlanan deikenler Windows Azure Storage ierisinde kullanlan nesnelerin ynetimini kolaylatrmas amalanmtr.
public class Utils { public const string ConfigurationString = "DataConnectionString"; public const string CloudQueueKey = "imagequeue"; public const string CloudBlobKey = "imageblob"; }

Uygulama Senaryosu - | Kullanc tarafndan yaynlanmas istenen fotoraf ile ilgili bilgileri girilerek, ieriin uygulamaya ykleme sreci gereklemektedir. Ykleme sreci kullanc tarafndan fotorafn yklenmesi ile Windows Azure Table Storage zerine ilgili bilgilere yazlarak ve fotoraf ieriinin Windows Azure Blob Storage zerine yklenmesi ile tamamlanmaktadr. Gerekleen sreler ile ilgili kaynak kodlar ve yorumlar aada bulunmaktadr.
public partial class ImageUploadPage : Page { private static readonly object _look = new object(); private static bool _storageInitialized = false; // ilem gerekletirlecek olan nesnelerin tanmlanmas private static CloudBlobClient _blobClient; private static CloudQueueClient _queueClient; protected void Page_Load(object sender, EventArgs e) { this.Page.Title = "Image Uploads"; if (IsPostBack) return; InitializeStorage(); } protected void ButtonSave_Click(object sender, EventArgs e) { if (FileUploadImage.HasFiles & Page.IsValid) { // Blob nesnesine yklenecek dosya iin benzersiz bir isim oluturulmas ilmei string uniqueBobName = string.Format("{0}/funnyimage_{1}{2}", Utils.Clo udBlobKey, Guid.NewGuid().ToString(), Path.GetExtension(FileUploadImage. FileName));

58 | P a g e brahim ATAY | www.ibrahimatay.org

// Blob nesnesi ile ilgili anahtar ve nesne rneinin alnmas CloudBlockBlob blob = _blobClient.GetBlockBlobReference(uniqueBobName); // Blob nesnesi zerine yklenecek, Blob nesnesine dosyasnn trnn a tanmas blob.Properties.ContentType = FileUploadImage.PostedFile.ContentType; // Blob nesnesine dosyasnn yklenmesi blob.UploadFromStream(FileUploadImage.FileContent); FunnyAppRepository<Post> postRepository = new FunnyAppRepository<Post>( ); FunnyAppRepository<Tag> tagRepository = new FunnyAppRepository<Tag>(); MembershipUser user = Membership.GetUser(Page.User.Identity.Name); if (user != null) { Post post = new Post { PostContent = TextBoxDescription.Text, PostTitle = TextBoxTitle.Text, State = false, UserId = user.ProviderUserKey.ToString() }; string[] tags = TextBoxTag.Text.Split(';'); foreach (string tag in tags) { if (!string.IsNullOrEmpty(tag)) { tagRepository.Create(new Tag() { PostRowKey = post.RowKey, PostPartitionKey = post.PartitionKey, TagName = tag, }); tagRepository.SubmitChange(); } } postRepository.Create(post); postRepository.SubmitChange(); // Kuyruk nesneleri CloudQueue queue = _queueClient.GetQueueReference(Utils.CloudQueueK ey); // mesaj ieriinin oluturulmas // mesaj ierisinden birden fazla bilgi olmas sebebi ile "," karak teri // ile bilgiler birbirinden ayrlmtr. CloudQueueMessage message = new CloudQueueMessage(string.Format("{0},{1},{2}", blob.Uri, post.PartitionKey, post.RowKey)); // Mesaj kuyrua eklenmitir.

59 | P a g e brahim ATAY | www.ibrahimatay.org

queue.AddMessage(message); LabelResult.Text = "Uploaded"; } else { LabelResult.Text = "Failed"; } } } private void InitializeStorage() { if (_storageInitialized) { return; } lock (_look) { if (_storageInitialized) { return; } try { // hesap bilgilerinin alnmas CloudStorageAccount storageAccount = CloudStorageAccount.FromConfigurationSetting(Utils.Configuratio nString); // image blob taycsnn oluturulmas _blobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer container = _blobClient.GetContainerReference(Utils.CloudBlobKey); container.CreateIfNotExist(); // Blob taycsna ile ilgili eriim ayarlarnn tanmlanmas var permissions = container.GetPermissions(); permissions.PublicAccess = BlobContainerPublicAccessType.Container; container.SetPermissions(permissions); // create queue to communicate with worker role _queueClient = storageAccount.CreateCloudQueueClient(); CloudQueue queue = _queueClient.GetQueueReference(Utils.CloudQueueK ey); queue.CreateIfNotExist(); } catch (WebException exception) { Trace.Write(exception.Message); } _storageInitialized = true;

60 | P a g e brahim ATAY | www.ibrahimatay.org

} } }

Uygulama Senaryosu - || Uygulama rnei olan WindowsAzure.FunnyApp almas, kullancsndan ald fotoraf ierikleri yeninde boyutlandrarak, yaynlamaktadr. Yaplan boyutlandrma ilem younluun dengelemek ve kullanc ilem srecinin gerekletirebilmesi amac ile Worker Role tasarlanmtr. Tasarlanan Worker Role, Windows Azure Blob Storage zerinde boyutlandrlmas amalanan dosya okunarak, boyutlandrma ilemlerine tabi tutulmaktadr. Yaplan ilemler sonucunda ierik URL adresi olumaktadr. Gerekleen sreler ile ilgili kaynak kodlar ve yorumlar aada bulunmaktadr.
public class WorkerRole : RoleEntryPoint { // ilem gerekletirlecek olan nesnelerin tanmlanmas private CloudQueue _queue; private CloudBlobContainer _container; public override void Run() { // Worker nesnesi ierisinde srecin srekli olarak gerekletirilmesi amac ile // sonsuz dngye alnmas gerekmektedir. while (true) { try { // lem srecinde kuyruk ierisinde bulunan mesajn dinleme ilemi CloudQueueMessage message = _queue.GetMessage(); if (message != null) { string[] messageArray = message.AsString.Split(new char[] { ',' }); string outputBlobUri = messageArray[0]; string partitionKey = messageArray[1]; string rowkey = messageArray[2]; // Kuyruk ierisinde okunan mesaj, dng ierisinde tekrar oku mas nemek amac ile // mesaj Peek edilmektedir. _queue.PeekMessage(); // kuyruk nesnesi zerinde gelen Blob nesne adresinin // istenilen formatlarda filitrelenmesi string inputBlobUri = Regex.Replace(outputBlobUri, "([^\\.]+)(\\.[^\\.]+)?$", "$1 -myimage$2"); // lem yaplmas istenen Blob nesnenin kontrol eldilmesi _container.CreateIfNotExist();

61 | P a g e brahim ATAY | www.ibrahimatay.org

// okuma ve yazma srelerin gerekleen olan Blob adreslerine balantlarn oluturulmas CloudBlob inputBlob = _container.GetBlobReference(outputBlobUri ); CloudBlob outputBlob = _container.GetBlobReference(inputBlobUri ); // Blob nesnesi ierisinde bulunan resim ierii okunmas using (BlobStream input = inputBlob.OpenRead()) using (BlobStream output = outputBlob.OpenWrite()) { ProcessImage(input, output); // Blob nesnesi zerinde allan ierik ile ilgili Blob zerine etki etmesi ilemi output.Commit(); // lem sonucu olarak retilen ierisinde output Blob // ierik trnn atanmas outputBlob.Properties.ContentType = "image/jpeg"; // lem sonucu olan ieriin attanan zellikleri Blob nesn esi zerine etki etmesi outputBlob.SetProperties(); FunnyAppRepository<Post> postRepository = new FunnyAppRepos itory<Post>(); Post post = postRepository.Find(partitionKey, rowkey); // Boyutlandrma ilemine urayan fotoraf ieriin // ilgili entity nesnesine yanstlmas post.PostImage = outputBlobUri; post.State = true; postRepository.Update(post); postRepository.SubmitChange(); _queue.DeleteMessage(message); } } } catch (StorageClientException e) { Trace.Write(e); } } } public override bool OnStart() { // Worker zerinde balatlmas amalanan varsaylan balant says ServicePointManager.DefaultConnectionLimit = 12; // Uygulama ierisinde balant bilgilerinin alnma ilemi CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSet ter) => configSetter(RoleEnvironment.GetConfigurationSettingValue(configName))) ;

62 | P a g e brahim ATAY | www.ibrahimatay.org

// Uygulama ierisinde balant bilgilerinin alnma ilemi var storageAccount = CloudStorageAccount.FromConfigurationSetting(Utils.ConfigurationString) ; // kuyruk nesnesi ile ilgili refeasnlarn oluturulmas CloudQueueClient queueStorage = storageAccount.CreateCloudQueueClient(); _queue = queueStorage.GetQueueReference(Utils.CloudQueueKey); // kuyruk nesnesinin bulunup-bulunmad kontrollnn yaplmas _queue.CreateIfNotExist(); // Blob nesnesi ile ilgili referaslarn oluturulmas CloudBlobClient blobStorage = storageAccount.CreateCloudBlobClient(); _container = blobStorage.GetContainerReference(Utils.CloudBlobKey); // Blob nesnesinin blunup-bulunmadnn kontrollnn yaplmas _container.CreateIfNotExist(); return base.OnStart(); } // Resim boyutlandrma ilemleri ile fonksiyon public void ProcessImage(Stream input, Stream output) {. . .} }

Windows Azure Blob Storage altyaps, kullanm ile ilgili i sreleri incelenmitir. Windows Azure Blob Storage altyaps Page Blob ve Block Blob depolama konsepti ile i srelerine cevap retmektedir. Depolama konseptleri, i uygulamalarnn, i verisi zerinde en performansl ekilde alabilmesini olanak salamaktadr. Belirtilen konseptlerin tercihi ve uygulama ekilleri ile ilgili rnek senaryolar aada bulunmaktadr. Windows Azure Blob Storage, Page Blob uygulamalar, ierisinde bulunduu srece bal olarak, youn veri okuma srelerin de bulunmaktadr. rnein; Youn video yaynn yapan i uygulamalar, istemcilerini besleyebilmek iin talep edilen video ierikleri youn okuma ilemlerini gerekletirmesi gerekmektedir. Sz konusun sre de youn okumalara en iyi performans yakalayabilmesi amac ile Windows Azure Page Blob konseptinin tercih edilmesi daha salkl sistem altyaps oluturmanza olanak salayacaktr. Windows Azure Blob Storage, Block Blob gereksinimleri zaman ierisinde paralel olarak, youn dosya ykleme ilemleri gerektirebilmektedir. rnein; E-ticaret sistemleri rn ieriklerini gncellemek amac ile gnlk ierik dzenleme sreleri gerekletirmektedir. Gerekletirilen ilemler i le birok rn fotoraf ierikleri yklenmektedir. zlenen srecin en performansl olarak

63 | P a g e brahim ATAY | www.ibrahimatay.org

gerekletirmek amac ile Windows Azure Block Blob konseptinin tercih edilmesi baarl sonular alnmasn salayacaktr. Not: Yaplan anlatmlarda WindowsAzure.FunnyApp uygulama rnei kullanlmtr. Uygulama ile ilgili kaynak kodlar aadaki balanty kullanarak edinebilirsiniz. Github / https://github.com/ibrahimatay/WindowsAzure.FunnyApp uygulamalarn baarl ve performansl olarak alabilmesi iin gelitiricilerin, i tecrbelerine gre eitli yaklamlar uygulanmaktadr. Gnmzde depolama ve verinin kullanm konusunda yeni konseptler oluturulmaktadr. Microsoft Windows Azure Platform ile de srece yeni bir bak as oluturulmutur. EK Not: Blm ile ilgili uygulama videosu ve sunumunu incelemek iin aadaki balanty kullanabilirsiniz. http://www.ibrahimatay.org/post/2013/8/10/Windows-Azure-ile-Cloud-ComputingUygulamalari---8-(Video).aspx

64 | P a g e brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar 9


corafyalar ve gereksinimleri her gn farkllayor. Srelere uyum salamak her zamannkinden zor ve maliyetli olmaktadr. Gnmz artlarnda irketlerin ekonomik, kaliteli ve srdrlebilir altyaplar sahip olmasnn en kolay yolu Cloud Computing den gemektedir. Bu blmde Windows Azure Platform zerine Windows Azure Cloud Services konsepti ile gelitirilmi WindowsAzure.FunnyApp uygulamas adm adm yaynlama srelerini incelenmitir.

65 | P a g e brahim ATAY | www.ibrahimatay.org

Zaman hzl ilerliyor. ihtiyalar srekli deiiyor. Bugn kullanlan i uygulamalar yarn yeniden planlanmas gerekebiliyor. erisinde bulunduumuz dnem de ise i uygulamalarnn her zamankin den daha fazla esnek olmas gerekmektedir. irketler bymeye ve farkl mteri portfylerine ulamaya devam ediyor. Gemiten sadece Trkiye pazarnda alan irketler, gnmzde Avrupa, Amerika ya da Afrika gibi blgeler de alr hale geldi. Byyen irketler, mterileri ile salkl iletiimi kurabilmesi iin teknolojik altyaplarn, i gereksinimlerine gre ekillendirmeleri gerekmektedir.

Sektrle olarak fark etmeksizin, i corafyalar artyor. Artan i corafyalar, irketlerin yeni mterilerine ulaabilmesi iin yeni altyap yatrmlarn yapmasn gerekmektedir. Yaplan altyap yatrmlarn banda ise, Web tabanl uygulamalar gelmektedir. Gnmzde irketlerin mterilerin her alanda ulama ve destek olma istedii, beraberinde altyap sistemlerinin esnek, ekonomik ve srdrlebilir ihtiyalarn dourmutur. Meydana gelen gereksinimler, teknoloji bilgi ve tecrbeler sonucunda Cloud Computing altyapsnn olumasna neden olmutur. Cloud Computing altyaps eitli irketler tarafnda yorumland gibi Microsoft tarafndan da Windows Azure Platform rn ile kullanclarna birok olanaklar sunmaktadr. Microsoft, Windows Azure Platform rn ile kolay ynetebilir, gvenilir SLA(Service Level Agreement) belgeli ve beraberinde farkl uygulama ve i konseptleri sunmaktadr. Gnmzde i ihtiyalarna gre hzl ekillenebilen irketler deer kazanmaktadr. 66 | P a g e brahim ATAY | www.ibrahimatay.org

Microsoft, Windows Azure Platform altyaps ile irketleri sahip olduklar uygulamalar esnek ve uanda Avrupa, Amerika, Asya ya da gelecek de alacak dier veri merkezleri ile blgeler den bamsz olarak alabilmesine olanak salamaktadr. Windows Azure Platform altyapsnn incelenmesi ve Windows Azure Cloud Services konseptinin anlalmas amac ile WindowsAzure.FunnyApp uygulama almas gelitirilmitir. Anlatmn devamnda WindowsAzure.FunnyApp uygulamasnn Windows Azure Platform ierisinde yaynlama sreci hakknda bilgiler verilecektir. Windows Azure Cloud Service konsepti, esnek(genileyebilen), gvenli ve Agility uygulama gelitirme srelerin de uygulanabilir uygulama konseptidir. Windows Azure Cloud Services konsepti ile hazrlanm uygulamalar, Windows Azure Platform na paketlenerek, yaynlanmaktadr. Cloud Computing uygulamalarnn esnek alabilme yani genileyebile sreleri ile ilgili Windows Azure ile Cloud Computing Uygulamalar - 2 makalesini incelemenizi tavsiye ederim.

Windows Azure Platform ierisinde yaynlanmas istenen Windows Azure Cloud Service uygulamalar, platform ierisinde Production ve Staging olarak iki ayr deployment teknii kullanarak yaynlanabilmektedir. Sz konusu deployment teknikleri ile ilgili aada bilgi verilmitir. Staging uygulamalar gelitirme yaklamna bal olarak, manuel test yaplmas gerektirdii durumlar ile karlalabilmektedir. Sz konusu durumda uygulamalar test ortamnda deploy edilerek, amalanan testler de istenilen sonularn alnmas ile rn ortamna tanmaktadr. Windows Azure Cloud Service deployment srecinde uygulama ilk olarak Staging olarak deploy ile manuel testlerin yaplmas ve uygulama kararlnn anlalmas ile sadece Swap butonu kullanarak, rn ortamna tanabilmektedir.

67 | P a g e brahim ATAY | www.ibrahimatay.org

Production uygulamalar ierisinde bulunduu durumlara gre direk son kullancn karsna karlmas gerekmektedir. Yapla alma ile kullanc direk olarak, son kullancn karsna karlmaktadr. Windows Azure Cloud Service konsepti ile gelitirilen i uygulamalarn direk olarak, son kullancn karsna karabilecek ekilde yaynlanmas istendiin de uygulama Production deployment teknii kullanarak yaynlanabilmektedir.

Agility uygulama gelitirme yaklamlar kullanarak gelitirilen yazlm projeleri, Spint denilen zaman periyotlar kullanarak gelitirmektedir. Gelitirme srecinde her Spint sonunda UAT sreci gerekletirilerek, uygulama kararll test edilmektedir. Yaplan test sonularna bal olarak uygulama rn ortamna tanmaktadr. Windows Azure Cloud Service konsepti ile gelitirilen uygulamalar, Spint sonunda Staging deployment yaplarak, kullanc kabul testleri yaplabilir. Yaplan testler sonucun da karal srm elde edilmesi ile Swap butonu kullanarak, uygulama kolayca rn ortamna tanabilmektedir. Windows Azure Cloud Services konsepti ile hazrlanan uygulamalar, eitli yaynlama trleri kullanarak yaynlanabilmektedir. Sz konusu yaynlama trleri aada belirtilmitir. Windows Azure Platform Ynetim Portal Deployment alanlarn kullanarak Kaynak kontrol sistemleri kullanarak(TFS, TFS Services, Git, ve Local Git) Powershell Script kullanarak Visual Studio 20[08,10,12,13] kullanarak

Yaplan anlatm srecinin devamnda Windows Azure ile Cloud Computing Uygulamalar yayn serisi iin hazrlanan WindowsAzure.FunnyApp uygulamas, Visual 68 | P a g e brahim ATAY | www.ibrahimatay.org

Studio 2012 kullanarak Deployment ve yaynlama sreci inceleniyor olacaktr. Gerekletirilecek admlar aada bulunmaktadr. 1. Uygulama ile ilgili Windows Azure Storage hesabnn(rnei FunnAppStorage) oluturulmas 2. Uygulama ile ilgili Windows Azure Cloud Service hesabnn(rnein FunnyApp) oluturulmas 3. Uygulama konfigrasyonun salanmas 4. Visual Studio 2012 yardm ile uygulama Windows Azure admlarn balatlmas 5. Deployment yaplan uygulamann Swap butonu kullanarak, rn ortamna alnmas Uygulama deployment ve yaynlama sreci ile ilgili anlatmlar da kullanlacak olan WindowsAzure.FunnyApp uygulamas ile ilgili olarak ayrntl bilgi iin Windows Azure ile Cloud Computing Uygulamalar - 5 makalesini incelemenizi tavsiye ederim. 1 - Uygulama ile ilgili Windows Azure Storage hesabnn oluturulmas Windows Azure Storage, Windows Azure Platform ierisinde uygulamalarn depolama gereksinimleri salanabilmesi amac ile oluturulan modern depolama konseptidir. Windows Azure Platform ierisinde Windows Azure Storage hesab oluturulabilmek iin aada bulunan resimdeki admlar gerekletirebilirsiniz.

Windows Azure Storage konsepti ile ilgili detayl teknik bilgi iin Windows Azure ile Cloud Computing Uygulamalar - 7 ve Windows Azure ile Cloud Computing Uygulamalar - 8 makalelerinin incelemenizi tavsiye ederim. 2 - Uygulama ile ilgili Windows Azure Cloud Service hesabnn oluturulmas Windows Azure Cloud Services, Windows Azure Platform ierisinde uygulamalarn esnek, performansl ve yksek gvenlik dzeylerinde alabilmesine olanak salayan modern uygulama yaynlama konseptidir. Windows Azure Platform ierisinde Windows Azure

69 | P a g e brahim ATAY | www.ibrahimatay.org

Cloud Service hesab oluturulabilmek iin aada bulunan resimdeki admlar izleyebilirsiniz.

Windows Azure Cloud Services konsepti ile ilgili teknik bilgi iin Windows Azure ile Cloud Computing Uygulamalar - 5 ve Windows Azure ile Cloud Computing Uygulamalar - 6 makalelerinin incelemenizi tavsiye ederim. 3 - Uygulama konfigrasyonun salanmas Windows Azure Platform ierisinde Windows Azure Cloud Service olarak gelitirilen uygulamann baml olduu Windows Azure Platform hizmetleri ile ilgili iletiimini salayabilmesi amac baz bilgilere ihtiya duymaktadr. Uygulama rnei olan, WindowsAzure.FunnyApp n Windows Azure Storage ile ilgili hesap bilgileri aktarlabilmesi amac ile aadaki admlar izleyebilirsiniz.

70 | P a g e brahim ATAY | www.ibrahimatay.org

Uygulama almas olan WindowsAzure.FunnApp projesi ierisinde bulunan WindowsAzure.FunnyApp proje ablonu ierisinde bulunan Roles blne gelinmesi gerekmektedir. Roles blmnde bulunan WindowsAzure.FunnyApp.Web role seilerek, konfigrasyon alan almaktadr. Windows Azure Cloud Service, Role konfigrasyon alanna ulaabilmek iin aadaki admlar izlenmesi gerekmektedir.

Uygulama almasnn kullanm olduu Windows Azure hizmetleri ile balantsnn salanabilmesi amac ile sahip olduunuz Windows Azure hesap bilgisine ihtiya duymaktadr. Hesap bilgisinin uygulama ierisine aktarlabilmesi iin resimdeki admlar izleyebilirsiniz.

Yukarda belirtilen admlar ile sahip olunan Windows Azure hesap bilgilerin, seilmesi ve devamnda ieriye aktarlmas gerekmektedir. Gerekletirilen ilem admlarnda sahip olunan Windows Azure hesab ile ilikili Publish Setting dosyas kullanlmaktadr. Eer byle bir dosyanz yok ise, Download Publish Settings balantsn kullanarak edinebilirsiniz. 71 | P a g e brahim ATAY | www.ibrahimatay.org

4 - Visual Studio yardm ile uygulama Windows Azure admlarn balatlmas Hazrlanan WindowsAzure.FunnyApp uygulamas, Windows Azure Cloud Service uygulamas olarak yaynlanma sreci ile ilgili aadaki admlar izleyebilirsiniz.

Uygulama yaynlama sreci ile iliki Windows Azure hesab ilikilendirme ilemleri ile ilgili aadaki admlar izleyebilirsiniz.

72 | P a g e brahim ATAY | www.ibrahimatay.org

Uygulama yaynlamas istenen Windows Azure hesab ile ilgili uygulama ortamlarnn ilikilendirilmesi ile ilgili aadaki admlar izleyebilirsiniz.

73 | P a g e brahim ATAY | www.ibrahimatay.org

Windows Azure hesap ilikilendirilmesi ve uygulama konfigrasyonun yaplmas ile uygulama Windows Azure Platform ierisinde yaynlanabilir hale ulamtr. Aadaki admlar izleyerek, uygulama yaynlama ilemleri balatlabilmektedir.

Uygulamann Windows Azure Platform yaynlama ilemi ile ilgili gerekleen sreci Windows Azure Tools for Microsoft Visual Studio ile birlikte gelen, Windows Azure Activity Log panel kullanarak izleyebilirsiniz.

Uygulama Windows Azure Tools for Microsoft Visual Studio kullanarak, Staging olarak yaynlanmtr. Yaynlanan uygulamann, son kullanc ortamnda farkl ve benzersiz bir site adres zerinde yayn yapmaktadr. 5 - Deployment Staging yaplan uygulama, Swap butonu kullanarak, Production ortamna alnmas Windows Azure Platform ierisinde Staging olarak yaynlanan WindowsAzure.FunnyApp uygulamas, amalanan testlerin gerekletirilmesi ile 74 | P a g e brahim ATAY | www.ibrahimatay.org

Swap butonu kullanarak, rn ortamna tanabilmektedir.

Belirtilen ilemlerin yaplmas sonucunda uygulama son kullancn karsna kabilecek, kullanc dostu adresi olan bir Windows Azure Cloud Service uygulamay yaynlanm bulunmaktadr.

75 | P a g e brahim ATAY | www.ibrahimatay.org

Yaplan ilemler sonucunda makale serisi uygulama rnei uygulamas olan WindowsAzure.FunnyApp, Windows Azure Platform zerinde Windows Azure Cloud Services konsepti ile yaynlanm bulunmaktadr. Not: Yaplan anlatmn rneklenmesi amac ile WindowsAzure.FunnyApp uygulamas hazrlanmtr. Aadaki balant kullanarak, uygulama kaynak kodlarna eriebilirsiniz. Github / https://github.com/ibrahimatay/WindowsAzure.FunnyApp corafyalar ve gereksinimleri her gn farkllayor. Srelere uyum salamak her zamannkinden zor ve maliyetli olmaktadr. Gnmz artlarnda irketlerin ekonomik, kaliteli ve srdrlebilir altyaplar sahip olmasnn en kolay yolu Cloud Computing den gemektedir. Bu yazl ile Cloud Computing altyaps olan Windows Azure Platform zerine Windows Azure Cloud Services konsepti ile gelitirilmi WindowsAzure.FunnyApp uygulamas adm adm yaynlama srelerini incelemi olduk.

EK Not: Blm ile ilgili uygulama videosu ve sunumunu incelemek iin aadaki balanty kullanabilirsiniz. http://www.ibrahimatay.org/post/2013/8/12/Windows-Azure-ile-Cloud-ComputingUygulamalari---9-(Video).aspx

76 | P a g e brahim ATAY | www.ibrahimatay.org

Windows Azure ile Cloud Computing Uygulamalar 10


corafyalar ve gereksinimleri her gn farkllayor. Srelere uyum salamak her zamannkinden zor ve maliyetli olmaktadr. Gnmz artlarnda irketlerin ekonomik, kaliteli ve srdrlebilir altyaplar sahip olmasnn en kolay yolu Cloud Computing den gemektedir. Bu blmde Windows Azure Platform zerine Windows Azure Cloud Services konsepti ile gelitirilmi WindowsAzure.FunnyApp uygulamas adm adm yaynlama srelerini incelenmitir.

77 | P a g e brahim ATAY | www.ibrahimatay.org

Zaman hzl ilerliyor. Hedefe giden yollar farkllayor. Her gn yeni proje ve giriimler ile ilerlemeye devam ediyoruz. Yaam kltrleri deiiyor. Deien kltrler , beraberinde yeni gereksinimler ve sektrler oluturmaktadr. retici den tketiciye uzanan yolda ne hz ulam ise teknolojiden gemektedir.

Gnmz i dengesin de internet odakl hizmet ve rnlerin artmas, rn ya da hizmetin sunum srecinde kullanlan altyaplarnn nemini arttrmaktadr. Altyaplarn kesintisiz, en az maliyet ve mteri younluklarna cevap retmesi gereksinimleri bulunmaktadr. Serbest ticaret pazarlarndaki rn satnn byk blm internet zerinde gerekletirmektedir. Byyen internet tabanl sat-pazarlama altyaplar, slak imza ile gerekletirilen srelerden daha gvenli olmas gerekmektedir. Dier bir nemli nokta ise, altyaplarn farkl mteri younluklarnda baarl, cevap retecek yeteneinin olabilmesidir. Her irketin, i gereksinimleri gerekletirmek amac ile irketlere zel veri merkezlerin kurmas, teknoloji d retim yapan irketleri n, yeni maliyet ve teknik uzmanlarn bulmasna problemlerine neden olmaktadr. Teknoloji, mteri gereksinimleri olumadan zm retmeye devam etmektedir. Deimeye tek eyin deiim olduu dnlen dnyamz da i gereksinimlerin ekonomi, younluk ya da baar oranlarna gre deimektedir. Yaplan her hata gelecee iin yeni k olmaktadr. Her yeni k ise, yeni admlar ya da yeni teknoloji altyap sistemleri olmaktadr. 78 | P a g e brahim ATAY | www.ibrahimatay.org

Teknoloji nn en parlak olduu dnemiz de i zm retmek, gemiten daha kolay olmaktadr. zmlerinin yaam sreleri incelendiin de zmn yaam srecinde karlalan problem ve gereksinimlerin retim srecinden daha fazla olduu grlmektedir. zmlerinde altyap beklentilerinin salanabilmesi amac ile Cloud Computing altyaps oluturulmutur. Cloud Computing altyaps, i zmlerin beklenmedik younluklara cevap retebilecek, ekonomik ve i devamlln salamas amac ile hazrlanmtr. Belirtil en altyap zelliklerine ilgili olarak ise, birok irket tarafndan incelenerek yorumlanmtr. zellikle Microsoft, Windows Azure Platform rn ile yksek kullanc deneyimin bulunduu, kolay ynetilebilir olmas ile ne kmaktadr.

Cloud Computing, kullanclarn gereksinim duyaca altyaplar hizmet olarak sunmaktadr. Sunulan her hizmet i gereksinimlerin gereince ekillenerek i zm haline gelmektedir. Cloud Computing Infrastructure as a Services (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS) ve yukardaki resimde belirtilmeyen birok hizmet yaklam ile kullanclarna i zmleri sunmaktadr. Windows Azure Platform ve Platform as a Service (PaaS) uygulama modelinin anlalmas amac ile Windows Azure ile Cloud Computing Uygulamalar makale serisini hazrlanmtr. Makale serisinin daha anlaml olabilmesi iin ise WindowsAzure.FunnyApp isimli uygulama rnei hazrlanmtr. Uygulama rnei ile Windows Azure Cloud Services, Windows Azure Storage ve dier Windows Azure hizmetleri hakknda allmtr.

79 | P a g e brahim ATAY | www.ibrahimatay.org

Makale serisinde yaplan anlatmlarn rneklenmesi amac ile hazrlanan WindowsAzure.FunnyApp uygulamas ile ilgili olarak, aadaki balanty kullanarak kaynak kodlar edinebilirsiniz. WindowsAzure.FunnyApp / https://github.com/ibrahimatay/WindowsAzure.FunnyApp Windows Azure Platform yeni gncellemeler ve eklenen rnler ile gelimeye devam etmektedir. Makale serisi ile uygulama gelitiricilerin Windows Azure Platform ile ilgili fikri edinerek, kolayca uygulama gelitirebilmeleri amalanmtr.

EK Not: Blm ile ilgili uygulama videosu ve sunumunu incelemek iin aadaki balanty kullanabilirsiniz. http://www.ibrahimatay.org/post/2013/8/13/Windows-Azure-ile-Cloud-ComputingUygulamalari---10-(Video).aspx

80 | P a g e brahim ATAY | www.ibrahimatay.org

Kaynaka
Architectural Styles and the Design of Network-based Software Architectures http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm Cloud Computing Wiki http://en.wikipedia.org/wiki/Cloud_computing MEET Windows Azure Konferans Notlar http://www.ibrahimatay.org/post/2012/6/14/MEET-Windows-Azure-KonferansiNotlari.aspx Cloud Computing Dncesi http://www.ibrahimatay.org/post/2012/7/4/Cloud-Computing-Dusuncesi-CloudComputing-thought.aspx Scalability http://en.wikipedia.org/wiki/Scalability Scale-Out Vs Scale-Up http://highscalability.com/blog/2010/9/1/scale-out-vs-scale-up.html Windows Azure Training Kit November 2012 http://www.microsoft.com/en-us/download/details.aspx?id=8396 ISO 27001 http://www.cert.sd/images/stories/iso27001.pdf Eticaret Kitabi - ule ZMEN http://www.eticaretkitabi.com/ Windows Azure Security http://www.windowsazure.com/en-us/support/trust-center/security/ Guidance for Resilient Cloud Architectures http://msdn.microsoft.com/en-us/library/windowsazure/jj853352.aspx The NIST Definition of Cloud Computing http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf Unleashing the Potential of Cloud Computing in Europe 81 | P a g e brahim ATAY | www.ibrahimatay.org

http://ec.europa.eu/information_society/activities/cloudcomputing/docs/com/com_cl oud.pdf Windows Azure Queues and Windows Azure Service Bus Queues - Compared and Contrasted http://msdn.microsoft.com/en-us/library/hh767287(VS.103).aspx What is a cloud service? http://www.windowsazure.com/en-us/manage/services/cloud-services/what-is-acloud-service/ The NIST Definition of Cloud Computing http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf TC Kimlik Numaras http://www.nvi.gov.tr/Hakkimizda/Projeler,Mernis_Hedef.html http://tr.wikipedia.org/wiki/T%C3%BCrkiye_Cumhuriyeti_Kimlik_Numaras%C4%B1 no:sql(east) https://nosqleast.com/2009/ Repository Pattern http://martinfowler.com/eaaCatalog/repository.html Windows Azure Table Storage and SQL Database - Compared and Contrasted http://msdn.microsoft.com/en-us/library/windowsazure/jj553018.aspx Windows Azure Table Storage http://www.windowsazure.com/en-us/develop/net/how-to-guides/table-services/ Understanding Block Blobs and Page Blobs http://msdn.microsoft.com/en-us/library/ee691964.aspx RPC 2616 http://www.ietf.org/rfc/rfc2616.txt

82 | P a g e brahim ATAY | www.ibrahimatay.org

You might also like