Dosya (“File”) ve Blok (“Block”) tabanlı depolama birimlerinin kullanım alanları çok iyi tanımlanmış olduğu gibi, bu depolama birimleri kendilerine çok geniş kullanım alanları da bulmuştur ve hala bu depolama birimleri yoğun şekilde uygun iş yükleri için kullanılmaktadırlar. Günümüzde, IT dünyasına yeni bir depolama birimi çeşidide girmiş durumdadır. Nesne tabanlı depolama birimleri olarak adlandırılan bu yeni yapılar akla pek çok soruyu da beraberinde getirmiştir. Acaba diğer depolama birimlerinden farkları nedir? Hangi durumlarda (hangi uygulamalarla) kullanımları daha etkin ve performanslı sonuçlar vermektedir? IT alt-yapısına bu depolama birimleri hangi amaç ile nasıl entegre edilebilir? Ne tür problemleri çözmek için geliştirilmişlerdir? Dezavantajları ve limitasyonları var mıdır? Bu yeni depolama birimi teknolojisinin avantajlarından fayda sağlamak için nelerin yeniden tasarlanması gerekir?

Öncelikle, nesne tabanlı depolama birimlerini daha kolay tanımlayabilmek için dosya ve blok tabanlı iki geleneksel depolama birimi teknolojilerini tekrar hatırlayalım. Blok tabanlı depolama birimlerinde veriler bloklar şeklinde “sector” ve “track” yapıları içerisinde yönetilirler. Dosya ve blok tabanlı geleneksel yapılar, veriyi hiyerarşik bir düzende, ağaç yapısına benzer bir dizin yapısında tutar. Dosya sayısı ve kullanıcı sayısı arttıkça, ağaç yapısının getirdiği karmaşıklıkla birlikte dizin sayısı da artar. Bu durumun bir sonucu olarak, özel bir dosyanın lokasyonunu belirleme süresi de uzar. Dosya sistemi, dosya ve dizin sayısındaki limitasyonlara takılır. Blok yapılar, SAN yapılar tarafından kullanılır. SAN yapılar sunuculara SCSI, iSCSI veya “Fibe Channel” protokolleri ile bağlanırlar. Blok tabanlı depolama birimlerine “volume” yapılar olarak işletim sistemi tarafından doğrudan ulaşıldığı için pek çok kullanım alanları vardır. Örneğin yapısal veritabanları, random read/write işlemleri, sanal sunucuların işletim sistemleri için bu sistemler ideal yapılardır.

Dosya tabanlı depolama birimleri genellikle iki farklı şekilde tanımlanırlar: Dosya (“File”) sunucular, NAS yapıları. NAS’ı dosya sunma işlevini yerine getiren bir “appliance” olarak düşünebiliriz. “Appliance” ı yazılımı ve donanımın en etkin performansı ve çözümü üretmek için birlikte tasarlandığı bir cihaz olarak düşünebiliriz. Sistemler arasında dosya paylaşımları için, standart dosya paylaşım protokollerini içerirler: NFS ve CIFS (SMB). Bu sdandart dosya sistemlerinde, metadata, dosyanın kendisinden bağımsız olarak tutulur ve temel dosya özelliklerini kayıt altına alır. Örneğin dosya ismi, dosya büyüklüğü, dosyanın oluşturulma tarihi gibi.

