Azure Storage Nedir? Blob Storage, File Storage, Table Storage, Queue Storage.

Ufuk Aytaş
Devops Türkiye☁️ 🐧 🐳 ☸️
7 min readMar 10, 2021

--

Bir önceki makalede “Azure Functions Rest API ile Müşteri Talepleri Uygulaması” konusunu incelemiştik. Alttaki linkten ulaşabilirsiniz.

Serverless yazı dizisi.

Not: Yeni makaleler geldikçe bu bölümü güncelleyeceğim.

Haydi başlayalım…

Microsoft Azure Storage

Merhaba, bu yazıda Tablolar, Bloblar, Dosya depolama ve Queue depolama gibi farklı seçeneklere yönelik Azure’un Cloud depolama çözümü olan Azure Storage servisini inceleyeceğiz.

Azure Storage tek bir hizmet yerine çeşitli kullanım senaryolarını karşılamak için farklı hizmetlerin bir araya gelmesinden oluşmuştur. Bu durum Azure Storage’ı popüler bir servis haline getirmektedir.

Şimdi sırayla Storage servisini ve bileşenlerini inceleyelim.

Azure Storage Service Nedir?

Azure Storage(Depolama), müşterilerinin ihtiyaçlarını karşılamak için ölçeklenebilir, yüksek oranda erişilebilir, güvenli, dayanıklı ve kullanılabilirliğe dayanan modern uygulamalara yönelik bulut depolama çözümüdür.

Kullandıkça öde (Pay as you go) modeli ile ödeme esnekliği ve düşük maliyet kullanımı sağlar.

Azure Storage Microsoft’un bulut depolama hizmetidir.

Azure Depolama, veri nesneleri için yüksek düzeyde ölçeklenebilir nesne deposu (Blob Storage), bulut için dosya sistemi hizmeti (File Storage), mesajlaşma depolaması(Queue Storage) ve NoSQL deposu (Table Storage) sunar.

Azure Depolama’da resim, Ses, video, exe, log dosyaları, backup dosyaları gibi farklı formattaki dosyalarınızı saklayabilirsiniz.

Avantajları:

  • Dayanıklı ve yüksek oranda erişilebilir : Depolanan verilerin donanımsal, ve doğal felaketler gibi afet durumlarında yüksek oranda erişilebilir olmasını sağlar. Verilen yedeklenerek farklı bölgelerdeki veri merkezlerinde (Data Center) veya coğrafi bölgelerde veriler çoğaltılarak beklenmedik durumlarda yüksek oranda erişilebilirlik sağlanır.
  • Güvenli: Depolanan verilerin güvenli ve şifrelenmiş olarak tutulur. Veriler otomatik olarak şifrelenmektedir. İhtiyaca göre depolamaya erişmek için birden fazla yetkilendirme yöntemi yapılabilir.
  • Ölçeklenebilir: İhtiyaca göre kullanıcı performansını veya kesinti süresini etkilemeden depolama alanını istediği zaman ölçekleyebilir.
  • Yönetilen: Microsoft Azure kullanıcılar için donanım bakımı, güvenlik ve kritik sorunlar veya güncellemeleri sağlar.
  • Erişilebilirlik: Dosyalara dünyanın her yerinden Http ve Https üzerinden erişebilirsiniz. Microsoft farklı dillerde .Net, Java, NodeJs, Python, Php, Ruby, Go vb. sdk’ler sunar. Dilerseniz Rest API yada Powershell kullanarak Storage üzerinde işlemler yapabilirsiniz.

Azure Storage Servisleri

Blob Storage (Binary Large Objects)

source: www.codeproject.com

Azure Blob Storage resim, video, exe, text gibi farklı veri tiplerini depolamak için geliştirilmiş bir depolama çözümüdür. Blob depolama, büyük miktarda yapılandırılmamış veriyi depolamak için optimize edilmiştir.

Blob’lara Http ve Https protokolleri ile erişilebilir.

Statik web sitelerini ve SPA uygulamalarınızı depolayabilir ve yayınlayabilirsiniz.

Kullanım Alanları

  • Görüntülerin veya belgelerin doğrudan bir tarayıcıya sunulması.
  • Dağıtılan erişim için dosyaların depolanması.
  • Video ve ses akışları.
  • Günlük dosyalarına yazma.
  • Yedekleme ve geri yükleme, olağanüstü durum kurtarma ve arşivleme için verilerin depolanması.
  • Şirket içi veya Azure’da barındırılan bir hizmetle analiz için verilerin depolanması.

Blob depolama üç farklı kaynaktan oluşur. Bunlar;

source: docs.microsoft.com

