Unlocking the Power of AWS S3: More Than Just Simple Storage Service 🔑

Oğuzhan Purtaş
Miuul AWS Community
11 min readFeb 26, 2024

--

AWS S3, bulut depolama dünyasının vazgeçilmez bir unsuru. Peki, bu platformun sunduğu sınırsız imkanlar arasında nasıl yol alacağınızı biliyor musunuz? Bu rehberde, AWS S3'ün temel yapı taşlarından, gelişmiş özelliklerine, CAP Teoremi’nin öneminden, veri güvenliği stratejilerine kadar her şeyi ele alacağız. 🚀

Veri depolamanın ötesine geçerek, AWS S3'ü kullanarak nasıl etkili bir statik web sitesi barındırabileceğinizi keşfedeceğiz. Farklı availability zones’un önemi, storage class seçenekleri ve maliyet optimizasyonu tüyoları ile S3 bucket’larınızı nasıl ustalıkla yöneteceğinizi öğreneceksiniz. 💼🔐

Merak etmeyin, bu yolculukta AWS’nin karmaşık dünyasını basitleştirecek ve S3'ün gücünü nasıl kilidini açacağınızı adım adım göstereceğiz. Hazırsanız, bulut depolamanın sınırlarını zorlamaya başlayalım! 🌐✨

🚀 Data Center’lar

Dijital Evrenimizin Kalbi 🏢 İnternetin can damarı olan data center’lar, web siteleri, uygulamalar ve veri tabanları gibi dijital varlıklarımızı barındıran yapı taşlarıdır. Bu teknoloji fabrikaları, sunuculardan veri depolama ünitelerine kadar kritik ekipmanları içerir, verilerimizi yüksek hızda işler ve saklar. Kısacası, modern dünyanın dijital kalbidirler.

🌍 Availability Zone’ların Gücü

AWS gibi devlerin tercihi olan “Availability Zone” (AZ) kavramı, yüksek kullanılabilirlik ve dayanıklılık vaat eder. Her AZ, coğrafi olarak izole edilmiş yedekli data center’lardan oluşur ve bağımsız bir şekilde çalışarak, her türlü arıza durumunda bile kesintisiz hizmet sunar. AWS’nin global çapta birden fazla AZ sunması, veri güvenliğini ve erişilebilirliği üst düzeye taşır.

Bu stratejik yapı sayesinde, AWS S3 gibi servisler, veri kaybı riskini en aza indirirken, sürekli ve güvenilir depolama çözümleri sunar. S3'ün arkasındaki bu güçlü altyapı, onu sadece bir depolama hizmeti olmaktan çıkarıp, dijital dünyamızın temel direklerinden biri haline getirir.

AWS S3: Bulut Depolamanın Sınırsız Dünyası 🌐✨

AWS S3 Nedir? & Region’lar 🌏🔒

Amazon S3, Google Drive gibi çalışan bir bulut depolama servisidir 🌍. İlk adım olarak, kullanıcılar “bucket” adı verilen depolama alanlarını oluştururlar 🛠️. S3 bucket’larının en ilginç yanlarından biri, bazılarının region bağımlı olmamasıdır; yani global olarak kullanılabilirler 🌐. Ancak, genellikle bir region içinde üç “availability zone” bulunur (ancak Amerika’da bu sayı dörte çıkabilir) ve bu zone’lar, verilerin farklı lokasyonlarda saklanarak olası sorunlarda korunmasını sağlar 🔒

Her bir “availability zone”, point-to-point bağlantılarıyla birbirine bağlıdır ve genellikle ülkeye özgü regionlar bulunur. Bir bucket, bize 5 TB’a kadar dosya saklama imkanı sunar; eğer dosya boyutu 5 TB’ı aşarsa, bunları 5 TB’lık parçalara ayırarak “multipart upload” yapabiliriz 📦. Ayrıca, bir miktar ücret ödeyerek transfer hızını 5 GB/s’ye kadar artırabiliriz 💨.