Nesne-tabanlı depolama birimi, nesnelerin ne şekilde organize olacağının ve çalışacağının yöntemini tanımlayan genel bir terimdir. Her nesne üç bileşen içerir: datanın kendisi, metadata ve global olarak tek tanımlanan bir tanımlayıcı (“globally uniq identifier”). Veri, depolamak istenen herhangi bir şey olabilir. Bir aile fotoğrafı olacağı gibi bir uçağın tasarımını anlatan 40.000 sayfalık bir dökümanda olabilir. metadata, verinin ne olduğunu, ne amaçla kullanıldığını veya verinin kullanım alanıyla ilişkili herhangi bir şeyi ifade eden içeriksel bilgi içerir. İstenildiği gibi özelleştirilebilir. “Uniq identifier” ise, dağıtık dosya sisteminde nesneyi bulmaya imkan sağlayan bir adres olarak tanımlanır. Bu sayede, veri dünyanın farklı köşelerinde, farklı veri merkezlerinde de olsa verinin fiziksel lokasyonunu bilmeden, verinin bulunmasını sağlar. Nesne tabanlı depolama birimlerinde, dosya bloklara bölünmez. Bunu yerine veri, bir bütün olarak saklanır. Yani bir nesne, veri, metadata ve “unique identifier” ile bir bütün olarak var olur. Metadata miktarında veya dosya türü çeşidinde bir limitasyon yoktur. Bu özellikte, nesne-tabanlı depolama birimlerini güçlü ve özelleştirilebilir yapmaktadır. Nesne tabanlı depolama birimlerinin diğer bir karakteristiği de bu nesnelere HTTP tabanlı REST uygulama programlama arabirimleriyle ulaşılmasıdır. Bunlar, “get”, “put”, “delete” gibi temel çağrılardan (“call”) oluşur. Bu basitlik elbette avantaj sağlayacağı gibi, uygulamalarda da bazı değişiklikler yapılmasını gerekli kılabilmektedir. Çünkü genelde uygulamalar, SCSI, CIFS veya NFS çağrılarını kullanacak şekilde yazılmışlardır. Nesne tabanlı depolama birimlerinin yönetimi kolay olmakla beraber ölçeklenebilir bir yapıya sahip olmalarının yanı sıra tek bir “namespace” de coğrafik sınırları ortadan kaldırır ve tonlarca metadatayı taşıyabilir.

Metadata herhangi bir bilgiyi içerebilir. Verinin güvenlik sınıfıyla ilgili bilgi içerebileceği gibi, uygulamanın önem derecesiyle ilgili bilgi de içerebilir. Facebook’ta bir resim veya Spotify’da bir şarkı depolayan birisi arka tarafta nesne tabanlı bir depolama birimi kullanmaktadır. Amazon, S3 ile birlikte, Microsoft Azure Blob Storage, nesne tabanlı depolama birimleri kullanmaktadır. Nesne tabanlı depolama birimleri, özellikle büyüyen veri sonrası oluşan problemleri çözmeye odaklı olarak tasarlanmışlardır. Veri miktarı arttıkça, depolama sistemlerinin de aynı oranda büyümesi gerekmektedir. Blok tabanlı yapıları petabyte’lar ve yukarısı boyutlarına büyütmek gerektiğinde bazı sorunlarla karşılaşılabilmektedir. Depolama alt-yapısıyla ilgili hard limitasyonlar, yönetimsel sıkıntılar, veriye erişimin sürekliliğinin sağlanması gibi zorluklar karşımıza çıkabilmektedir. Nesne tabanlı depolama birimleri, “scaled-out” yapılardır ve yapıya ek “node” lar eklenerek kolayca genişleyebilirler. “Namespace” in düz (“flat”) bir yapıda olması, metadatanın genişleyebilir olması, nesne tabanlı depolama birimlerinin kullanım kolaylığını artırmaktadır. Nesneler, verinin dağıtık sistemler üzerinde birden fazla kopyasının tutulması yöntemi ile korunurlar. Bir veya birden fazla “node”, hata verse bile veriye hala ulaşılabilir. Çoğu kullanım alanında her dosyanın en az üç kopyası tutulur. Yüksek erişebilirlik için bu dağıtık depolama birimi tasarımı, daha ucuz geleneksel donanımlar kullanılarakta yapılabilmektedir. Bu yapıda, veri koruması, donanımın sağlamlığından çok, nesne mimarisi içerisine gömülen akıl ile yapıldığı için daha ucuz donanımların kullanılması sorun teşkil etmeyebilir.