Storage Account : Veriler için Azure’da benzersiz bir ad alanı sağlar. Depolanan veriler için benzersiz bir adres oluşturmamızı sağlar.

Örnek : http://{AccountName}.blob.core.windows.net

Container: Dosya sistemlerindeki dizin yapısına benzer ve blob kümelerini düzenler. Container’lara isim verirken küçük harf ile oluşturmamız gerekmektedir.

Container oluştururken sizden Access Level seçmenizi ister Private, Blob ve Container bazında erişim izni tanımlayabilirsiniz.

Blob: Azure Storage üç farklı blob tipini destekler. Bunlar;

  • Blok Blobları Görüntü, günlük dosyaları, metin gibi nesneleri depolamak için kullanılan blob’lardır. 5TB’a kadar olan veriler ile 100mb’a kadar olan 50.000 blob’u depolayabilir.
  • Sayfa Blobları: Rastgele okuma ve yazma işlemleri için optimize edilmiştir. 8TB’a kadar büyüyebilir. Standart ve Premium olarak 2 tür depolama sunar. Sayfa Blobları, sanal sabit sürücü (VHD) dosyalarını depolar ve Azure sanal makineleri için disk olarak görev yapar.
  • Ekleme Blobları: Günlük depolama gibi senaryolar eklemek için optimize edilmiş, ekleme blobları, maksimum 4MB’ye kadar farklı boyutlarda bloklardan oluşur. Her ekleme blob’u 50.000 bloğa kadar tutabilir. Ekleme blob’ları sanal makine verilerini günlüğe kaydetme gibi senaryolar için idealdir.

File Storage

source: codementor.io

Azure File Storage Cloud tabanlı tam olarak yönetilebilen bir ağ dosya paylaşımı sunar. Bu durum birden fazla VM’in hem okuma hem de yazma erişimi ile eşzamanlı olarak bağlanabilmelerini sağlar. Dosyaları REST API üzerinden ya da farklı diller için hazırlanmış sdk’lar ile okuyabilirsiniz.

Sunucu Mesaj Bloğu SMB(Server Message Block) protokolünü kullanır.

SMB protokolü bir ağdaki dosyalara, yazıcılara, seri bağlantı noktalarına ve diğer kaynaklara erişimi paylaşmak için kullanılan bir istemci-sunucu iletişim protokolüdür.

Her bir dosya için benzersiz bir URL oluşturulur. Dosyalar paylaşılan erişim imzası (SAS) belirteci ile oluşturulur. SAS belirteci, belirli haklarla ve belirli bir süre boyunca tanımı yapılarak Azure portalından oluşturulabilir. Zaman periyodu yapılandırılabilir, böylece kullanıcı ihtiyacına ve güvenliğe tanımlar yapılabilir.

SAS Configuration

Azure File Storage Kavramları;

  • Storage Account: Depolanan veriler için benzersiz bir adres ve yönetilmesini sağlar.
  • Share: Dizinlerin ve dosyaların depolandığı bir SMB dosyası paylaşımı. Hesaplar sınırsız sayıda paylaşım ve her paylaşım sınırsız sayıda dosya içerebilir.
  • Directory: İsteğe bağlı bir dizin hiyerarşisi
  • Url Format: dosya paylaşım talepleri REST protokolünü kullanır: https://{AccountName}.file.core.windows.net/{share}/{directory}/{file}

Queue Storage

source: docs.microsoft.com

Azure Queue Storage en basit tanımı ile mesaj kuyruk sistemidir. Bir kaynaktan alınan mesajın kuyruğa atılarak bir alıcı tarafından gönderilen mesajın kuyruktan okunması işlemidir.

Aşağıdaki URL biçimi kullanılarak adreslenebilir:
https://{AccountName}.queue.core.windows.net /{queue}

  • Azure Queue Storage çok sayıda mesajı depolamak için kullanılır.
  • REST tabanlı GET/ PUT/PEEK arabirimine sahiptir.
  • Depolama hesabının toplam kapasite sınırına kadar milyonlarca mesaj içerebilir.
  • Tek bir kuyruk mesajı 64 KB boyutunda olabilir.
  • Mesajların belirli bir sıraya göre işlenmesi garanti edilmez. (FIFO geçerli değil).
  • Abonelik sistemi (Subscribe) desteklemez. Her mesajın sadece bir alıcısı olabilir.
  • Bir Mesaj kuyrukta maksimum yedi gün süre ile kalabilir. Süre sonunda mesaj otomatik olarak silinir.

Azure Queue Storage Kavramları;

  • Queue: Mesajların gönderildiği ve tutulduğu yapılardır.
  • Message: Herhangi bir formatta bir mesaj gönderilebilir.

