Mavi-Yeşil Veritabanı Kabusu
Mavi-yeşil dağıtım, durumsuz uygulamalar için harika çalışır. Veritabanı şema değişikliklerimiz geri almayı imkansız hale getirdi.
Durum:
- Yeni sürümü Yeşil'e dağıt
- Yeni sürüm veritabanı geçişini çalıştırır
- Trafiği Yeşil'e yönlendir
- Hata keşfedildi
- Mavi'ye geri dönmek istiyoruz...
- Ama Mavi yeni şemayı okuyamıyor!
Yıkıcı geçiş:
-- Geçiş
ALTER TABLE users DROP COLUMN legacy_id;
ALTER TABLE users RENAME COLUMN user_id TO id;
Eski kod legacy_id ve user_id bekliyor. Onlar artık yok.
Düzeltme - genişlet/daralt deseni:
- Genişlet: Yeni sütun ekle, eskileri koru
- Geçir: Her ikisine de yazan kodu dağıt
- Geri Doldur: Veriyi yeni sütuna kopyala
- Daralt: Kararlı hale geldikten sonra eski sütunu kaldır
Ana ilke:
- Şema değişiklikleri geriye dönük uyumlu olmalıdır
- N-1 sürümü N şemasıyla çalışmalıdır
- Aynı sürümde asla silme/yeniden adlandırma yapma
Ders: Veritabanı, mavi-yeşil dağıtımın en zor kısmıdır. Bunu açıkça planlayın.