S3 Bucket: Kişisel Depolama Alanınız 🏰📦

Bir bucket oluşturduğumuzda, bu, belirli bir regiona bağlı olur ve Amazon’da 29 farklı region bulunmaktadır 🗺️. Dosyaların bir ülkeden diğerine transferi zaman alabilir bunu regionların dezavantajlarından sayabiliriz ve regionların farklı olması, depolama ve transfer maliyetlerinde değişikliklere yol açar 💸. Özellikle bazı regionlarda depolama daha ucuzken, network transfer ücretleri regiondan regiona değişiklik gösterir. Örneğin, Amerika’da depolama ve transfer ücretleri, Avrupa’ya göre daha ucuz olabilir bunu da regionların faydalarından sayabiliriz🌎💲. Bucket isimleri global olarak benzersizdir, yani bir kere alınmış bir isim başka bir bucket için kullanılamaz 🚫.

Maliyet ve Performans 💰⚡

Bu özellikler, S3'ü esnek, güvenli ve maliyet açısından optimize edilebilir bir object storage hizmeti haline getirir. Maliyetler, AWS Calculator (https://calculator.aws/#/) kullanılarak hesaplanabilir ve bu, özellikle büyük dosyaların saklanması ve yönetilmesi gerektiğinde önemli bir planlama aracıdır 🧮.

Bu görsel, Amazon Web Services (AWS) üzerinde bir bulut altyapısının temel bileşenlerini gösteriyor. Görselde, bir AWS bölgesi (region) içerisinde farklı availability zone’lar (AZ) ve bunların içindeki S3 bucket’larının konumlandırılmasını, ayrıca sanal özel bulut (VPC) ve elastik bulut bilişim hizmeti (EC2) örneklerinin nasıl yerleştirildiğini görebiliyoruz.

  • AZ — A, AZ — B, AZ — C: Bunlar, AWS bölgesi içindeki farklı availability zone’ları temsil ediyor. Her bir zone, veri yedekliliği ve yüksek erişilebilirlik sağlamak için birbirinden bağımsız çalışır 🔄.
  • S3 Bucket’lar: Her availability zone içinde, verilerin saklandığı S3 bucket’lar görünüyor. Bu bucket’lar, verilerin güvenli bir şekilde saklandığı ve dünya genelinde erişilebilir olduğu depolama alanlarıdır 🗄️.
  • VPC (Sanal Özel Bulut): VPC, AWS üzerinde özelleştirilmiş ağ alanı yaratmanıza olanak tanır. Kullanıcılar kendi VPC’lerini oluşturarak, kaynaklarını izole edilmiş bir ağ içinde yönetebilirler 🔒.
  • EC2 (Elastic Compute Cloud): EC2 örnekleri, VPC içerisinde yer alır ve sanal sunucular olarak hizmet verir. Bu sunucular, çeşitli iş yüklerini çalıştırmak için kullanılır 💻.

Görseldeki her bir bileşen, bulut altyapısının önemli bir parçasıdır ve birbiriyle etkileşim içinde çalışarak esnek, güvenli ve ölçeklenebilir bir ortam oluşturur. Bir sonraki yazılarımızda, VPC ve network yapılarının nasıl çalıştığını daha detaylı bir şekilde ele alacağız. Bu altyapılar, AWS’nin temel network altyapısı olarak hizmet verir ve bulut kaynaklarının etkili bir şekilde yönetilmesini sağlar 🌐.

Tam bu noktada CAP Teoremi’ne de değinmek iyi olacaktır:

CAP Teoremi, herhangi bir dağıtık sistemde üç temel prensip arasında bir denge kurulması gerektiğini vurgular: tutarlılık (consistency), erişilebilirlik (availability) ve bölüm toleransı (partition tolerance). Ancak, bu teorem, aynı anda sadece iki prensibin en iyi şekilde sağlanabileceğini belirtir. Amazon S3'ün bu teoreme kendi yaklaşımını sunduğunu görmekteyiz.

  • Tutarlılık (Consistency): Amazon S3, bir dosya yüklendiğinde ve ardından talep edildiğinde, kullanıcıya dosyanın en güncel halinin sunulacağını taahhüt eder. Eğer aynı isimde bir dosya tekrar yüklenirse, S3 otomatik olarak mevcut olanın üzerine yazar, bu da verinin güncelliğini ve tutarlılığını korur ✅.
  • Erişilebilirlik (Availability): S3, verilere sürekli ve yüksek oranda erişim sağlamayı hedefler. Bu, sistem üzerinde yapılan isteklerin büyük çoğunluğunun başarılı bir şekilde yerine getirileceği anlamına gelir 🔍.
  • Bölüm Toleransı (Partition Tolerance): S3, herhangi bir availability zone’da problem yaşansa bile, sistem genelindeki diğer bölümlerin aktif kalmasını garantiler. Böylece, sistem bölümlerden birinin başarısız olması durumunda bile işlevini sürdürmeye devam eder 🛡️.

Amazon S3, CAP Teoremi’nin sınırlarını zorlayarak üç prensibi de karşıladığını iddia eder. Ancak, bu iddia, “read after write consistency” prensibinin uygulanmasıyla bazı istisnai durumlar dışında tutarlılık kavramını genişletir. Bu, verinin yazıldıktan hemen sonra okunabileceği anlamına gelir ve bu durum, klasik tutarlılık ilkesinin bazı sınırlarını aşar 🔄.

Amazon S3'ün yaklaşımı, CAP Teoremi’nin öne sürdüğü kısıtlamaları aşmak için çaba gösterirken, temelde bu teoremin prensiplerine bağlı kalmaktadır. Bulut bilişim dünyasında, CAP Teoremi’nin bu prensipleri, servislerin nasıl tasarlandığını ve verilerimizin nasıl korunacağını anlamamız için kritik öneme sahiptir 🌐.

AWS Storage Classes 🗂️💾🔒

AWS depolama sınıflarını kullanmanın maliyeti, seçilen sınıfa ve veri erişim sıklığına göre değişir. İşte bu sınıfların özellikleri ve özellikle maliyet ve kullanım durumları açısından ne zaman tercih edilmesi gerektiği hakkında detaylı bilgiler:

Standard (Standart):

En sık kullanılan sınıf olup, milisaniyeler içinde veriye erişim imkanı sunar. Fakat bu hız ve erişilebilirlik, diğer sınıflara göre daha yüksek maliyet getirir. Standart sınıfı, “sıcak” depolama olarak adlandırılır çünkü verilere sık ve hızlı erişim gerektiğinde idealdir. Ancak, herhangi bir AWS depolama sınıfı içinde veri saklamanın maliyeti, One Zone-IA sınıfında saklamanın maliyetinin yaklaşık 2.5 katıdır 💸.

Standard-IA (Infrequent Access):

Düşük erişim sıklığı olan veriler için tasarlanmıştır ve maliyeti standart sınıfa göre daha uygun olur. Verilere hala hızlı erişim sağlanmasına rağmen, veri erişimi az olduğunda maliyeti düşürür, bu da periyodik olarak erişilen veriler için ekonomik bir çözümdür 💡.

One Zone-IA:

Bu sınıf, verileri tek bir availability zone’da saklar ve Standard-IA’ya göre daha uygun maliyetlidir. Ancak, yalnızca tek bir zone’da saklanan veriler, zone’daki problemlerden daha fazla etkilenebilir, bu yüzden daha düşük maliyet, daha yüksek risk anlamına gelir ⚖️.

Glacier ve Glacier Deep Archive:

Bu sınıflar, sık erişilmeyen verileri uzun süreli saklamak için “soğuk” depolama çözümleri sunar. Örneğin, bankalar ve büyük finansal kuruluşlar, yasal ve düzenleyici gereksinimler nedeniyle yıllarca saklamaları gereken log dosyalarını Glacier’da tutabilirler. Glacier’da veriye erişim saatler alabilir ve Glacier Deep Archive’da günler sürebilir, bu da nadiren erişilen veriler için önemli maliyet tasarrufu sağlar. Ancak, AWS’nin belirli bir süre boyunca veriyi “sıcak” katmanlarda saklama şartı vardır; örneğin, Glacier Deep Archive için minimum 180 gün saklama zorunluluğu bulunur. Bu, uzun süreli depolama için idealdir, ancak verileri erken çekmek ek maliyetlere yol açabilir 🕰️❄️.

Böylece, verilerinizi nerede ve nasıl saklayacağınızı belirlerken, maliyetin yanı sıra veri erişim sıklığınızı ve hangi tür verileri saklayacağınızı da göz önünde bulundurmalısınız. Log dosyaları gibi nadiren erişilen ancak saklanması gereken veriler için Glacier gibi soğuk depolama sınıfları, maliyeti optimize ederken gereken erişilebilirliği sağlar. Bu stratejik seçimler, özellikle büyük veri setleri ve uzun süreli depolama gereksinimleri için maliyet etkinliği açısından kritik öneme sahiptir 📊🔒.

Storage Management 🗃️⚙️

AWS’de depolama yönetimi, verileri etkin bir şekilde yönetmek ve maliyetleri optimize etmek için bir dizi araç sunar. İşte sunulan bazı temel hizmetler ve onların işlevleri:

S3 Lifecycle (Yaşam Döngüsü Yönetimi):

Bu hizmet, otomatik olarak verilerinizin yaşam döngüsünü yönetmenizi sağlar. Örneğin, belirli bir süre sonra otomatik olarak verilerinizi daha düşük maliyetli bir depolama sınıfına taşıyabilir veya eski veri versiyonlarını silmek için kurallar belirleyebilirsiniz. Eğer versiyonlama açıksa, aynı dosyayı yüklediğinizde, eski versiyonları koruyarak üzerine yazabilir ve böylece veri geçmişine sahip olabilirsiniz 🔄.

S3 Object Lock (Nesne Kilidi):

Bu özellik, belirli bir süre boyunca bir dosyanın silinmesini veya değiştirilmesini önlemek için kullanılır. Özellikle, düzenleyici gerekliliklere uygunluk veya veri koruma politikaları nedeniyle verilerin değişmez olması gerektiğinde önemlidir 🔒.

S3 Replication (Replikasyon):

Bu hizmet, yüklediğiniz bir dosyanın otomatik olarak başka bir regiona kopyalanmasını sağlar. Bu, veri yedekliliği, coğrafi olarak dağıtılmış veri erişimi veya düzenleyici uyumluluk gibi ihtiyaçlar için kullanışlıdır. Replikasyon süreci, bazen zaman alabilir ama veri bütünlüğünü ve erişilebilirliğini artırır 🌍.

S3 Batch Operations (Toplu İşlemler):

Büyük miktarda S3 nesnesi üzerinde toplu işlemler gerçekleştirmenizi sağlayan bir hizmettir. Bu hizmet, birçok nesne üzerinde metadata değişiklikleri, kopyalama işlemleri veya başka toplu eylemler gibi görevleri otomatize etmek için kullanılır 🚀.

