Ben kurulmuş bir web uygulamasının yeni sürümlerini dağıtma en iyi yolu belirlemek için çalışıyorum. Geçmişte, ben bunu bir kaç farklı şekilde yaptık ama bu sefer daha iyi bir biraz farklı bir şey yapmak / arıyoruz.
Biz geliştirme / hazırlama / üretim sunucularını kullanarak ediyoruz. Geliştirme yapılır ve temel işlevi test edildikten sonra, biz hazırlama sunucusunda yükseltilmiş bir üretim veritabanı geliştirme kod çalıştırabilir. Bizim iç QA hazırlık ortamında sorunları bulmazsa, biz bu değişiklikleri yaşatmak.
Bu son aşama aşağıdaki iki şekilde yapılmıştır:
Upgrade the code and the database schema at a time of low usage, do a bit of testing to make sure the upgrades went OK, then cross fingers and hope the users don't find some bug that QA missed, always ready to put out fires or revert to the previous version in case of major failure.
Create the new version of the application at a different URL. Copy the production database to a new version, empty it, then copy over data for selected users and have them use the new URL. I.e., they would access the application from www2.example.com instead of www.example.com. Slowly move every user to the new version then switch the urls back.
Bu kez ben iki yöntemin birleşimi gibi bir şey yapıyor bakıyorum. Temelde, aynı url tutarken yeni hizmet kullanıcıların az sayıda hareketli düşünüyorum.
İşte sanal konak yaptığını düşünüyor buydu. Yeni kullanıcılar üzerinde taşındığında Map.txt / güncellendi oluşturulmuş olacak. (Ben Prg yeniden yazma haritayı kullanarak baktım ama apache asılı komut bekliyor korkuyorum.)
<VirtualHost *:80>
ServerAdmin webmaster@lotsa.net
DocumentRoot /web/www.example.com
ServerName www.example.com
RewriteEngine on
RewriteMap deploymentmap txt:/web/map.txt
RewriteRule ^/id/([0-9]+)/(.*)$ ${deploymentmap:$1}/id/$1/$2
</VirtualHost>
map.txt:
10001 /web/www2.example.com/
10002 /web/www2.example.com/
10003 /web/www2.example.com/
10004 /web/www2.example.com/
10005 /web/www2.example.com/
Bu dağıtım stratejisinin herhangi bariz kusurları var mı? Ben bazı basit ve etkili, daha az ağrılı, yükseltme yöntemini eksik?
Herhangi bir yardım için şimdiden teşekkür ederiz.
-Paul