DB geçişi ve Azure dağıtım yuvaları


16

Yeni bir web uygulamasını bir Azure Web Uygulama Hizmeti'ne (eski Azure Web Sitesi) aktarmayı planlıyorum. Dağıtımımı üretime göndermeden önce test edebilmek için dağıtım yuvalarını kullanmak istiyorum. DB şeması değişikliği gerektirmediği sürece her şey yolunda. Ancak bir şema değişikliği varsa, aynı db sürümünde çalışan iki yazılım sürümüne sahip olamam. EF Geçişleri'ni kullandığımdan, hazırlama yuvasına yapılan itme anında en son sürüme DB güncellemesi ile sonuçlanır.

Benim sorum, bir db geçişi gerektiğinde dağıtım yuvaları herhangi bir kullanım olup olmadığını?

Büyük SaaS sağlayıcıları için nasıl yapılır. Yeni sürümle anında bir DB geçişi gerçekleştiriyorlar mı? Bu kesinlikle kesinti süresine neden olur.

Bu soruna sadece oldukça karmaşık çözümler düşünebiliyorum, basit bir şey var mı?


Yani bir dev veritabanınız yok mu?
JeffO

Evet, biz bir dev ve QA sistemi. Yukarıda açıklanan sistem üretim amaçlıdır.
Sam7

@ Sam7 bu soruna bir çözüm bulmayı başardınız mı? Şerefe
WestDiscGolf

Korkarım ki hayır. Şu anda taşıma değişikliklerini ayrı bir ortamda test ediyoruz.
Sam7

@ Sam7: Ben kendi db kendi bağlantı dizesi ile ayrılmış bir .config dosyası tarafından yönetebilirsiniz düşünüyorum. ama haklısın, sahneden üretime konuşlandırdığın zaman, bir geri dönüşün yararı artık işe yaramıyor. db değişiklikleri anında uygulanır. yakın gelecekte bir çözüm merak ediyorum ...
Roger S.

Yanıtlar:


3

Azure App Service yuvaları ve Sıfırlama ve Üretim tarafından paylaşılan tek bir veritabanı kullanılarak sıfır kesinti süresi yayınlanabilir - ancak web uygulamasının geçerli ve yeni sürümlerinin aynı anda çalışabilmesi için tüm veritabanı değişikliklerinin geriye dönük olarak uyumlu olduğundan emin olmanız gerekir. Evreleme ve üretim yuvaları.

Bunun çalışmasını sağlayan bazı kurallar:

  • Tüm yeni veritabanı sütunları boş değerli olmalı veya varsayılan değerlere sahip olmalıdır
  • Sütunları yeniden adlandırmaya izin verilmiyor
  • Sütunların bırakılmasına izin verilmiyor

Sütunları yeniden adlandırma veya bırakma gibi yıkıcı değişiklikler yapmanız gerektiğinde, bunu yapmak için 2 sürümünüz olması gerekir:

  1. Yeniden adlandırılan / bırakılan sütunlara olan bağımlılığı ortadan kaldıran web uygulamasının yeni sürümü yayınlanmalıdır
  2. Yıkıcı değişiklikleri gerçekleştiren ek bir sürüm yapılır

Bu biraz karmaşık gelse de, pratikte muhtemelen çok sık yıkıcı değişiklikler yapmayacaksınız.


0

yuvaya özgü yapılandırma öğelerine baktınız mı? WebApp / Ayarlar / Uygulama Ayarları altında web uygulaması için ayarları belirleyebilir, ancak yalnızca bu alan için geçerli olup olmadığını da belirleyebilirsiniz.

Bu nedenle, aşamalandırma bölmeniz için yuvaya özgü bir bağlantı dizesine sahip olabilir ve geçişi takas yuvalarına da uygulayabilirsiniz.


2
Bu, evreleme sitesinin üretim ile tam olarak aynı veri kümesi (-> veritabanı) üzerinde çalışmasını sağlama fikrine aykırı.
Sam7
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.