Azure’da mesajlaşma üzerine çalışacaksanız Azure’un farklı servislerinide incelemenizi tavsiye ederim. Bunlar;
Azure Service Bus, Azure Event Hubs, Azure Event Grid

Daha önce incelemiş olduğum Azure Servis Bus yazısını okumadıysanız alttaki linkten ulaşabilirisiniz.

Azure Service Bus ve Queue Storage karşılaştırması.

Table Storage

source: https://docs.microsoft.com/

Azure Table Storage büyük miktarda yapılandırılmış ilişkisel olmayan verilerin depolamak için kullanılan Cloud Tabanlı bir NoSQL hizmettir. Şemasız tasarımı sayesinde uygulamanızın ihtiyaçları değiştikçe verilerinizi uyarlamak kolaydır.

Table oluşturduğunuzda sistem tarafında 3 özellik otomatik oluşturulur. Bunlar PartitionKey, RowKey ve Timestamp’dır. TimeStamp sistem tarafından otomatik oluşturulur fakat tabloya veri eklerken PartitionKey ve RowKey’i belirtmeniz gerekecektir.

Ayrıca depolama hizmeti uygun maliyetli ve ayrıca tablolardan veri okurken ve yazarken düşük gecikme süresine sahiptir

SQL veritabanı depolamasına kıyasla, aynı veri hacmi için maliyeti çok düşüktür.

Azure Table Storage Kavramları;

  • Table: Tablo entity lerin tutulduğu bir koleksiyondur. Tablolar şemasız olarak oluşurlar.
  • Url Format: Aşağıdaki Url biçiminde adreslenir.
    https: // {AccountName} .table.core.windows.net / {table}
  • Entity: Veritabanındaki satırlara karşılık gelir. Belirli özelliklerin birleşmesi ile oluşur. Boyutu 1 MB’a kadar olabilir.
  • Properties: Verilerin Key/Value şeklinde depolanmasını sağlar. Verilerin depolanması için en fazla 256 özellik tanımlanabilir.

Azure Table Storage kullanarak oluşturduğum örnek uygulamayı aşağıdaki linkten inceleyebilirsiniz.

Azure Storage için kullanılabilecek araçlar

Azure Storage Explorer

Storage Account’u yönetebilmeniz için Windows, Mac ve Linux platformlarında kullanılabilen bir istemci uygulamasıdır. Bazı yaygın blob işlemleri, içerik oluşturma, ve diğer bileşenleri uygulama üzerinden yönetebilirsiniz.

Aşağıdaki linkten indirebilirsiniz.

Azure Storage Emulator

Önceki makalelerde Azure Storage Emulator den bahsetmiştim. Azure Functions geliştirirken local ortamda Storage Account için emulator kullanıyorum. Dilerseniz sizde bilgisayarınıza emulator kurarak Storage Account ile çalışmalarınızı local ortamda yapabilirsiniz. Bu sayede her defasında Storage Account oluşturmanıza gerek kalmaz.

Aşağıdaki linkten indirebilirsiniz.

AzCopy
Verileri depolama hesabınıza kopyalamak için kullanımı kolay mükemmel bir komut satırı aracı. Windows, Mac ve Linux platformları için mevcuttur.

Aşağıdaki linkten indirebilirsiniz.

Sonuç

Azure Storage ölçeklenebilir, yüksek oranda erişilebilir, güvenli, dayanıklı ve kullanılabilirliğe dayanan modern uygulamalara yönelik bulut depolama çözümüdür.

Azure Storage’ın Tablolar, Bloblar, Dosya depolama ve Queue depolama gibi birden fazla hizmeti barındırıyor olması veri depolanması için kullanışlı bir servis haline getiriyor.

Azure Storage saydığımız özelliklerin yanında Data Migration, Static Web Sitelerinin host edilmesi, Custom Domain tanımlama, Verilerin korunması (Data Protection), Verilerin CDN olarak kullanılması ve Veriler için belirli kurallar(Rule) ile yaşam döngüleri oluşturma gibi daha bir çok özelliği barındırmaktadır.

Bir sonraki makalede görüşmek üzere…

Sorularınız için lütfen yorum yapmaktan ve bana ulaşmaktan çekinmeyin.

Twitter: https://twitter.com/ufukaytas
Linkedin: https://www.linkedin.com/in/ufukaytass/
Github: https://github.com/ufukaytas/

--

--

Ufuk Aytaş
Devops Türkiye☁️ 🐧 🐳 ☸️

Software Architect & Developer @CorendonDutchAirlines, Husband, Dad, Fishing, Coffee addict :) #Serverless #Cloud, #Azure, #Dotnet