Sınırlı kullanıcı nüfusuna Web uygulama dağıtım

1 Cevap php

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:

  1. 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.

  2. 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

1 Cevap

Kimse cevap, bu yüzden kuşaklar için kendimi cevap olacak. :-)

Bu yöntem eski bir kod temeli üzerinde yeni bir kod temeli aşamalı bir dağıtım için çok iyi çalışıyor. Bizim özel durumda, yukarıdaki yönteme benzer bir yöntem kullanarak toplu olarak yaptı. Başlangıçta, tüm kullanıcılar eski sistem ile başlamış ve yeniden yazma harita dosyası yaklaşık 800K boyutu oldu. Sunucu nedeniyle yeniden yazma direktifleri hızda hiçbir fark fark ile fazla 100K sayfalar hizmet.

Ben Apache dosyasından girdileri kaldırmak için değişiklik yaptıktan sonra yeniden başlatılması yoktu şaşırdı (belgeleri bu dosya sadece başlangıçta okunur ima). Apache bu yüzden her isteği üzerine ona bakmak gerekir, yoksa farklı ise daha büyük olasılıkla onay damgaları / toplamlarını görmek için hemen harita değişiklikleri aldı.

Benzer bir teknik, dağıtım için, fakat özellikle veri yapısını değiştirmeyen olduğu durumlarda A / B testi için de kullanılabilir.