- Yazı, yazarın bir SaaS uygulamasında Postgres performansını yönetme deneyimini ele alıyor; veritabanı yükü karşılamakta zorlanıyordu.
- Yazarın ekibi, veritabanı fazla meşgul olduğunda her seferinde onu daha büyük bir instance ile değiştirerek dikey ölçekleme yaptı. Ancak zaten en büyük instance kullanıldığı için sistem aşırı yüklenme noktasına gelmişti.
- İki olası çözüm önerildi: yazmaları bağımsız veritabanı kümelerine shard etmek ve monoliti birbiriyle bağlantılı birden çok hizmete (mikroservisler) bölmek.
- Her iki çözüm de kapasiteyi artırır ve hata toleransı ile operasyonel dayanıklılık açısından ilginç seçenekler sunar, ancak karmaşıklığı da ciddi ölçüde artırır.
- Yazar, karmaşıklık artışının gerçek maliyetinin dikkat olduğunu ve bunun sonraki tüm teknik kararları daha karmaşık hale getirdiğini savunuyor.
- Yazar, karmaşıklığı büyük ölçüde artırmadan önce genellikle iş yükünü ayarlayarak, performansı ince ayarlayarak veya sistemi bir şekilde destekleyerek mevcut sistemden biraz daha fazla performans "sıkıştırma" fırsatı bulunduğunu öne sürüyor.
- Kendi durumlarında, ağır sorguları optimize ederek, Postgres ayarlarını ince ayarlayarak ve pahalı bazı salt okunur sorguları replica DB'ye offload ederek veritabanının haftalık en yüksek CPU kullanımını %90'dan %30'a düşürdüler.
- Yazar, karmaşıklığın gerekli ve kaçınılmaz olduğu sonucuna varıyor; ancak mümkün olduğunca uzun süre karmaşıklık artışını erteleyip önce mevcut sistemden alınabilecek maksimum performansı çıkarmanın tercih edilmesi gerektiğini söylüyor.
1 yorum
Hacker News görüşü