Azure SQL – Database copy and export

Azure PaaS servislerinin en populer olanlarindan Azure SQL, PaaS olarak sunulmasinin avantajlarini kullanarak varsayilan bicimde bircok yuksek erisilebilirlik imkani sunmaktadir.

Yerel ortamlarda birkac sunucu, on yatirim, altyapi yapilandirmasi, veri merkezi kurulumu vb bircok operasyonal surec ile birlikte tam anlamiyla bir DR cozumu konumlandirabiliriz.

SQL Server 2016 ile birlikte SQL Always On kullanarak ozellikle SQL seviyesinde FT ve DR cozumlerinde elimiz daha guclendi. En onemlisi artik farkli farkli replikasyon yada HA cozumleri yerine tum bunlari icerisinde barindiran SQL Always On taknolojisini kullanabiliriz.

Azure SQL tarafina gelindiginde ise tum bu servislerin default olarak bulunuyor. Portal uzerinden birkac saniye icerisinde gerceklestirelel yapilandirma ile SQL veritabanlariniz icin secondary kopyalar olusuturulabilir.

Ayni sekilde Azure SQL icerisinde point-in-time denilen otomatik yedekleme hizmeti de bulunmaktadir. Varsayilan olarak veritabaninizin kopyasi Azure storage icerisinde tutulur. Sizin ek bir yapilandirma gerceklestirmenize gerek kalmadan portal uzerinden 5 dakika oncesine kadar otomatik alinmis yedekleri geri dondurebilme sansiniz bulunuyor.

Bunun disinda Azure SQL uzerinde is surekliligini saglamak icin ek bir ozellik daha bulunuyor. Database Copy and Export.

Azure SQL uzerinde, yerel SQL sunucularinda oldugu gibi veritabani yada log yedeklemesi yapilmasi mumkun degildir. Bunun disinda copy export servisini kullanarak varolan veritabani icin .bacpac dosyasi olusturulabilir ve bu dosya Azure Storage icerisinde barindirilabilir.

Buradaki onemli nokta ne zaman Copy Export ne zaman default point-in-time kullanilmasi gerektigine karar verilmesi.

Ozetle point-in-time operasyonel olarak tum yuku uzerinizden aliyor. Ek bir ucret odemeden arka planda calisan bir servis olarak manuel olaran copy-export servisinden daha efektif oldugu soylenebilir.

Bir diger var Point-in-Time senaryosunun consistent backup olusturuyor olmasi. Export surecinde ise ne yazik ki bu islemi canli database uzerinde gerceklestiremezsiniz. Oncelikle DB nin bir kopyasini almaniz gerekmektedir.

Copy-Export’ un en buyuk avantaji ise on-premise sunuculari uzerinde restore islemine izin vermesi. Point-In-Time senaryosunda restore islemi ancak Azure SQL uzerindeki sunuculari uzerinde gerceklestirilebilir.

Just Enough Administration (JEA) – Part 2: An example

In the first part, we had a quick look at Just Enough Administration (JEA) and discussed some use cases. In this part, we are going to implement a JEA example to solve a common problem we have had for years: assigning appropriate rights to DNS admins.

I’m sure that the majority of DNS implementations in Windows environments are co-located with Active Directory domain controllers. That brings a lot of flexibility when it comes to DNS management, troubleshooting, integrated zones, and secure replication. But it’s also quite difficult to separate Active Directory and DNS management layers. In most cases, our domain administrators are also responsible for DNS. The main reason for this is that to have separate DNS admins, you need to grant “Domain Admin” rights to them.

Continue Reading…

Azure Storage Services – Security

In this part of my Azure Storage series, let me cover some important security components in Azure Storage Services that may help you build more secure applications using cloud storage.

Storage Account Key

If you have read our Azure Storage Services series to this point, you may have noticed that I used storage account keys numerous times to access data objects in the storage account context. We use storage account keys to authenticate endpoints when accessing the account.

MSDeploy.exe ile web uygulamalarinin Azure’a deploy edilmesi

Local ortamda gelistirdiginiz uygulamalarin Azure uzerinde Publish edilmesi icin birkac farkli yontem bulunuyor.

En klasik yontemden baslayalim. FTP.

Azure bir FTP server gibi hareket edebilir ve bu sayede siz de dosyalarinizi web sunucusuna FTP protokolu uzerinden gonderebilirsiniz. Bu biraz eski usul web hosting yontemlerine benziyor. Kullandiginiz FTP client ile Azure portal uzerinden edindiginiz FTP adresine istediginiz dosyalari atmaniz yeterli olacaktir.

