Web uygulamalarını sürümlendirmeli misiniz?


35

Kısa bir süre önce bir iş arkadaşıyla web uygulamalarını sürümlendirme hakkında bir tartışma yaptım.

Buna hiç ihtiyacın olduğunu sanmıyorum ve sadece son sürümün yayınlandığını onaylamak için bir sağlık kontrolü istiyorsan, bir randevunun (YYMMDD) muhtemelen yeterince iyi olduğunu düşünüyorum.

Ben tabandan mıyım? Ben noktayı mı özlüyorum? Web uygulaması sürüm numaralarını kullanmalı mıyım

Yanıtlar:


31

Aynı web uygulamasını birden fazla müşteriye yeniden satıyorsanız, kesinlikle onu sürümlendirmelisiniz.

Sadece bir yere kurulmuş bir web sitesiyse, ihtiyaç daha az korkunç, ancak yine de zarar görmedi. Saat dilimi sorunlarına ve bu tür durumlara daha az duyarlı olursunuz. Bir kütüphane sürüm 1.0.2.25’de bir sorunu teşhis etmek, 3 Kasım 2010 günü saat 15: 15’deki kütüphane yapısını aramaktan çok daha iyidir.


2
Aynı web uygulamasını birden fazla müşteriye yeniden satıyorsanız, kesinlikle onu sürümlendirmelisiniz. 100 doğru!
Gopi

8
Katılmıyorum Sürümlerinizi sürümlemek her zaman önemlidir, web uygulaması veya değil. Bu, herhangi bir geliştirme yönteminde temel bir uygulamadır (kovboy kodlaması hariç).
Martin Wickman

2
@Sri Kumar: henüz burada anahtar kelime olmak :)
Martin Wickman

2
@sri, istifler oldukça sürüm bağımlıdır. Yığınlanmış bir hata raporunuz varsa, o zamandan beri daha yeni sürümler yayınlanmış olsa bile, hızlı ve kesin bir şekilde - bu yığın sırasına karşılık gelen kaynak koduna sahip olmalısınız. Java günlüğü yazılımının modern versiyonları, versiyon bilgisini istifin kendisinde de sunar.

1
@ anna lear - Sadece bana olay hakkında hiçbir zaman cevap vermediğim ortaya çıktı. YYMMDD versiyonunda, "3 Kasım 2010 11:15" örneğinin 101103 olarak versiyonlanacağını düşünüyorsunuz. Dolayısıyla tarihe göre 'versiyonlandı'.
John MacIntyre

12

Uygulamanızın DLL'lerinde sürüm numarasını otomatik hale getirebilirseniz, zarar veremez. Sürümleri takip etmenize yardımcı olacaktır.

Genel olarak, web uygulamaları yalnızca barındırdığınız bir yerde yayınlanır, bu nedenle masaüstü uygulaması demek kadar önemli değildir. Geri alma, hata izleme (bu sürüm hangi sürümdeydi) ve varsa geliştirici, aşamalandırma ve üretim sunucuları arasındaki farkı izlemeye yardımcı olabilir.

Otomatize etmeye bakardım - bir kez kurabileceğiniz ve gerektiğinde / gerektiğinde kullanabileceğiniz türden bir şey.


Her derleme için bir VCS etiketi eklemeyi otomatikleştirme. AFAIK çoğu inşa sistemleri bugünlerde bunu yapabilir.
JensG

9

Kullanıcılarınız sürüm numaralarını her zaman en son ve en iyi sürümlere sahip oldukları için umursamazlar; Sonunda geliştirme kaynağınız canlı kodla senkronize olur ve ardından kesinlikle bilmeniz gerekir. Böylece, sürümlerinizi svn / git ağacınıza etiketleyin ve web uygulamasını bu etiketle işaretleyin.


1
kesinlikle. Vahşi doğada çevrilmemiş bir kodun olmasını göze alamazsınız. sürüm SVN / hg / git olsa bile # düzenleyin.
Paul Nathan

9

Bir dev / test durumunuz varsa, proje ekibi üyelerinin test ettikleri yapı / revizyonları görebilmesi çok önemlidir.


4

Diğerlerinin söylediklerine ek olarak, bu versiyonlamanın pazarlama açısından da önemli olduğunu eklerim. Yeni sürüm, potansiyel veya mevcut müşterilere pazarlanabilecek yeni bir şeydir. Müşterilerin bir şeyin 'yeni' olduğunu bilmelerini ve işlerin daha ileri gittiğini görmelerini sağlar. Yeni özelliklerin güzel gruplandırılmasını sağlar. Ve daha profesyonel görünüyor.


4

Ben önemsiz bir web uygulaması dışında bir şey için, onu sürüm gerekir gerektiğini söylüyorum. Burada işte iki, biraz farklı nosyonlar var:

  1. bir bütün olarak uygulama
  2. bireysel dosyalar

