Elasticache

  • RDS nasıl yönetilen ilişkisel veritabanı (Relational Database) sunuyorsa, ElastiCache de yönetilen Redis veya Memcached sağlar.

  • Cache'ler, bellekte (in-memory) çalışan veritabanlarıdır. Çok yüksek performans ve düşük gecikme (latency) sunarlar.

  • Okuma ağırlıklı iş yükleri için veritabanı üzerindeki yükü azaltır.

  • Uygulamanızı stateless (durumsuz) hale getirmenize yardımcı olur. (Yani kullanıcı oturum bilgisi gibi durumlar veritabanında değil, cache'de tutulabilir.)

  • AWS aşağıdaki işleri sizin yerinize yapar:

    • İşletim sistemi bakımı

    • Güvenlik yamaları

    • Optimizasyonlar

    • Kurulum ve konfigürasyon

    • İzleme

    • Hata kurtarma (failure recovery)

    • Yedekleme işlemleri

  • ElastiCache kullanmak, uygulama kodunuzda önemli değişiklikler yapmanızı gerektirebilir. (örn: Redis ya da Memcached kullanacak şekilde kodunuzu yeniden yapılandırmak)


ElastiCache - Çözüm Mimarisi (Veritabanı Önbelleği)

Mimari Akış:

  1. Uygulama ilk olarak ElastiCache’e sorgu gönderir.

    • Eğer istenen veri ElastiCache’te varsa → Cache hit (önbellek isabeti) → Veri direkt buradan alınır.

    • Eğer yoksa → Cache miss (önbellek ıskası):

      • Veri RDS (veritabanı)’nden alınır.

      • Alınan veri hem uygulamaya döndürülür, hem de önbelleğe yazılır (write to cache).

Neden Kullanılır?

  • RDS üzerindeki yükü azaltmak için.

  • Uygulama performansını artırmak için (çünkü önbellek bellek içi çalışır ve çok hızlıdır).

Dikkat Edilmesi Gerekenler:

  • Cache invalidation (önbellek geçersizleştirme) stratejisi gereklidir. Yani: Veriler güncellendiğinde önbellekteki eski verinin silinmesi ya da güncellenmesi gerekir. Aksi halde kullanıcıya eski veri dönebilir.

Yüksek Erişilebilirlik (HA)

Multi-AZ (çoklu availability zone) desteği vardır. Auto-failover ile desteklenir.

Yüksek erişilebilirlik yoktur, replikasyon desteği sunmaz. Amaa dikey olarak genişleyebilir.

Okuma Ölçeklenebilirliği

Read Replicas ile okuma yükü dağıtılabilir ve yüksek erişilebilirlik sağlanır.

Yok. Okuma yükünü ölçeklemek için replikalar desteklenmez.

Veri Kalıcılığı (Persistence)

AOF (Append-Only File) yöntemi ile kalıcı veri saklama sağlar.

Kalıcı değildir (non-persistent). Bellek kapandığında veri kaybolur.

Yedekleme ve Geri Yükleme

Yedekleme (backup) ve geri yükleme (restore) özellikleri mevcuttur.

Sunucusuz (serverless) ortamda sınırlı yedekleme desteği vardır.

Veri Yapısı Desteği

Set ve Sorted Set gibi gelişmiş veri yapılarını destekler.

Bu veri yapıları desteklenmez. Sadece String Veri Tutar

Sharding / Bölümlendirme

Tek nod üzerinde çoğunlukla çalışır, sharding daha karmaşıktır.

Multi-node sharding varsayılan olarak desteklenir.

Çoklu İş Parçacığı (Multi-threading)

Tek iş parçacıklıdır.

Çoklu iş parçacığı (multi-threaded) mimarisi vardır.

Kullanım

Daha Komplike işleyişe sahip

Basit bir kullanımı var

ElastiCache – Önbellek Güvenliği (Cache Security)

IAM Authentication (Kimlik Doğrulama)

  • ElastiCache, Redis için IAM kimlik doğrulamayı destekler.

  • Ancak bu IAM policy'leri yalnızca AWS API seviyesi güvenliği içindir. (Yani Redis'e doğrudan erişim değil, AWS kaynak erişimlerini kontrol etmek içindir.)


Redis AUTH (Parola Tabanlı Güvenlik)

  • Redis cluster oluştururken şifre/token tanımlanabilir.

  • Bu şifreleme, security group’lara ek olarak ikinci bir güvenlik katmanı sağlar.

  • Redis ayrıca "SSL in-flight encryption" desteği sunar: → Veriler ağ üzerinden iletilirken şifrelenir. → EC2 client ↔ Redis arasında güvenli veri iletimi gerçekleşir.


Memcached Güvenliği

  • SASL tabanlı gelişmiş kimlik doğrulama (SASL = Simple Authentication and Security Layer) desteklenir.

  • Redis kadar detaylı ve yaygın değildir.

ElastiCache Kullanım Desenleri

1. Lazy Loading (Tembel Yükleme)

  • Uygulama önce cache’e (ElastiCache) sorgu yapar.

  • Eğer veri cache’te yoksa:

    • Veritabanından (RDS) okunur

    • Aynı zamanda ElastiCache’e de yazılır.

  • Bu modelde yalnızca okunan veriler cache’e eklenir.

  • Ancak bu yöntemle önbellekteki veriler zamanla bayatlayabilir (stale data).

2. Write Through (Yazarken Cache'e Yazma)

  • Veritabanına her yazma işlemi sırasında aynı veri ElastiCache’e de yazılır veya güncellenir.

  • Bu sayede cache daima güncel veriyi içerir (no stale data).

  • Okumadan önce yazarken de senkronizasyon yapılır.

3. Session Store (Oturum Saklama)

  • Kullanıcılara ait geçici session verileri cache içinde tutulur.

  • Genellikle TTL (Time To Live) ayarı ile verinin süresi belirlenir.

  • Örnek: Kullanıcı giriş bilgileri, sepet içeriği gibi geçici veriler burada tutulur.

Redis Senaryosu

Redis Kullanım Senaryosu: Oyun Liderlik Tablosu

Sorun:

  • Oyun liderlik tabloları (leaderboard) hesaplama açısından karmaşık ve gerçek zamanlı sıralama gerektirir.

  • Sürekli veri girişi ve sıralama yapılması gerekir.

Çözüm: Redis Sorted Sets

  • Redis Sorted Sets, her öğeyi bir puan (score) ile birlikte tutar.

  • Hem sıralamayı, hem de benzersizliği (uniqueness) garanti eder.

  • Her yeni öğe eklendiğinde:

    • Anında sıralanır

    • Doğru pozisyona otomatik yerleştirilir

Senaryonun Çözümlenmesi

Last updated