Nesne-tabanlı depolama birimlerinin, IT bölümlerine büyük değer sağlayacağı muhakkaktır. Organizasyonlar daha ucuz donanımlarla bu yapıyı kurgulayabilecekleri için maliyet avantajı yakalayacaklardır. Kolayca ölçeklenebilir bir mimariyi de sunduğu için yönetim kolaylığını beraberinde getireceği aşikardır. Buna rağmen, nesne tabanlı depolama birimleri, tüm depolama birimi problemlerine cevap üretemez. Bazı durumlarda ihtiyaçlarınıza blok tabanlı depolama birimleri daha iyi çözüm sunabilir. Hangi mimarinin, hangi ihtiyaçlarınıza daha uygun çözümü sağlayacağının analizini iyi yapmanız gerekmektedir. İhtiyacınız olan yapı acaba “eventually consistent” bir yapı mı yoksa “strong consistency” bir yapı mı? Nesne tabanlı yapılar, “eventually consistent” bir yapı sunarken, blok tabanlı yapılar “strongly consistent” bir yapı sunarlar. “Eventual consistency” yapılar, sanal olarak sınırsız ölçeklenebilir bir yapı sunarlar ve verinin yüksek erişilebilir olmasını sağlarlar. Ama verinin fazla değişmeyen, mümkünse hiç değişmeyen statik bir veri türünde olmasını bu yapılar tercih eder. Bu nedenle, daha çok fotoğraf, video ve yapısal olmayan verilerin kullanımı için uygundurlar. “Strong consistency” yapılar ise gerçek-zamanlı işlem gerektiren ihtiyaçlar için uygundur. Örneğin “transactional” veritabanları bu yapılar için uygun adaylardır. Aslında nesne tabanlı depolama birimleri, özellikle verinin çok sık değişmediği ama okunduğu yapısal olmayan veri setleri için çok iyi çalışır. Statik web içerikleri, veri yedekleri, arşiv imajlar, multimedya (video, resim, müzik dosyaları) için ideal depolama birimleridir. Nesne tabanlı depolama birimleri üzerinde bir vertabanı kullanılacaksa, yapısal olmaması, çok fazla yazma ve güncelleme işlemlerinin yapılmaması gerekir. Elbette bu yeni depolama biriminin NAS dosya erişimi ve paylaşımının da yerini alacağı düşünülmemelidir. Herbirinin farklı ihtiyaçlara göre kullanım alanları mevcuttur. Web tabanlı Facebook ve Google gibi firmalar, değişen ihtiyaçlara göre blok ve dosya tabanlı depolama birimlerinin yerine nesne tabanlı depolama birimleri kullanmaktadır. Elbette bu firmalar yalnız değildir. Bulut depolama çözümleri sağlayıcılar, bu teknolojiye en kolay adaptasyon sağlayacak yapılardır.

Nesne tabanlı depolama birimlerinin, geleneksel blok ve dosya tabanlı depolama birimlerinden farklı olduklarını belirtimiştik. Nesne tabanlı yapılar nerdeyse sonsuz ölçeklenebilir bir yapıda tasarlanmışlardır. Bu depolama birimleri, bilgiyi, esnek büyüklüklere sahip konteynerler içerisinde organize ederler. Her nesnenin, verinin kendisi, kendisiyle ilişkili metadata ve “unique identifier” ile mevcut olduğunu ifade etmiştik. Bu “unique identifier”, hiyerarşik olmayan düz bir yapıda tutulurlar. Bu şekilde kompleks dosya adresleri temeline dayalı hiyerarşik dosya sisteminin getirdiği darboğazları ortadan kaldırır. Nesne tabanlı dosya sistemlerinin Restful/HTTP protokollerini kullandığını tekrar hatırlatalım. Bu protokoller, internet üzerinden zaten kullanıldıkları için, nesne tabanlı sistemler, web 2.0, cloud-native ve XaaS kullanımları için çok uygundur. Günümüzde, bulutun yaygınlaşması, mobil uygulamalarındaki artan çeşitlilik ve mobil uygulamalarının yaygınlaşması nedeniyle bu servislere erişim için HTTP protokolü kullanılmaktadır. Bazı üretici firmalar geliştirdikleri nesne tabanlı sistemlere, NFS ve CIFS desteklerini de eklemişlerdir. Ek olarak bazı nesne tabanlı sistemler, HTTP tabanlı iki önemli protokolüde desteklemektedir: Amazon Web Services Simple Storage Service API (S3 olarak bilinir ve artık de-facto standartı olmuş durumdadır) ve CMDI (“Cloud Data Management Interface”). RAID yapısının veri koruması için kullanılan klasik bir yöntem olduğunu biliyoruz. Buna rağmen, sistemler büyüdükçe, coğrafik olarak dağıtık bir yapıya evrildikçe, RAID yapıları pek çok darboğazı beraberinde getirmektedir. Nesne tabanlı disk birimleri yedekliliği ve yüksek erişebilirliği iki farklı yöntemle sağlamaktadır: replikasyon ve “erasure coding”. Replikasyon teknolojisinde, her nesnenin birden fazla kopyası farklı “node” lar üzerinde tutulur. Bu kopyalar, farklı coğrafik veri merkezlerinde konumlanırlar. Bu yöntem çok sayıdaki ufak boyutlu dosyaları korumak için uygun bir yöntemdir. Büyük dosyalar ise, “erasure coding” denilen bir teknoloij ile korunurlar. Bu teknoloji, nesneyi parçalara böler ve birden fazla pariti hesaplar. Orijinal dosyada bir sorun olması veya bazı parçalarının kaybolması durumunda, sistem orijinal datayı yeniden inşa etmek için paritileri ve kalan parçaları kullanır.