Durumdan bağımsız olarak, dosyaların bireysel versiyon (veya revizyon) numaralarına sahip olması gerektiğine inanıyorum. İdeal olarak, bu, sürüm kontrol sisteminiz tarafından otomatik olarak ele alınacaktır. Başkaları tarafından belirtildiği gibi, bir dosyanın sürüm numarasına atıfta bulunmak, tarih ve saatinden daha kolaydır.

Uygulamanın birden fazla canlı kurulumuna sahipseniz (veya varsa), bir bütün olarak versiyonlanmalıdır. Ayrı dev ve test ortamlarınız varsa (olması gerektiği gibi), bu da iyi bir uygulamadır. Her uygulama (veya sürüm) sürüm numarası, belirli sürüm numaralarındaki tek tek dosyaların toplanması anlamına gelir. Tüm bunlarla uğraşmak ekstra bir yük olsa da, belirli revizyon numaralarındaki ayrı dosyalardan belirli bir sürümü kullanıma bırakmak daha kolaydır.


Bu bana dilbilim hakkında bir fikir verdirir. Bir dilde bir şeyi ifade edemezseniz, onun hakkında düşünemeyeceğiniz söylenir (o dilde). Almanca sözcüğü 'Schadenfreude' düşünüyorum. Bu kelimeye atıfta bulunmak suretiyle, “başkasının talihsizliğinden dolayı neşe hissi duymak” kavramını, tanımından ziyade düşünmek (ve konuşmak) çok daha kolaydır. Kelimenin İngilizce dilinde kullanılmasının nedeni budur.

Benzer şekilde, sürüm numaraları uygulamanızdan ve dosyalarından belirli durumlarda konuşmayı (ve düşünmeyi) kolaylaştırır. Tek kişilik bir ekibin, tek bir uygulama üzerinde çalışıyorsan, büyük bir fark yaratması büyük olasılıkla değil. Ancak, işler daha karmaşık hale geldikçe, bu etiketleri kullanıma hazır hale getirmeniz sizin için daha iyidir.


4

Web uygulamanızı, derleme sunucunuzdaki derleme kimliği ile birlikte sürümlendirmelisiniz ve bu kimliği tüm hata raporlarına dahil etmelisiniz.

Bu, şu anda üretimde bulunmayan eski bir sürümde bildirilen bir hatayı düzeltmeniz durumunda zaman içinde geri dönmenize olanak sağlar.


1

Sorunuzda, basit bir web uygulamasının aklında bulunduğunuz açıktır.

  • Yalnızca bir Web GUI'si tarafından erişilebilir ve Web (-service) API'sı tarafından erişilebilir değil . Bir API kullanarak uygulamaya erişen kullanıcılarınız varsa, onu sürümlendirmeniz gerekir . API'yi değiştirirseniz müşterileri atarsınız, bu nedenle API'nin farklı bir sürümünü aynı anda korumanız gerekir.

  • Şu anda çalışan yalnızca bir örnek . Sadece web kullanıcısına sahip olsanız bile, daha fazla kurulumunuz varsa, hangi müşterinin hangi sürümü çalıştırdığını bilmeniz gerekir.

  • Canlı sürüm yükseltme için kabul edilebilir aşağı-zaman ile. Bir olasılıkla vardır büyük olduğunu sorun veritabanı . Yeni sürümlerle yapılan önemli değişiklikler, verilerin temel yapısındaki değişikliklerle birlikte gelir. O sırada çalışan yalnızca bir sürümünüz varsa, eski sürümü kapatmanız, veritabanını yükseltmeniz ve yeni sürümü açmanız gerekebilir. Bu, uygulama zaman aşımına neden olur. Bu, kullanıcı sayısına ve türüne bağlı olarak kabul edilebilir.


Anlaşılmamış bir web api oluşturmak, çoğu insanın buna güvenmeyeceği kadar büyük bir beceriksizlik. Ve evet, uygulamanın bir örneğinden bahsediyorum.
John MacIntyre

Ayrıca, tek örnek uygulamalar için bile geçerli olan üçüncü noktayı göz önünde bulundurun.
OGrandeDiEnne

Bunu okudum ve kesinlikle önemli ve zor olsa da, bunun bir sürüm sorunu olduğundan emin değilim. Daha fazla dağıtım sorunu değil mi? KWIM?
John MacIntyre

Evet ve hayır. (Çok uzun zaman önceydi ama sanırım ..) Mesele şu ki, kodunuzu versiyona ihtiyacınız varsa, muhtemelen db yapısını da versiyonuna ihtiyacınız olacaktı.
OGrandeDiEnne

0
  • Dahili kullanım sadece sınırlı kurulum tabanına sahip mi?
  • Ya da vahşi doğada birden fazla versiyona sahip olmakla sorumlu mu?

