it-swarm.asia

Neden web siteleri (bu bile) bazen "Bakım için Kapalı"?

Ben şahsen bunu hiç yapmadım. Neden bu kadar çok sitenin işe yaradığını anlamıyorum, eğer bir geliştirme sunucusunda geliştirme yaparsanız neden üretim sitenizi kapatmanız gerekir?

Bunu hep merak ettim.

Bu süre zarfında ne yapıyorlar, bunu yapmak için ne gerekiyor?

36
JD Isaacks

Büyük ölçekli herhangi bir şey için büyük kicker, bir şekilde veritabanı şemalarını değiştiriyorsa, tipik olarak çalıştırılacak bazı büyük, kötü bakım komut dosyalarına sahip olmasıdır.

Şimdi, bunların geliştirme veri kümenizle çalışması bir saniye kadar sürebilir. Ancak terabayt ve petabayt cinsinden verileri ölçmeye başladığınızda, tabloya tek bir sütun eklemek bile saatler sürebilir.

Dolayısıyla, dağıtım ne kadar hızlı ve otomatik olursa olsun, yine de üstesinden gelmek için veri bakım sorunlarınız var. Gerçekten iyi planlıyorsanız, işlem yaparken sitenin salt okunur bir aynasını koyabilirsiniz, ancak birçok site için salt okunur anlamsızdır ve bu yüzden çabaya değmez.

59
Wyatt Barnett

Bir siteyi bakım için devre dışı bırakmak isteyebileceğiniz çeşitli nedenler vardır. Birkaç isim:

  • Veritabanı değişiklikleri
  • DAL değişiklikleri
  • Hizmetler güncelleniyor

Temel olarak, siteniz statik değilse, bir mantık güncellemesi yaparken onu kaldırmak istersiniz, aksi takdirde sitenize isabet eden kişiler hatalar veya beklenmedik davranışlar alabilir.

