Pinterest'in ölçeklenme yolculuğu
Pinterest'in ölçeklenme süreci dört aşamaya ayrılıyor:
- Kendini keşif dönemi: Küçük bir mühendis ekibi, hızlı prototiplemeyi ve sürekli değişen ürün gereksinimlerini yönetti.
- Deney dönemi: Kullanıcı sayısındaki ani artış nedeniyle hızlı ölçeklenme gerekti, ancak bu durum karmaşık ve kırılgan bir sistem ortaya çıkardı.
- Olgunluk dönemi: Mimari, MySQL, Memcache ve Redis gibi olgun ve ölçeklenebilir teknolojiler kullanılarak sadeleştirildi.
- Geri dönüş dönemi: Doğru mimari kurulduktan sonra, yatay ölçekleme ile büyüme sürdürüldü.
Temel teknolojiler
Pinterest, güvenilirlik, anlaşılabilirlik ve ölçeklenebilirliği önceleyen teknolojilere öncelik verdi:
- MySQL: Kararlı ve bakımı kolay bir ilişkisel veritabanı.
- Memcache: Sık erişilen verileri bellekte önbelleğe alarak veritabanı okuma yükünü azaltır.
- Redis: Çeşitli veri yapılarını işleyebilen esnek bir veri deposu.
- Solr: Hızla devreye alınabilen bir arama platformu.
Veritabanı ölçekleme: kümeleme vs sharding
Pinterest, veritabanını dağıtık hale getirmek için iki yaklaşımı değerlendirdi:
Kümeleme
- Veri geldiğinde en uygun düğüm belirlenir ve veri birden fazla düğüme kopyalanır.
- Otomatik ölçekleme, kolay kurulum ve veri erişilebilirliği sağlama gibi avantajları vardır; ancak karmaşıklık, düşük olgunluk ve zor yükseltmeler gibi dezavantajlar da bulunur.
Sharding
- Veriler küçük parçalara bölünür ve her parça bağımsız bir sunucuya yerleştirilir.
- Basit mimari, bağımsız ölçekleme ve net veri sahipliği gibi avantajları vardır; ancak veritabanı düzeyinde join ve transaction desteğinin olmaması ve uygulama karmaşıklığının artması gibi dezavantajlar da bulunur.
Pinterest, kümelemede yaşadığı olumsuz deneyim nedeniyle sharding'i seçti.
Sharding mimarisine geçiş
Pinterest, özellik dondurma sürecinde kademeli olarak sharding'e geçti:
- Join'leri kaldırma: Tüm MySQL join'leri kaldırıldı, bunun yerine veri denormalizasyonu ve önbellekleme kullanıldı.
- ID tabanlı sharding: 64 bit ID tabanlı sharding ile veri yönlendirme basitleştirildi.
Sharding'in dezavantajları ve çözümler
- Migration script'leri: Verilerin sharding altyapısına taşınması süreci oldukça zaman aldı.
- Uygulama mantığı: Veritabanı düzeyinde join ve transaction eksikliği nedeniyle veri tutarlılığının uygulama tarafında korunması gerekti.
- Şema değişiklikleri: Tüm shard'lar için şema değişikliklerinin planlanması ve uygulanması gerekti.
- Rapor oluşturma: Birden fazla shard birleştirilerek raporlar üretildi.
Çıkarılan dersler
Pinterest'in ölçeklenme yolculuğundan çıkan başlıca dersler:
- Basitlik önemlidir: Anlaşılması kolay teknolojileri seçmek, sorun çözmeyi kolaylaştırır ve riski azaltır.
- Ölçeklenebilirlik önce gelir: Hızlı büyüme ortamlarında, veritabanı özelliklerinden ödün vermek gerekse bile ölçeklenebilirlik öncelikli olmalıdır.
- Yatay ölçekleme için tasarım: Kullanıcı tabanı büyüdükçe yeni kaynaklar eklenmesine imkan tanıyan bir mimari seçin.
Henüz yorum yok.