Son birkaç yılda modern frontend framework’ler, statik site jeneratörleri ve CDN’ler sayesinde web uygulaması mimarisi ciddi şekilde değişti. Artık her küçük proje için mutlaka bir web sunucusu, PHP/FPM veya Node.js arka planı kurmak zorunda değilsiniz. Birçok senaryoda; derlenmiş HTML, CSS, JS ve medya dosyalarını Object Storage üzerinde tutup, bu depoyu doğrudan web site origin’i olarak kullanmak mümkün. Üstüne bir de CDN katmanı eklediğinizde, son derece hızlı, ucuz, bakım maliyeti düşük ve otomatik ölçeklenen bir mimari elde ediyorsunuz.
Bu yazıda DCHost ekibi olarak, S3 API uyumlu Object Storage çözümlerini ve MinIO’yu kullanarak tamamen statik bir hosting altyapısını nasıl kurabileceğinizi adım adım anlatacağız. Hedefimiz; “VPS’e gerçekten ihtiyacım var mı?” sorusunu daha net yanıtlayabilmeniz, hangi projede sadece Object Storage + CDN ile ilerleyebileceğinizi görebilmeniz ve doğru yerde doğru bileşeni kullanmanız. Özellikle dokümantasyon siteleri, landing page’ler, SPA uygulamaları ve statik blog’lar için bu yaklaşım, klasik paylaşımlı hosting veya VPS’e göre ciddi basitlik ve maliyet avantajı sağlayabiliyor.
İçindekiler
- 1 Object Storage’ı Origin Yapmak Ne Anlama Geliyor?
- 2 Hangi Projelerde Tamamen Statik Mimari Mantıklı?
- 3 Mimari Bileşenler: S3 API, MinIO, CDN ve DNS
- 4 Adım Adım: Object Storage + CDN ile Statik Site Yayına Alma
- 5 MinIO ile Kendi S3-Uyumlu Origin’inizi Kurmak
- 6 Güvenlik, HTTPS ve Origin Korumaya Dikkat
- 7 Maliyet, Performans ve Ölçeklenebilirlik Dengesi
- 8 Object Storage + CDN + (Opsiyonel) Uygulama Sunucusu: Hibrit Senaryolar
- 9 DCHost Altyapısında Tipik Uygulama Örnekleri
- 10 Sonuç ve Yol Haritası
Object Storage’ı Origin Yapmak Ne Anlama Geliyor?
Geleneksel mimaride tarayıcı, DNS üzerinden web sunucunuza gider; Nginx/Apache gibi bir web sunucusu istekleri karşılar, gerekirse PHP veya başka bir runtime’a yönlendirir ve dosyaları diskinizden okuyarak cevaplar. Yani origin dediğimiz kaynak sunucu, tipik olarak bir VPS veya dedicated sunucudur.
Object Storage tabanlı mimaride ise tablo değişir:
- Statik site çıktınız (HTML, CSS, JS, görseller, fontlar vb.) bir bucket içine yüklenir.
- Bucket, HTTP(S) ile okunabilir hale getirilir ve web site origin’i gibi davranır.
- CDN, origin olarak bu bucket endpoint’ini kullanır.
- Tarayıcı, DNS üzerinden CDN’e gider; CDN de gerektikçe Object Storage’dan dosyayı çekip önbelleğe alır.
Bu modelde ortada PHP, Node.js, .NET gibi sunucu taraflı bir uygulama yoktur; sadece statik dosyalar vardır. Sunucu taraflı render, API veya veritabanı gerekiyorsa, bunlar ayrı bir mimaride (örneğin DCHost VPS üzerinde) çalışır; Object Storage ise yalnızca frontend’in statik dosyalarını servis eder.
Object Storage, klasik disk yapısından farklı çalıştığı için bu yaklaşıma geçmeden önce temel farkları bilmek önemli. Konuya yeniyseniz, Object Storage ile Block/File Storage arasındaki farkları anlattığımız detaylı rehber başlangıç için iyi bir zemin sağlayacaktır.
Hangi Projelerde Tamamen Statik Mimari Mantıklı?
Önce şu soruyu netleştirelim: “Her şeyi Object Storage’a atıp tüm siteleri oradan mı yayınlayalım?” Cevap hayır. Ama doğru projede, doğru kurguyla kullanıldığında çok güçlü bir araç.
Genel olarak şu tür projelerde Object Storage’ı doğrudan origin yapmak mantıklıdır:
- Statik site jeneratörü ile üretilen siteler (Hugo, Jekyll, Next.js/NUXT statik export, vb.)
- SPA (Single Page Application) yapılar (React, Vue, Angular gibi), API’yi ayrı bir domain/subdomain’den tüketiyorsa
- Ürün tanıtım sayfaları, kampanya/landing page’ler
- Dokümantasyon siteleri, bilgi tabanları, yardım merkezleri
- Kurumsal şirket sitelerinin “hareketsiz” kısımları (hakkımızda, iletişim, KVKK sayfaları vb.)
Aşağıdaki durumlarda ise tamamen statik bir mimari yerine, en azından bir uygulama sunucusunu devreye almak gerekir:
- WooCommerce, Magento gibi güçlü bir e-ticaret altyapısı kullanıyorsanız
- Giriş/üyelik, dinamik sepet, ödeme akışları gibi stateful süreçler varsa
- Sunucu taraflı render (SSR) ihtiyacı kritik ise (SEO, kişiselleştirme vb.)
Bu senaryolarda bile statik varlıklar (CSS, JS, görseller, video vb.) Object Storage’a taşınıp sadece dinamik kısmın DCHost VPS veya dedicated sunucu üzerinde kalması; hem maliyet hem de performans açısından oldukça etkili bir hibrit çözümdür. Bu karma yapıyı daha önce medya dosyalarını Object Storage’a offload etme stratejisini anlattığımız makalede ayrıntılı işlemiştik.
Mimari Bileşenler: S3 API, MinIO, CDN ve DNS
Object Storage’ı web site origin’i haline getiren bileşenleri netleştirelim.
S3 API Uyumlu Object Storage
Bugün piyasadaki pek çok Object Storage çözümü, fiili standart haline gelen S3 API ile uyumlu. Bu size şu avantajları sağlar:
- CLI, SDK ve üçüncü parti araçların (rclone, restic, statik site deployment araçları vb.) aynı API ile çalışması
- Farklı sağlayıcılar veya kendi kurduğunuz MinIO arasında nispeten kolay geçiş
- Versiyonlama, lifecycle policy, bucket policy gibi gelişmiş özelliklerin tanıdık bir modelle yönetilmesi
İster DCHost altyapısında sunulan Object Storage’ı, ister kendi VPS’inizde kurduğunuz MinIO’yu kullanın; S3 uyumluluğu sayesinde deployment araçlarınız değişmeden kalır.
MinIO ile Kendi S3-Uyumlu Depolamanız
MinIO, S3 uyumlu, hafif ama üretim için fazlasıyla yeterli bir Object Storage yazılımı. DCHost üzerinde kiraladığınız bir NVMe VPS veya dedicated sunucuya MinIO kurarak, kendi özel Object Storage ortamınızı oluşturabilirsiniz. Bu yaklaşım:
- Veriyi kendi kontrolünüzde tutmak istediğiniz durumlarda
- Regülasyon veya sözleşme gereği belirli lokasyonda depolama mecburiyeti olduğunda
- Çok yüksek bant genişliği trafiğinde, özel fiyatlandırma yapmak istediğinizde
özellikle anlamlı hale gelir. MinIO tarafı sizin için yeni ise, adım adım kurulum, TLS, policy ve erasure coding detaylarını VPS üzerinde MinIO ile S3-uyumlu depolama kurulum rehberinde detaylı anlattık.
CDN Katmanı
CDN (Content Delivery Network), coğrafi olarak dağıtık noktalar üzerinden statik içeriği son kullanıcıya en yakın lokasyondan sunmanızı sağlar. Object Storage’ın kendi endpoint’ini doğrudan kullanabilirsiniz; fakat pratikte şu nedenlerle CDN katmanı tercih edilir:
- Gecikme (latency) düşer, TTFB iyileşir.
- Object Storage origin’inize gelen istek sayısı azalır; bant genişliği maliyeti düşer.
- Edge seviyesinde WAF, rate limiting, bot koruması gibi ek güvenlik imkânları elde edersiniz.
CDN önbellekleme mantığını ve doğru cache anahtarı tasarımını daha teknik bir seviyede incelemek isterseniz, CDN ve tarayıcı önbelleğinde cache busting stratejileri yazımız size iyi fikir verecektir.
DNS ve SSL/TLS
Son adımda alan adınızı CDN’e (ve dolaylı olarak Object Storage origin’ine) yönlendirirsiniz. Tipik akış şu şekildedir:
www.ornekalanadi.comiçin A/AAAA veya CNAME kaydı CDN’e işaret eder.- CDN, kendi içinde origin olarak S3/MinIO endpoint’inizi kullanır.
- SSL sertifikası CDN üzerinde veya alternatif olarak doğrudan origin tarafında yönetilir.
Bu sayede ziyaretçi ile CDN arasındaki trafik her zaman HTTPS ile şifrelenir; CDN ile origin arasındaki bağlantı için de “Full” veya “Full (Strict)” benzeri modlar kullanarak uçtan uca şifreleme sağlayabilirsiniz.
Adım Adım: Object Storage + CDN ile Statik Site Yayına Alma
Şimdi teoriden pratiğe geçelim. Aşağıda, DCHost altyapısında tipik bir statik site yayına alma sürecini özetleyelim.
1. Statik Site Çıktısını Hazırlayın
Öncelikle sitenizin tamamen statik bir çıktısını almanız gerekiyor. Bu:
- Hugo, Jekyll vb. bir jeneratör kullanıyorsanız
hugo,jekyll buildgibi komutlarla - Next.js, Nuxt gibi framework’lerde
next export,nuxt generateile - Veya klasik HTML/CSS/JS yapınızda doğrudan proje klasörünüz
olabilir. Amaç; deploy edilecek net bir build klasörü elde etmek. Örneğin dist/, build/ veya public/.
2. Bucket Oluşturun ve Statik İçeriği Yükleyin
Sonraki adım, Object Storage üzerinde bir bucket oluşturmak:
- Bucket adını DNS uyumlu ve anlamlı seçin:
site-ornekalanadi-comgibi. - Bölge (region) seçimini hedef kitlenize en yakın lokasyona göre yapın.
- Erişim anahtarlarınızı (access key / secret key) güvenli bir yerde saklayın.
Yükleme için:
- S3 uyumlu CLI araçları (
aws s3 syncbenzeri), rcloneveya benzeri senkronizasyon araçlarını,- Veya doğrudan panel üzerinden sürükle-bırak arayüzünü
kullanabilirsiniz. Büyük projelerde CLI ile otomatik senkronizasyon hem daha hızlı hem de CI/CD’ye kolay entegre olur.
3. Bucket’ı Statik Site Olarak Yayınlayın
Birçok S3 uyumlu Object Storage, bucket’ı direkt “statik site” moduna almanıza izin verir. Bu modda:
- Index dokümanı (genellikle
index.html) tanımlarsınız. - Opsiyonel olarak error dokümanı (örneğin
404.html) belirlersiniz. - Bucket policy ile herkese okuma izni (public read) verirsiniz.
Bu aşamada iki noktaya özellikle dikkat edin:
- Güvenlik: Bucket’ı tamamen “public” yapmak yerine, mümkün olduğunca sadece
GETisteklerine izin veren, yazma yetkisi içermeyen bir policy tanımlayın. - Dizin yapısı: SPA kullanıyorsanız,
/routebenzeri URL’ler için 404 yerineindex.htmldönmeniz gerekebilir. CDN veya origin tarafında “SPA fallback” kuralı tanımlayarak bunu çözebilirsiniz.
4. CDN’i Origin Olarak Bucket’a Bağlayın
Artık bucket endpoint’iniz hazır. Sırada CDN tarafında bir pull zone veya benzeri tanımlama var:
- Origin URL olarak Object Storage statik site endpoint’ini girin.
- Cache-Control ve TTL değerlerini ihtiyaçlarınıza göre ayarlayın.
- Gzip/Brotli sıkıştırmayı aktif edin.
- HTTP/2 ve mümkünse HTTP/3 desteğini açın.
Statik dosyalarda agresif önbellekleme yapmak mümkün. Versiyonlama (hash’li dosya adları) kullanıyorsanız, CSS/JS için 1 yıl TTL vermek genellikle sorunsuzdur. Daha detaylı cache busting stratejileri için tekrar CDN ve tarayıcı önbelleğinde cache busting stratejileri makalesine göz atabilirsiniz.
5. DNS ve SSL Ayarlarını Tamamlayın
CDN tarafında alan adınızı ekledikten sonra:
- Alan adınızın NS kayıtları hangi sağlayıcıda ise, orada
wwwve gerekirse kök alan adı (@) için CNAME/A kayıtlarını CDN’e yönlendirin. - CDN üzerinden otomatik SSL sertifikası alın veya isterseniz kendi özel sertifikanızı yükleyin.
- HTTP → HTTPS yönlendirmesini zorunlu hale getirin.
Artık https://www.ornekalanadi.com adresine gittiğinizde, tarayıcı → CDN → Object Storage zinciriyle tamamen statik, hızlı ve ölçeklenebilir bir site çalışıyor olacaktır.
MinIO ile Kendi S3-Uyumlu Origin’inizi Kurmak
Bazı ekipler, Object Storage tarafında tamamen kendi altyapısını kullanmak istiyor. Sebepler:
- Verinin belirli bir ülkede veya sadece kendi veri merkezinde tutulması gerekliliği
- Çok yüksek trafik ve bant genişliği için özelleştirilmiş peering ve fiyatlama ihtiyacı
- Özel güvenlik politikaları, mTLS, private network üzerinden erişim gibi ileri seviye gereksinimler
Bu durumda tipik mimari şu şekilde olur:
- DCHost üzerinde NVMe diskli bir VPS veya dedicated sunucu kiralarsınız.
- Sunucuya MinIO kurup S3 uyumlu bir Object Storage cluster’ı oluşturursunuz.
- Sunucuyu güvenlik duvarı, mTLS ve private network ile korursunuz.
- CDN’i origin olarak bu MinIO endpoint’ine bağlarsınız.
MinIO ile üretim ortamına hazır bir kurulumda; erasure coding, TLS, bucket policy, kullanıcı yetkilendirmesi ve izleme (monitoring) kritik başlıklar. Bunların hepsini tek tek, örnek konfigürasyonlarla VPS üzerinde MinIO ile S3-uyumlu depolama kurulum rehberinde anlattık; bu yazıdaki mimariyi uygulamaya koymadan önce o rehbere göz atmanızda fayda var.
Güvenlik, HTTPS ve Origin Korumaya Dikkat
“Nasıl olsa sadece statik dosya, güvenlik çok kritik değil” düşüncesi maalesef sık yapılan bir hata. Object Storage’ı origin yaptığınız mimaride şu noktalara mutlaka dikkat edin:
- Bucket policy: Yazma (PUT, DELETE) yetkisini asla anonim kullanıcılara açmayın. Public erişim sadece
GETve mümkünse belirli bir yol pattern’i ile sınırlı olsun. - Origin erişimi: CDN dışında doğrudan bucket URL’sini kullanan istemcileri kısıtlamayı değerlendirin; IP allowlist veya imzalı URL’ler işinize yarayabilir.
- HTTPS zorunluluğu: Hem CDN → kullanıcı, hem CDN → origin arası trafiğin şifreli olduğundan emin olun.
- Günlükleme (logging): Bucket access log’larını açın; beklenmedik bir trafik veya yetkisiz erişim denemelerini izleyin.
Ayrıca statik de olsa sitenizde doğru HTTP güvenlik başlıklarını (HSTS, CSP, X-Frame-Options, Referrer-Policy vb.) göndermek, XSS ve clickjacking gibi saldırılara karşı önemli bir koruma katmanı sağlar. Bu başlıkları bazı CDN’ler edge seviyesinde ekleyebildiği için, ekstra bir sunucuya ihtiyaç duymadan güvenliği güçlendirebilirsiniz.
Maliyet, Performans ve Ölçeklenebilirlik Dengesi
Statik barındırma mimarisinin en büyük avantajlarından biri, trafik arttıkça yeni sunucular açmak zorunda olmamanız. Object Storage ve CDN, doğası gereği “paylaşımlı ama ölçeklenebilir” servislerdir. Yine de maliyet kalemlerini doğru okumak önemli:
- Depolama maliyeti: GB başına aylık ücret.
- İstek maliyeti: Özellikle
GETistek sayısı belirli eşikleri aşarsa önemli hale gelebilir. - Çıkış trafiği (egress): Kullanıcıya giden veri miktarı en büyük kalemdir; CDN önbellekleme oranı (cache hit ratio) bu yüzden kritiktir.
Kapsamlı bir maliyet hesabı yapmak istiyorsanız, farklı senaryoları ve lifecycle policy gibi araçları ayrıntılı incelediğimiz Object Storage maliyet optimizasyonu yazımızı mutlaka okumanızı öneririz.
Performans tarafında ise:
- Doğru bölge seçimi (origin’in kullanıcı kitlenize yakın olması)
- CDN edge noktalarının coğrafi dağılımı
- HTTP/2 ve HTTP/3 desteği
- Önbellek stratejiniz (uzun TTL, hash’li dosya adları, doğru varyantlar)
en belirleyici faktörlerdir. DCHost olarak altyapımızda bu bileşenleri birlikte ele alarak hem gecikmeyi düşürmeye hem de trafik başına maliyeti makul seviyede tutmaya odaklanıyoruz.
Object Storage + CDN + (Opsiyonel) Uygulama Sunucusu: Hibrit Senaryolar
Çoğu gerçek dünya projesi, siyah-beyaz değil; yani tamamen statik ya da tamamen dinamik olmak zorunda değil. Sık gördüğümüz hibrit senaryolar:
- Headless CMS + statik frontend: İçerik yönetimi için paneliniz DCHost VPS üzerinde çalışır; frontend ise statik olarak build edilip Object Storage + CDN üzerinden yayınlanır.
- API arkası SPA: React/Vue ile yazılmış SPA, Object Storage’ta host edilir; API’ler yine DCHost VPS/dedicated üzerinde JSON servis eder.
- Büyük medya offload’u: WordPress gibi bir sistem kullanıyor ama medya dosyalarını Object Storage’a taşıyorsanız, hem disk hem IOPS yükü ciddi oranda azalır.
Son saydığımız senaryoyu zaten ayrıntılı şekilde medya dosyalarını Object Storage’a offload etme stratejisini anlattığımız makalede işlemiştik. Buradaki fark, sadece medya değil, sitenin tamamını statik hale getirip origin’i de Object Storage’a taşımanız.
DCHost Altyapısında Tipik Uygulama Örnekleri
DCHost tarafında müşterilerimizle birlikte kurduğumuz yaygın mimarileri de kısaca örnekleyelim.
1. Tamamen Statik Dokümantasyon Sitesi
- Hugo ile derlenen dokümantasyon sitesi, CI pipeline’ında build edilir.
- Build çıktısı, S3 uyumlu Object Storage bucket’ına
syncile yüklenir. - CDN, origin olarak bu bucket’ı kullanır; HTML için 5 dakika, CSS/JS/görseller için 30 gün TTL verilir.
- Ek bir VPS veya panel gerekmez; bakım maliyeti neredeyse sıfıra iner.
2. SPA + API Ayrımı
- Vue.js ile yazılmış SPA, Object Storage + CDN’de host edilir.
- Laravel API, DCHost NVMe VPS üzerinde, ayrı bir subdomain’den yayınlanır.
- CDN’de SPA için SPA fallback kuralı tanımlanır; tüm bilinmeyen yollar
index.html’e düşer. - API tarafı için rate limiting, WAF ve ayrı bir ölçeklendirme stratejisi uygulanır.
3. MinIO ile Özel Object Storage ve Yüksek Trafikli Statik Site
- Kurumsal bir müşteri, trafiğin ve verinin tamamen kendi kontrolünde olmasını istiyor.
- Birden fazla DCHost VPS üzerinde MinIO cluster kuruldu; erasure coding ve TLS etkin.
- CDN, origin olarak özel MinIO endpoint’ini kullanıyor; origin sadece CDN IP’lerine açık.
- Arka tarafta ayrı bir cluster izleme (Prometheus/Grafana vb.) ve loglama sistemi var.
Sonuç ve Yol Haritası
Object Storage’ı doğrudan web site origin’i olarak kullanmak, özellikle statik içerik ağırlıklı projeler için son derece güçlü bir yaklaşım. Doğru kurgulandığında:
- VPS/dedicated sunucu sayınızı azaltabilir,
- Bakıma ihtiyaç duyan bileşenleri minimuma indirebilir,
- CDN ile birlikte otomatik ölçeklenebilir,
- Depolama ve bant genişliği maliyetlerini daha öngörülebilir hale getirebilirsiniz.
Elbette her projeyi “tamamen statik” hale getirmek mümkün değil; ama en azından frontend, medya ve dokümantasyon gibi kısımları Object Storage’a taşıyarak bile büyük bir kazanım elde edebilirsiniz. Nereden başlayacağınızı bilmiyorsanız, önce projenizi parçalara ayırın: hangisi gerçekten dinamik, hangisi sadece dosya servis ediyor? Dinamik olmayan her katman, aday bir statik origin adaydır.
DCHost olarak; Object Storage, CDN, MinIO cluster’ları ve DCHost VPS/dedicated altyapısını bir araya getirerek sizin için en uygun statik veya hibrit mimariyi planlamaya alışkınız. Mevcut sitenizi bu mimariye taşımak, maliyet ve performans açısından nasıl bir tablo çıkacağını görmek veya MinIO tabanlı özel bir Object Storage kurulumunu değerlendirmek isterseniz, ekibimizle birlikte adım adım bir yol haritası çıkarabiliriz. İhtiyacınız gerçekten bir sunucu mu, yoksa iyi tasarlanmış bir Object Storage + CDN mimarisi mi; gelin, birlikte netleştirelim.