Ayrıca, siteniz için web.config dosyasına (ASP.NET'te) dokunacaksanız, kullanıcılar için oturumu havaya uçuracağından önce bakım için kaldırmalısınız. Böylece, eğer bir şeyin ortasında olsaydı, kaybolurdu.

7
Tyanna

Bu bir şekilde soyut bir soru - HTTP 500 yerine "Bakım için Down" kullanılan siteleri bile gördüm.

Web siteleri için bazen yükseltme yapmanız gerekebilir. Örneğin, veritabanını değiştiriyorsanız, başka bir kullanıcının veritabanına bu süre boyunca dokunmasını istemezsiniz. Veritabanı çevrimdışı ise, SqlException'ın gösterilmesi çok hoş olmadığı için site de zarif bir şekilde kapatılmalıdır. Başka bir neden, uygulama veya hatta sistemin yeniden başlatılmasını gerektiren bazı HW arızası veya sistem arızası (sızan kaynaklar gibi).

Bir keresinde ülkemdeki en büyük bankalardan birinde internet bankacılığı sisteminin geliştirilmesine katıldım. Yükseltme web siteleri, orta katman ve veritabanlarının tüm süreci, sistemin müşteriler için çevrimdışı olduğu üç gün sürdü. Ayrıca her şeyin tam yedeklemesini de içeriyordu, böylece arıza durumunda sistem eski sürüme geri döndürülebilir.

7
Ladislav Mrnka

Sunucular çalıştırmak için düzeltme eklerine ihtiyaç duyarlar ve birçok işletim sisteminde bu düzeltme ekleri yeniden başlatma gerektirir. Bu bir kesinti kategorisi. Birçok şirket Pazar sabahı gibi düşük kullanım süreleri için yamalardan yeniden başlatmalar planlamaktadır. Yama yoksa, sunucuları düzenli olarak planlanan bakım zamanında yeniden başlatırlar (bu, belirli sayaçların her hafta bir buçuktan taştığı NT4 günlerinden kalma, bu nedenle yeniden başlatma haftalık olarak diğer hataları önledi).

Çalıştığım bir şirketin 90'ların sonunda ayda 1.000.000 dolardan fazla satış getiren bir e-ticaret sitesi vardı. Birisi yanlış vergi tablosunu üretim veritabanı sunucusuna yükseltti. Tedavi, db sunucusunu yedekten geri yüklemek ve son yedeklemeden bu yana işlemleri uygulamaktı. Bu, birkaç saat sürdü ve bu sırada web sitesi sipariş almaya müsait değildi. Siparişler bölümü ve statik satış broşürleri aynı sitede çalıştıklarından ve ayrılmaz olduklarından, her ikisi de çökmek zorunda kaldı.

Çalıştığım bir şirkette yanlış yere yanlış metin eklenmiş ve CEO tersine çevrilmiş ve düzen ve metin "sabit" iken uygun kurban suçlanmış ve işten çıkarılmışken web sitesi "bakım" satırından çıkarılmıştır.

4
Tangurena

Diğer cevaplar doğru olmakla birlikte, doğru mimarileri kullanarak neredeyse her zaman kesinti yapılmasını önleyebilirsiniz. Ancak bunun bir maliyeti vardır ve bu maliyet buna değmeyebilir: Bir saatlik kesinti süresi Amazon veya NASDAQ'nın arkasındaki altyapıya çok fazla mal olur. Stackoverflow? Büyük olasılıkla çok fazla değil.

Duruş süreleri nasıl önlenir:

  • donanım sunum sayfalarını kapatma: web sitenizin önünde proxy'leriniz varsa, kullanıcı üzerinde herhangi bir etkisi olmadan bunları çevrimdışı duruma getirebilirsiniz.
  • sunucuları yeniden yapılandırma: yukarıdakiyle aynı
  • veritabanlarındaki verileri güncelleme/değiştirme: web sitenizi salt okunur moda, vb.

Genel olarak, katmanlı bir mimaride, "zirveye" ne kadar yakın olursanız, durgunluktan kaçınmak en zor hale gelir, durum bilgisi olan için de aynıdır (web sunucusu ve veritabanı).

4
David Cournapeau

Bunun psikolojik ve pazarlama tarafı da var. Bazı durumlarda (Vakaların çoğunu söylemeye cüret ediyorum ama ben cesur * g * değilim) "Bakım için aşağı" okumak da "Sunucu çöktü veya başka bir nedenle hizmet dışı kaldı" anlamına gelebilir.

Bunu oldukça sık gördüm. Normalde bir geliştirici olarak "Whoops, şu anda yüksek bir yük yaşıyoruz ve tüm istekler ele alınamıyor" gibi bir şey söyleyen "gerçek" bir hata mesajı isteyeceksiniz, ancak pazarlamadaki bazı insanlar size "duyamazsınız" müşteriye sorun yaşadığımızı söyleyin. Onlara planlı bakımda olduğumuzu söyleyin - bu çok daha iyi görünecek ".

Yani "bakım için kapalı" çoğu zaman "hizmet dışı" için başka bir terimdir.

3
perdian

Bir site, planlanan kapalı kalma süresinin her seferinde yapacak bir şey olmasa bile düzenli kapalı kalma süresi planlayabilir. Bunu yaparak, kullanıcıların sitenin her seferinde belirli bir süre için kapalı olacağı fikrine alıştırırlar, böylece iş yapar yapılması gerektiğinde, kullanıcılar çok fazla şikayet etmez .

3
Barry Brown

Hiçbir sunucu bakım için aşağı gitmek GEREKİR. Herhangi bir ölçekte, herhangi bir ölçekte, DB değişikliğinde, sunucu güncellemelerinde vb.

Sorun şu ki, belirli bir ölçekte 0 kesinti sisteminin oluşturulması ve bakımı çok maliyetlidir. Her yerde yedeklilik, her yerde yük dengeleme, veri çoğaltma, senkronizasyon gerekir. Bunlar zor problemler.

Temel olarak, sisteminizin bir kısmı güncellemeyle meşgul olsa veya senkronizasyondan çıkmış olsa bile çalıştığından emin olmak için Netflix Chaos Monkey'i prod olarak serbest bırakabilme seviyesine ulaşmanız gerekir. Bu kesinlikle yapılabilir. Ayrıca çok pahalıdır, sorun üzerinde çalışmak için çok zaman ve birçok uzman gerektirir.

Bir siteyi bakım moduna getirmek, seçtiğiniz bir orta yol olabilir, çünkü sitenizi kısa bir süre için bir süre aşağı çekmekten kaçınmak için çok fazla yatırım yapmak istemezsiniz.

Ekonomi.

Tabii ki, 0down zaman yolunu seçerseniz, siteniz sadece kullanılabilirlikten daha fazla kazanacak, aynı zamanda güvenilirlik de kazanacaktır, çünkü bu en iyi uygulamalar her iki amaca da hizmet eder.

2
e-satis

Neden bu kadar çok sitenin işe yaradığını anlamıyorum, eğer bir geliştirme sunucusunda geliştirme yaparsanız neden üretim sitenizi kapatmanız gerekir?

Kahretsin olur. Teslimatlarınızın bir tür matematiksel doğrulamasını ( yapmadığınız ve spesifikasyonlarınız geçerli olmadığı sürece ), ne kadar dikkatli olursanız olun, bok olur.

Ayrıca, altyapınızın önemli bir parçasında (örneğin, veritabanı yapılarınızda bir değişiklik) bir kesinti süresi gerektiren bir değişiklik yapmanız gerekebileceği zamanlar vardır.

Kritik bir sistem geliştirmediğiniz sürece (diyelim ki beş-dokuz veya altı-dokuz sistem), yapılacak sorumlu ve uygun maliyetli şey, çalışmama sürelerini kısmen kabul ederek bir sistem kurmaktır. gerçeklik.

Ayrıca, etkili geri kazanım için açık bir anlayış ve prosedürle zamanları yönetilebilir ve planlamaya uygun hale getirerek (veya en azından tespit edilebilir) yaparak bu prensibi daha ileri götürürsünüz.

0
luis.espinal