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:
http://abdullahkise.blogspot.com.tr/2015/01/azure-veri-hizmetleri-1-azure-yonetim_33.html
Azure storage nedir?
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:
Blob Service REST API: https://msdn.microsoft.com/en-us/library/azure/dd135733.aspx
Queue Service REST
API: https://msdn.microsoft.com/en-us/library/azure/dd179363.aspx
Table Service REST
API: https://msdn.microsoft.com/en-us/library/azure/dd179423.aspx
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:
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