Sadece eskisine sahibiz, bu yüzden sürüm numarasını sadece akıl denetimi için akıl denetimi için kullanın. Aynı anda kullanılan pek çok sürümü izlememiz gerekmiyor.


0

Web uygulamanız hem istemci hem de sunucuda birden fazla modülden oluşuyorsa, her modül versiyonlanmalıdır. Ve hem istemcide hem de sunucudaki modül sürümlerinin her birine benzersiz bir kimlik, tüm kayıt ve hata iletilerinde bulunması gereken bir kimlik verilmelidir.

Bu sözleşmeyi kullanarak, web uygulamasının belirli bir anda bulunduğu durumu yeniden oluşturmak her zaman mümkün olacaktır.

Bence, webapps bugünlerde her iki tarafta, sunucuda ve istemcide dinamik diller kullanılarak oluşturulduğundan, kullanıcı tarayıcıyı yeniden başlatmadığı veya sayfayı el ile yeniden yüklemediği sürece güncellenmiş bir web uygulamasını yeniden yüklemek için herhangi bir neden olmamalıdır.

Uygulamanın genel durumunu etkilemeden, yalnızca web uygulamasındaki güncellenmiş parçalar veya modüller yeniden yüklenmelidir.

Neden isteyebilirsin Bunu zorlatarak, web uygulaması tasarımı gereği daha sadık, doğru ve bakımı kolay olacak. Web uygulaması her zaman eşzamanlı sunucu / müşteri güncellemesi gerektiriyorsa, muhtemelen doğru yolu bulamaz.


0

Evet, versiyonunu yazmalısın! Ayrıca, revizyon kontrol sisteminizde (subversion, git, mercurial vb.) Sürüm numarasıyla eşleşen bir etiket bulunmalıdır.

Etiket geri dönüp dal yapmanızı sağlar. Örneğin: Geçerli üretim sürümünde bir hata var, ancak makinenizdeki kod kapıyı açmaya hazır olmadığı için düzeltemiyorsunuz. Bununla birlikte, RCS'nizde etiketlenmişse, bu etikete dallayabilir ve üretimde çalışan kodun tam sürümünde hatayı düzeltebilirsiniz.


0

Şahsen ben yine de sürüm yapmalısınız diye düşünüyorum, ancak web sitelerine özgü web uygulamalarını sürümlendirmenin en büyük yararı, statik içerikteki değişiklikleri yönetmeyi çok daha kolay hale getirebilmesidir.

Örneğin, ileride bir son kullanma tarihi olan bir mysite.css dosyanız olduğunu varsayalım (genellikle yapmak istediğiniz her sayfadaki tarayıcıda önbelleğe alınacak şekilde). Daha sonra o dosyadaki bir stili değiştirirseniz, daha önce sitenize gelen hiç kimse o dosyayı önbelleklerinden temizlemek için bir şey yapmazsa görecektir.

Sitenizde sürüm oluşturuyorsanız, derlemenizdeki tüm css referanslarını mysite.css? V = 1234 gibi bir şeye değiştirebilseniz de, gelecekteki son kullanma tarihini tutmanıza izin verecek ve bir sonraki sürümdeki gibi gelecekteki değişiklikler için endişelenmeyeceksiniz mysite.css? v = 1235 olur.


0

Evet yapmalısın. Dağıtım nedenlerinden dolayı burada diğer cevaplar tarafından belirtilmiştir.

Ama görüyorum ki, neden soruyu soruyorsun. Web uygulamaları yaklaşımı düşük maliyetlidir. Maliyetlerin fiziksel medya, dağıtım, kurulum, dokümantasyon baskısı, eğitim ve teknik destek dahil olduğu eski shrinkwrap yaklaşımına zıt. Dışlanabilecek herhangi bir şey hariç tutulmalıdır.


0

Sadece açık olmak gerekirse, kullanıcı tarafından görülebilir bir sürüm numarasından bahsettiğinizi ve geliştirme aşamasında sürüm kontrolünden vazgeçmediğinizi farz ediyorum. (Geliştirme aşamasında sürüm kontrolüne ihtiyacınız olmadığını düşünüyorsanız, hatalıysanız sürüm kontrolüne ihtiyacınız vardır).

Tek barındırılan bir proje için kesinlikle gerekli değildir, çünkü herhangi bir sorunuz olursa, her zaman ana bilgisayara bakabilir ve gerçekten çalışanın ne olduğunu doğrulayabilirsiniz. Yine de hoş, çünkü bir ya da iki kez işe yarayabilir. İşe yarayıp yaramadığını düşünmek sana kalmış.

Çok barındırılan bir proje için, gerçekten isteğe bağlı değil. Farklı ana bilgisayarlar sonunda farklı sürümlerle sonuçlanacaktır ve bunları kullanıcı sonunda ayırt edebilmeniz gerekir.

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.