27 Ocak 2015 Salı

Microsoft Azure - Bulutta Veri Hizmetleri - 2 (Buluta Veri Depolama - Azure Storage)

Bir önceki yazımızda Microsoft Azure dünyasına hızlıca giriş yapabilmek için bulut bilişimden, Azure hizmet modellerinden, yönetim portallerinden ve fiyatlandırmalardan bahsetmiştik. Bu yazımızda ise temel bir ifade ile bulutta konumlandırdığımız disklere, yani Azure Veri Hizmetlerinden biri olan Azure Storage’e odaklanıyor olacağız. Bir önceki yazıya şu linkten ulaşabilirsiniz:


Bulut bilişim dünyası, uygulamaların yeni senaryoları işleyebilmesi için, verilerin depolandığı ölçeklenebilir, sürekli ve yüksek erişebilirlik ihtiyaçlarına cevap veren ortamlar sunmaktadır. Microsoft Azure’un bu kapsamdaki hizmetinin adı ise “Azure Storage” dir.

‘Azure Storageler’i, basitçe buluttaki diskleriniz olarak düşünebilirsiniz. Sanal makinelerinize ait verileri(diskler), Big Data kapsamında işlenen uygulama verilerini, bulutta konumladığınız bir websiteye ait verileri, yerel sunucularınızdan aldığınız veritabanı yedeklerini veya herhangi bir dokumanı bu ‘storage’lerde tutulabilirsiniz.

İstemciler ‘Azure Storageler’e çeşitli işletim sistemleri üzerinden, .NET, Java, C++ gibi birçok programlama dilleri ve hatta sadece https/https istekleri gönderip alabilen mekanizmalar vasıtası ile dünyanın herhangi bir yerinden erişim sağlayabilirler.

Standart ödeme tipinde bir “storage account” oluşturduğunuzda Blob Storage, Table Storage, Queue Storage ve File Storage hizmetlerini kullanmaya başlayabilirsiniz.



Blob Storage:


Büyük miktarda yapısal olmayan verileri tutmak için tasarlanmış bir hizmettir. Resim, müzik, video, text, binary, veritabanı yedekleri, loglar vs. gibi birçok dosya türü birçok amaç için ‘Blob Storage’de depolanabilmektedir.

Oluşturduğumuz ‘Storage Account’ altında, yerel disklerdeki klasörlere benzetebileceğimiz ‘Container’lar yer alır. Bu ‘Container’larda çeşitli boyutlarda ve tiplerde genel olarak Blob adı verilen dosyaları depolayabiliriz. Container veya Blob sayısında bir limit yok. Ancak bir Sorage Account toplamda en fazla 500 TB olabilir.

Blob Storage yapısı şöyledir:


‘Blob’lar hiyerarşiye uygun olarak URL ile adreslenmiştir. Bloblara erişim HTTP veya HTTPS üzerinden kolaylıkla sağlanabilmektedir.

Table Storage:

Azure Table Storage büyük miktarda yapısal olan ve ilişkisel olmayan veriyi yani NoSQL verilerini depolamak için tasarlanmış bir hizmettir.

NoSQL veritabanları birkaç kategoriye ayrılır. Bu kategorilere şu linkten bir göz atabilirsiniz: http://en.wikipedia.org/wiki/NoSQL

Bu kategoriler; Document, Key/Value, Column Family ve Graph olarak isimlendirilir. Microsoft Azure Document DB hizmeti ile Document kategorisini, HBase hizmeti ile Column Family kategorisini ve Tables hizmeti ile Key/Value kategorisini desteklemektedir.

Bir Storage Account oluşturulduğunda Table Storage de aktif olur. Table Storage içerisinde veritabanlarındaki satırlara benzer şekilde Entity adı verilen kayıtlar oluşturabiliriz. ‘Entity’lerin her biri en fazla 1MB olabilir. ‘NoSQL’in doğası gereği bu entitylerin yapısı aynı olmak zorunda değildir. Bu konsept, erişimin hızlı olmasını sağlayan denormalized dizaynın oluşmasını kolaylaştırır.