Access Management for AWS S3 🔑🛡️

  • S3 Block Public Access: Bu, S3 bucket’larınıza yapılabilecek tüm halka açık erişimi engelleyen bir ayarlardır. Bu sayede, verilerinizin istenmeyen erişimlere karşı korunmasına yardımcı olur 🔒.
  • AWS Identity and Access Management (IAM): Kullanıcıların ve grupların AWS servislerine ve kaynaklarına erişimini kontrol etmenizi sağlayan bir yönetim sistemidir. IAM ile, hangi kullanıcının neye erişebileceğini detaylı bir şekilde belirleyebilirsiniz 🛂.
  • Bucket Policies: Bucket düzeyinde erişim izinleri tanımlamanıza olanak tanıyan JSON tabanlı politikalardır. Bu politikalarla, belirli operasyonlara kimlerin erişebileceğini kontrol edebilirsiniz 📜.
  • Amazon S3 Access Points: S3 bucket’larınıza erişimi yönetmek için kullanılan, bucket’larınız için benzersiz isimlendirilmiş ağ noktalarıdır. Bu, özellikle büyük ölçekli operasyonlarda erişim yönetimini kolaylaştırır 🔗.
  • Access Control Lists (ACLs): S3 nesnelerinizin ve bucket’larınızın kim tarafından görülebileceğini ve kullanılabileceğini belirlemenize olanak tanıyan, daha ince taneli bir izin sistemidir 📋.
  • S3 Object Ownership: Bucket içindeki nesneler üzerinde sahiplik ve bunların izinlerinin nasıl yönetileceğini belirleyen bir konfigürasyondur. Bu, veri paylaşımı senaryolarında faydalıdır 👤.
  • Access Analyzer for S3: S3 bucket’larınızın erişim düzenlerini analiz eden ve erişimi iyileştirmek için önerilerde bulunan bir hizmettir. Bu sayede, istenmeyen veya gereksiz erişim izinlerini tespit edebilirsiniz 🔎.

Uzun uzun tanımlardan sonra biraz da değer yaratalım:

Hayal edin ki kendi web sitenizi kurmak istiyorsunuz, ama karmaşık sunucu konfigürasyonları ve yüksek maliyetler sizi düşündürüyor 🤔. İşte tam da bu noktada AWS S3'ün statik web hosting özelliği devreye giriyor 🚀. Bu hizmet sayesinde, web sitenizi kolayca ve ekonomik bir şekilde yayınlamanız mümkün oluyor 💸. Peki, AWS S3 ile web sitenizi nasıl canlıya alabilirsiniz, statik hosting ve dinamik hosting tam olarak nedir? Aşağıda, AWS S3'ün gücünden faydalanarak nasıl etkileyici bir web varlığı oluşturabileceğinize dair adımlar ve ipuçları bulacaksınız 🌐✨!

Statik Hosting:

HTML, CSS ve JavaScript dosyalarınızı barındıran ve sunucu tarafında işlem yapmadan istemci tarayıcısına doğrudan ileten bir yöntemdir. AWS S3, bu tür statik dosyalar için bir depolama alanı gibi davranır ve istek yapıldığında dosyalarınızı yollar 📄🌐.

Dinamik Hosting:

Kullanıcı etkileşimine dayalı içerik üreten ve veritabanı bağlantıları gerektiren bir hosting türüdür. İçeriği sunucu tarafında gerçek zamanlı olarak oluşturur ve günceller 🔄💻.

AWS S3 ile statik web hosting kurulumu için adımlar:

Domain Bağlama: Web sitenizin erişilebilir olması için öncelikle bir domain ismi alın ve bu domaini AWS S3 bucket’ınıza bağlayın. Domain adınızın, oluşturacağınız S3 bucket adıyla aynı olması önemlidir. 🌍➡️🪣.

Bucket Oluşturma: AWS Management Console üzerinde yeni bir S3 bucket oluşturun ve bucket adını alınan domain adıyla eşleştirin. 🆕🪣.

Statik Web Hosting’i Etkinleştirme: Oluşturduğunuz bucket'ın 'Properties' bölümünden 'Static website hosting' seçeneğini aktif hale getirin. 'Index document' olarak 'index.html' belirleyin ve varsa bir 'Error document' tanımlayın⚙️🖥️.

İzinler: ‘Permissions’ bölümünden dosyalarınızı ‘make public’ seçeneğiyle halka açık hale getirin ve erişim ayarlarını etkinleştirin 🔓.