Ancak bu yontemin temel birkac sorunu var.

  • FTP ile dosyalari yalniz transfer edebilirsiniz. Ne yazikki degisen dosyalar, farklar ayiklanamaz. Yada web.config dosyasinin icerigini desistirip production DB den test DB sine gecis yapamaz.
  • FTP her zaman secilen tum dosyalari transfer eder. DOsyalarin degisip degismedigi ile ilgilenmez. Bu yuzden her surum icin tum dosyalari Azure uzerine gondermeniz gerekir.

WebDeploy ise bu problemlerin onune gecen ve genellikle kullanilan yontemdir. Web Deploy hem client tarafinda hem sunucu tarafinda sahip oldugu komponentler sayesinde dosyalarinizin Azure uzerine senkronize olmasini saglar. Web Deploy’u hem yeni uygulamalarin publish edilmesinde hem de bir IIS sunucusunun diger bir IIS sunucusuna tasinmasi gibi senaryolarda kullanabilirsiniz.

En onemli artilarindan birisi de Visual Studio icerisinden native olarak kullanilabilmesi.

Limitasyonlara gelicek olursa en onemlisi Web Deploy’u yalnizca IIS server icin kullanabilirsiniz.

Visual Studio icerisinde WebDeploy kullanimi oldukca basit. Var olan Solution uzerine sag tiklayip Publish dedikten sonra Publish Web Wizard acmaniz yeterli.

Ardindan varolan App Service grubunuzu ve Resource Grubunuzu secmeniz yeterli.

Benzer sureci PowerShell ile de gerceklestirebilirsiniz. AzureRmResourceGroupDeployment komutu isinizi gorecektir.

Ornegin:

deploying-web-apps-with-powershell

New-AzureRmResourceGroupDeployment -TemplateUri
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-web-appgithub-
deploy/azuredeploy.json -siteName ExampleSite -hostingPlanName ExamplePlan
-siteLocation "West US" -ResourceGroupName ExampleDeployGroup

Azure uzerinde KUDU’yu denediniz mi?

Son gunlerde Azure uzerinde bulunan Azure Web App servisi ile ilgili calisiyorum. Eski Azure PaaS Cloud hizmetinin yenilenmis versiyonu olarak sunulan Azure App, ayni cati altinda ayrica Web App, Logic App, API App gibi ek servisleri barindiriyor.

Azure Web App, cok basit olarak size Azure uzerinde web uygulamalarinizi calistirabileceginiz bir PaaS hizmeti veriyor. Kendi icerisinde yedekleme, auto-scaling high availability gibi tum secenekleri otomatik olarak barindiran bu servis sayesinde VS uzerinde develop ettiginiz uygulamalarinizi saniyeler icerisinde Azure uzerinde publish edebilirsiniz.

Azure Web App ile ilgili konusulacak cok sey var. Ancak bu blogda ilginc bir ozelliginden bahsetmek istiyorum.

Azure Web App arka planda buyuk oranda open-source olan KUDU isimli bir bileseni kullaniyor. Aslinda bu bilesen Azure Web App’in en begenilen ozelliklerinden olan continuous deployment noktasinda gerekli destegi sagliyor. Bu sayede Azure Web App icerisinden GIT gibi bir source control sistemine otomatik baglanti saglayabiliyorsunuz. GIT uzerindeki repository’de bir degisiklik oldugunda Azure Web App bu degisikligi alip staging yada test slotuna deploy edebiliyor.

Bunun yaninda yeni kesfettigim bir ozellik ise, deploy ettigimiz her Azure Web App icin ayni zamanda bize ozel bir KUDU sayfamizin olmasi.

http://webappismi.scmazurewebsites.net seklinde araya scm adresini ekledigimizde KUDU arayuzune ulasabiliyorsunuz.

Burada ise sizi bir cok ilginc secenek bekliyor.

Bildiginiz gibi Azure Web Sites bir PaaS servisi. Yani sizin alt tarafta calisan altyapi ile ilgili bir bilginiz yok. Ayni zamanda yapilandirma noktasinda ancak izin verilen degisikleri yapabiliyorsunuz.

KUDU arayuzunde ise gordugunuz gibi Web App icin calistirilan sunuculara konsol yada powershell baglantisi acabilirim, environmental variable lari degistirebilirim. process explorer ile web app sunucum uzerinde calisan processleri gorebilir (ornegin iis processi) ve bunlari terminate edebilirim.

Otomatik olarak gelen bu konsol eklentisi sayesinde sinirli yapilandirma imkani bulunan Azure Web Site icin ek ozelliklere sahip olabiliyorsunuz.

Azure Storage Access Tools

Azure Storage servislerine erisim icin genis bir arac seti bulunmaktadir. Gerek developer gerek IT pro perspektifinden bakildiginda Azure Storage servislerine farkli arayuzlerden erisim ihtiyaci duyabiliriz.