Table Storage yapısı şöyledir:


Verilere .NET kütüphaneleri ve OData protocolü ile erişilebilmektedir.

Queue Storage

Azure Queue Storage büyük miktarda mesajlaşma verisini depolamak için tasarlanmış bir hizmettir. Uygulamalar arasında asenkron mesajlaşma imkânı tanır. Bir ‘Queue’de her biri en fazla 64 KB büyüklükte olan sınırsız sayıda mesaj depolanabilir.

Bir Storage Account oluşturulduğunda Queue Storage de aktif olur.

Queue Storage yapısı şöyledir:


İçerisinde mesajları barındıran her bir Queue URL yardımıyla adreslenmiştir. Mesajlara erişim HTTP veya HTTPS üzerinden kolaylıkla sağlanabilir.

File Storage:

Azure File Storage, lokalde veya bulut üzerinde koşan uygulamalar arasında paylaşılan bir depolama ortama sunulabilmesi için tasarlanmıştır. Örneğin konfigürasyon dosyalarını, logları depolamak için bu hizmeti tercih etmek isteyebilirsiniz.

İletişim için standart “Server Message Block (SMB 2.1)” protokolü kullanılmaktadır. Azure üzerindeki uygulamalar File I/O API’lar yardımıyla bu paylaşıma erişebilirler. Dolayısıyla lokalde dosya paylaşımı gerektiren bir uygulamanız varsa kodlarda çok fazla değişiklik yapmadan bu uygulamayı buluta taşıyabilirsiniz.

Bir Storage Account oluşturulduğunda File Storage aktif olur. File Storage içerisinde konumlayabileceğimiz dosyaların boyutu maksimum boyutu 1 TB olabilir. Dosyaların bir üstünde kullanılması zorunlu olmayan Directory hiyerarşisi mevcuttur. Bir üstte ise tanımlanması zorunlu olan Share hiyerarşisi bulunur. Tüm dosyalar URL yardımıyla adreslenmiştir.

File Storage yapısı şöyledir:


Azure storage account nasıl oluşturulur?


Azure Storage Account oluşturmanın birçok yöntemi var. Bunlardan birisi de Azure Management Portal’dir. Full Portal veya New Portal ile Storage Accountları kolayca oluşturabilirsiniz.

Bu portallerden bir önceki yazıda bahsetmiştik.

Storage account oluşturulurken temel olarak uygun bir isim vermeniz, iş yükünün olduğu bölgeye yakın bir lokasyonu seçmeniz ve storageinizin kopyalarının oluşturulması için replication türünü belirtmeniz yeterli.

New Portal yardımıyla:



Full Portal yardımıyla:


Kopya sayısı ve kopyaların okunmasını etkileyen üç farklı standart replication türü mevcut. “Local redundant” seçilirse aynı verimerkezinde 3 kopyanız bulunur. “Geo-Redundant” seçilirse aynı şekilde başka bir bölgede daha kopya oluşturulur. Eğer “Read-Access Geo-Redundant” seçilirse ikinci bölgedeki kopya okunabilir olarak tanımlanmış olur. Tabi ki bu seçim ödeme miktarını da etkileyecek.



Gerekli konfigürasyonu yaptıktan sonra onay verdiğimizde kısa sürede Azure Storege Account kullanılabilir hale gelecektir.

Verilerinizi Blob Storagelerde tutmak isterseniz bir Container oluşturmanız gerekir. Erişim tipini Private, Blob, Container olarak belirtebilirsiniz. Private sayesinde anonim isteklerin erişimine izin vermemiş olursunuz. Blob ile anonim isteklerin Bloblara erişimine izin verirsiniz. Container ile de anonim isteklerin hem bloblara hem de bunların listesine erişmesine izin vermiş olursunuz.

Seçiminizi portalden kolayca değiştirebilirsiniz.


Blob, Entity ve Message depolama işlemi Azure Manegement Portal üzerinde yapılamamaktadır. Ancak Azure Storage Accountlara erişim konusunda bu websitesinden çok daha fazlasına sahibiz.