Public Access İzni: Web sitenizin herkes tarafından görülebilmesi için ‘public read’ izni verin 👀🌐.

Dosya Yükleme ve Paylaşımı: Web sitenizin dosyalarını bucket’a yükleyin, ardından dosyaların üzerine tıklayıp ‘Actions’ menüsünden ‘Make public using ACL’ seçeneğini belirleyerek herkese açık hale getirin. 🗂️🔗.

Bucket Policy: Her yüklemede dosyaları manuel olarak public yapmak yerine, ‘Bucket policies’ menüsünden bir erişim politikası oluşturarak bu işlemi otomatize edin. ‘Policy generator’ kullanarak ‘GetObject’ aksiyonunu seçin, bucket’ınızın ARN’ini girin ve sonuna ‘/*’ ekleyerek tüm dosyaları kapsayacak şekilde genişletin. Elde ettiğiniz politikayı bucket politikası bölümüne yapıştırın ve kaydedin. 📝.

HTTPS ve Güvenlik: S3, varsayılan olarak HTTP üzerinden erişim sağlar ve HTTPS için ekstra adımlar gerektirir. Cloudflare kullanarak bir CNAME kaydı oluşturabilir ve HTTPS dönüşümü yapabilirsiniz. Proxy özelliğini açık bırakarak, Cloudflare’nin HTTPS dönüşümünü yapmasına izin verin. Alternatif olarak, Amazon CloudFront hizmetini kullanarak HTTPS yapılandırması yapabilirsiniz, fakat bu hizmet ücretli olabilir. 🔒🌐.

Ve işte, adımları takip ederek artık tamamen güvenli bir bağlantıya ve düzgün görünen bir DNS adresine sahip olursunuz. S3 bucket’ınızı kullanarak oluşturduğunuz web siteniz, HTTPS üzerinden güvenli bir şekilde erişilebilir ve Cloudflare veya CloudFront gibi servisler sayesinde güvenli ve profesyonel bir görünüm kazanır. Artık web sitenizi dünyaya açmak için hazırsınız! 🌐🔒✨

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -

AWS S3 üzerinde bu yolculuğu sizlerle paylaşmak gerçekten benim için büyük bir zevkti. Başlangıçta, AWS S3'ün sadece geniş bir depolama alanı sunduğunu düşünürken, aslında ne kadar güçlü ve çeşitli özelliklere sahip olduğunu keşfetmek beni şaşırttı. Statik web hosting’den veri güvenliğine, maliyet optimizasyonundan CAP Teoremi’nin inceliklerine kadar birçok konuya değindik. Umarım bu rehber, AWS S3'ü kullanma konusunda sizlere de yeni perspektifler sunmuştur 🚀.

Bu bilgileri sizlerle paylaşırken, amacım AWS S3'ün sunduğu sınırsız olanakları keşfetmenize yardımcı olmak ve bu platformun yalnızca bir depolama hizmeti olmadığını, aynı zamanda nasıl güçlü bir web hosting aracı olabileceğini göstermekti 🌐. Kendi projelerinizde AWS S3'ün bu özelliklerinden yararlanarak neler yapabileceğinizi hayal etmenizi umuyorum 💡.

Teşekkürler 🙏

Bu rehber boyunca benimle birlikte olduğunuz ve AWS S3'ün derinliklerine dalmaya istekli olduğunuz için sizlere teşekkür etmek istiyorum. Umarım, sunulan bilgiler ve paylaşılan ipuçları, projelerinizde size yardımcı olur 🌟.

Kaynakça 📚

Ek Kaynaklar 🔍

Yolculuğumuzun sonuna gelmiş bulunuyoruz. AWS S3 ile ilgili öğrenim yolculuğunuzun burada bitmeyeceğini umuyorum 🛣️. Bulut depolama ve web hosting dünyasında keşfedecek daha çok şey var. Bir sonraki AWS tanıtım yazımda görüşmek üzere! ✨

--

--