Kisaca su an icin en populer olan araclari ve arayuzleri inceleyelim.

Azure PowerShell Cmdlets:

Azure PowerShell modulu icerisinde oldukca zengin bir cmdlet havuzu bulunuyor. Gerekli modulu PowerShell Gallery altindan yada direk kurulum modulu uzerinden kurabilirsiniz.

Azure PowerShell module icerisinde Blob, File, Queue ve Table hizmetleri icin cmdletler bulunmaktadir.

AzCopy

AzCopy araci Microsoft tarafindan sunulan komut satiri araclarindan bir tanesi. Genellikle Azure uzerinde veri transferinde kullanilabilir.

Storage Explorer:

En unlu araclardan bir tanesi. En guncel surumunde tum servisler ve alt komponentleri ile ilgili aksiyonlar alinabilir.

Visual Studio

Benim favori araclarimdan bir tanesi. Yalnizca storage servisleri ile ilgili degil Azure uzerindeki ozellikle PAAS servislerine entegrasyonu cok iyi seviyede.

Gerek Storage gerekse Compute icin emulatorler kullanilarak local ortamdan VS ile birlikte development gerceklestirebilirsiniz. Ayni zamanda birkac saniye icerisinde Azure SUbscription bilgisini vererek public Azure uzerindeki servislere Toolset icerisinden erisim saglayabilirsiniz.

Tek bir sag klik ile var olan aplikasyonunuzu Azure uzerinde stage yada production gibi slotlara publish edebilirsiniz.

 

Azure Load Balancing Yontemleri

Azure, highly available ve scalable uygulamalar bircok kolaylik saglamaktadir. HA bir uygulama planlanmasi icin Azure uzerinde degerlendirilmesi gereken bir cok servis buluuyor.

Ornegin her bir tier icerisinde mutlaka birden fazla instance olusturmaniz gerekli. Her bir tier’i ayri Availability Setler icerisine koymaniz gerekli ki VM leri Update Domain ve Fault Domain ler arasinda paylastirabilin.

Bunun disinda farkli instanceler ile uygulama tarafinda hizmet vereceginiz icin internetten gelen trafigin bu sunuculara yonlendirilmesi noktasinda karar vermeniz gerekiyor.

Azure uzerinde farkli sunuculara trafigin dagitilmasi icin Load Balancer bileseni kullanilabilir. Bu yazida farkli Load Balancing yontemlerinden ve teknolojilerinden kisaca bahsedecegim.

Oncelikle Load Balancer dedigimizde Azure uzerinde iki farkli LB tipip bulunuyor.

  • Azure Load Balancer
  • Internal Load Balancer

Internet uzerinden gelen trafik icin external (Azure) Load Balancer kullanmaniz gerekiyor. Ancak bu sekilde LB NIC lerine Public IP atamasi yapabilirsiniz.

Ancak ornegin Web Tier ile App Tier yada App Tier ile DB Tier arasindaki trafigi dagitmak icin herhangi bir external NIC yada IP ihtiyaciniz bulunmuyor. Bunun icin de Internal Load Balancer kullanilabilir.

Bir diger LB teknolojisi isi Application Gateway.

Biraz once bahsettigimiz geleneksel LBler aslinda Layer 4 uzerinde calisirlar ve genellikle port, protocol gibi kriterler ile yonlendirme yaparlar. Ancak kimi durumda OSI7. seviye de calisan bir LB ihtiyaciniz olabilir. Bu sayede HTTP/HTTPS paketlerinin icerigine gore veya URL path hedeflerine gore yonlendirme yapabilir hatta SSL Offloading ile sertifika sonlandirma process’ini web sunuculardan LB uzerine cekebilirsiniz.

Son olarak ise Traffic Manager dan bahsedelim. Genellikle karistirilan noktalardan birisi Traffic Manager’in LB gibi dusunulmesidir. Her ne kadar trafigi yonlendirme isini gerceklestirse de Traffic Manager asla paketleri kendi uzerine alip hedefe tasimaz.

Traffic Manager’in temel gorevi istemcilerden gelen DNS sorgusunu ilk karsilayan nokta olmak ve kendi uzerindeki latency tablosuna bakarak bu istemciyi en yakin Azure veri merkezine gondermek. Bu sayede ornegin dunya capinda bir web sitesiniz var ise, kullanicilarin sitenize eristikleri lokasyona gore Traffic Manager yonlendirme yapar.

Bu yuzden her zaman onerim better together. Load Balancer ile Traffic Manager’i ayni senaryo icerisinde kullanarak availability’yi arttirmaniz.