Nesne tabanlı depolama birimi çözümleri elbette dağıtık bir mimaride tasarlanmıştır. Sorumluluklar bu sistemler arasında paylaştırılmıştır. Bu nedenle “Single-Point-of-Failure” bu yapıda yoktur. Sunucular arasında herhangi bir disk, bellek paylaşımı yoktur. Sunucular birbirine bağlı olmadığı için, yapıya çok kolay eklenebilir ve yapıdan çok kolay çıkarılabilir. Üretici firmaların nesne tabanlı depolama birimlerine yaklaşımları nasıl? EMC Atmos ürünü, nesne tabanlı depolama birimi ihtiyaçları için geliştirilmiştir. EMC, Isilon ürünü, Centera ve viPR ile de nesne tabanlı depolama birimi çözümleri sunmaktadır. Hitachi Data Systems’in Hitachi Content Platform (HCP), public ve private bulut sağlayıcıları için dağıtık ve nesne tabanlı depolama birimi olarak geliştirilmiştir. HP’nin StoreAll 9320 ve 9730 depolama sistemleri yapısal olmayan verilerin depolanması ve bu verilere erişimin sağlanması için geliştirilmiştir. IBM’in Elastic Storage ve SoftLayer ürünleri nesne-tabanlı depolama birimi gerektiren ihtiyaçlar için tasarlanmıştır. NetApp, E-serisi depolama birimleriyle nesne tabanlı erişim gerektiren ihtiyaçları karşılamayı hedeflemiştir. Nesne tabanlı çözümler, geleneksel ucuz x86 donanımlarda çalışacak şekilde tasarlanmıştır. Her bir sunucu bir “node” yerine geçer. Bu sunucular hem hesaplama gücünü hem de depolama kaynaklarını sağlar. Bu mimari, kapasite ve performans anlamında doğrusal bir ölçeklendirmeyi (“scaled –out”) beraberinde getirir. Çünkü bu yapıyı, ek “node” lar ekleyerek hem hesaplama hem de depolama gücü olarak büyütebilirsiniz. Yukarda saydığımı pek çok üretici firma, nesne tabanlı depolama birimlerini bir “appliance” olarak satmakla birlikte, nesne tabanlı depolama mimarisi yazılım tabanlıdır ve genel olarak bir donanım bağımlılığı yoktur. Yazılım çözümü olarak, Red Hat’in Swift ürünü, nesne-tabanlı depolama birimi yapısı sunmaktadır.

Özet olarak, nesne tabanlı depolama birimleri, bulut yapısının gelişmesi ve büyüyen data boyutu ve data çeşitliliği nedeniyle, geleneksel yöntemlerin ihtiyaçları çözemediği durumlarda kullanım için tasarlanmışlardır. Ne tür bir depolama biriminin hangi ihtiyacınızı karşılayacağının analizini çok iyi yapmanız ve doğru iş yükleri için doğru depolama birimlerini konumlandırmanız gerekmektedir. Yeni yapılar, geleneksel yapıların yerini almak yerine, gelişen IT dünyasında ortaya yeni çıkan problemleri adreslemek için geliştirilmekte ve uyumluluk için de bazı üretici firmalar geleneksel protokolleri bu yapıların içerisine entegre etmektedir.

Asiye Yiğit 31 Temmuz 2016