Depolanan verinin erişimi ve yönetimi nasıl yapılır?


Azure Storage Account içeriğini yüklemek, görüntülemek ve yetkilendirmeyi yapabilmek çeşitli ücretsiz uygulamalar bulmak mümkün. Benim en çok kullandığım uygulama CodePlex’te yayınlanan “Azure Storage Expolorer” dır. Şu adresten indirip kullanabilirsiniz.

Daha önce şu yazımda bu uygulamanın nasıl kullanıldığından bahsetmiştim:

Özetle “Add Account” butonu ile açılan pencereye Storage Account adını ve portal üzerinden elde edebileceğiniz Storage Account Keyini girmeniz yeterli.


Sonrasında uygulama Azure Storage bağlanarak yerel diskinizmiş gibi kullanmanıza olanak tanıyacak. Ayrıca bu uygulama yardımıyla istemcilerin erişim ‘policy’lerini oluşturmak da mümkün. Böylece “Shared Access Signature” üretebilir, istemcilerin bu key yardımıyla belli zaman aralığında ve istediğiniz yetkiler (okuma, yazma, silme, listeleme) doğrultusunda erişmesini sağlayabilirsiniz.

‘Azure Storage’e bağlanmak için kullandığımız Endpoint ve Key bilgilerini Portal üzerinden kolayca elde etmek mümkün.



Storageler üzerindeki geliştirmelerinizi REST API, .NET kütüphaneleri ve powershell yardımıyla da yapabilirsiniz. Tüm erişimlerde yukarıdaki Endpoint ve Key bilgilerine ihtiyacınız olacak.

REST API:


REST API erişim özelliği sayesinde http/https isteği gönderip alabilen tüm uygulamalar ve hizmetler ile programatik erişim sağlamak mümkün olmaktadır. PUT, GET, POST gibi metotlar yardımıyla istekler göndererek Storage hizmetinden faydalanabilirsiniz.

REST API konusuna ilginiz varsa şu linklere bir göz atmanızı öneririm:



Azure PowerShell:


Bir başka yöntem olarak Azure Powershell’i tercih edebilirsiniz. Scriptler yardımıyla çalışılan güçlü ve pratik bir yöntem olduğunu söyleyebilirim. Azure PowerShell’i nasıl kuracağınıza şu adresten bir göz atabilirsiniz:

.NET Kütüphaneleri:


Ve tabi ki .NET kütüphanelerini de tercih etmeniz mümkün. Bunun için projenize “Microsoft.WindowsAzure.Storage.dll” assemblysini aşağıdaki yöntemle (NuGet) referans etmeniz gerekmektedir.


Sonrasında bir takım sınıflar kullanarak aşağıdaki formatta connection string ile Storage Accounta bağlantı kurabilir, geliştirmeyi dilediğiniz gibi yapabilirsiniz.

DefaultEndpointsProtocol=https;AccountName=account-name;AccountKey=account-key”

.NET geliştiricisi iseniz şu ‘Class Library’lere bir göz atmanızı öneririm:

Ölçeklenebilirlik, Performans, Ücret ve dahası


Performans ve ölçeklenebilirlik hakkındaki bilgiler için şu linke bir göz atabilirsiniz:

Storage hizmet kullanım bedellerine şu adresten erişebilirsiniz:

Daha fazlası için Azure hizmetleri konusunda bir hayli faydalı bilgiler sağlayan şu dokümantasyon linkini ziyaret edebilirsiniz:
http://azure.microsoft.com/en-us/documentation/services/storage/

Biraz daha derine dalmak isteyenler için:


Bu yazımızda “Azure Storage Accountları” görsel olarak “Azure Management Portal” üzerinde nasıl oluşturulabileceğini, sonrasında aktif olan Storage hizmetlerini ve bu hizmetleri yönetmek için kullanılan programatik yöntemleri ele aldık. Serinin devamında sırasıyla, veri ve analitik çözümlerle ilgili diğer hizmetlere yoğunlaşacağız.

Faydalı olması dileğiyle…


Hiç yorum yok:

Yorum Gönder