Dlaczego strony internetowe (nawet te) są czasami „nieobsługiwane”?

36

Osobiście nigdy tego nie zrobiłem. Nie rozumiem, dlaczego tak wiele witryn robi, jeśli programujesz na serwerze programistycznym, dlaczego miałbyś kiedykolwiek chcieć zamknąć witrynę produkcyjną?

Zawsze się nad tym zastanawiałem.

Co robią w tym czasie, co wymaga tego?

JD Isaacks
źródło
56
Zastępują lampy próżniowe w serwerach.
mipadi
11
Myślałem, że układają w stos kartki.
Christopher Mahan
5
Pamiętaj, że strona prawdopodobnie nie aktualizuje większości aktualizacji. Oczywiście widzisz tylko te, w których musi na chwilę przejść do trybu offline.
Dean Harding
4
Nikt nie zajął się względami bezpieczeństwa; może istnieć znany exploit (inaczej ktoś opublikował sposób wykorzystania określonej strony), a administratorzy przełączają go w tryb offline, aby ograniczyć nadużycia ze strony innych osób podczas naprawy.
Francisco Presencia
1
Przyszło mi do głowy zapytać: „Jakich strategii mogę użyć, aby osiągnąć zero (planowanych) przestojów w aplikacji internetowej opartej na bazie danych?” W szczególności aktualizacje wymagające zmian schematu db: softwareengineering.stackexchange.com/questions/336945/…
Stephen

Odpowiedzi:

59

Wielkim wyzwaniem dla wszystkiego, co ma dużą skalę, jest to, że jeśli ktoś w jakiś sposób zmienia schematy bazy danych, zwykle ma do uruchomienia kilka dużych, nieprzyjemnych skryptów konserwacyjnych.

Teraz może potrwać około sekundy, aby uruchomić się z zestawem danych programistycznych. Ale kiedy zaczniesz mierzyć dane w terabajtach i petabajtach, nawet dodanie pojedynczej kolumny do tabeli może potrwać kilka godzin.

Bez względu na to, jak szybkie i zautomatyzowane jest wdrożenie, nadal masz problemy z utrzymaniem danych. Jeśli planujesz naprawdę dobrze, możesz umieścić lustro witryny tylko do odczytu w trakcie procesu, ale dla wielu witryn tylko do odczytu jest bezcelowe i dlatego nie jest warte wysiłku.

Wyatt Barnett
źródło
3
+1 - przepełnienie stosu tylko do odczytu nie byłoby zbyt dobre. Nie będzie wiele
rzeczy
10
@glowcoder: Podczas wyszukiwania w Google można znaleźć SO odpowiedzi.
Donal Fellows,
@Donal to właśnie o to mi chodziło.
corsiKa
1
Google jest ogromny i na pewno ma ogromną bazę danych; jak to się stało, że nigdy nie widzę „z powodu konserwacji” w Google? (Strona główna Google.com)
alexyorke
7
@ alexy13 - Google jest w specjalnej kategorii skali, w której nie mogą mieć ani jednej bazy danych, ani nawet centrum danych, części systemu są zawsze wyłączone i napisali interfejs, aby to obsłużyć. Też to zrobiłbym, gdybyś mi dał taki czas i budżet na badania i rozwój.
Wyatt Barnett,
7

Istnieje wiele powodów, dla których warto zlikwidować witrynę w celu konserwacji. By wymienić tylko kilka:

  • Zmiany w bazie danych
  • Zmiany DAL
  • Aktualizowanie usług

Zasadniczo, jeśli witryna nie jest statyczna, podczas aktualizacji logiki chcesz ją usunąć, w przeciwnym razie osoby odwiedzające Twoją witrynę mogą otrzymać błędy lub nieoczekiwane zachowanie.

Ponadto, jeśli będziesz dotykać pliku web.config (w ASP.NET) dla swojej witryny, powinieneś go najpierw usunąć w celu konserwacji, ponieważ spowoduje to przerwanie sesji dla użytkowników. Gdyby więc znajdowali się w środku czegoś, straciliby to.

Tyanna
źródło
2
sesja zostanie utracona, jeśli zostanie użyty stan sesji „W toku”. Jeśli użyjesz stanu sesji poza procesem, sesja nie zostanie utracona, jeśli zmieniony zostanie plik web.config.
Anthony
2
Ostatni punkt jest prawdziwy tylko wtedy, gdy robisz sesje w trakcie procesu, które mam nadzieję, że nie jesteś na stronie produkcyjnej! Jest coś więcej niż tylko dotknięcie web.config, który usunie proces roboczy.
Dean Harding,
7

Cóż, to jest jakoś abstrakcyjne pytanie - widziałem nawet strony, które używały „Down for Maintenance” zamiast HTTP 500.

W przypadku witryn internetowych czasami trzeba dokonać aktualizacji. Na przykład, jeśli zmieniasz bazę danych, nie chcesz, aby inny użytkownik dotknął bazy danych w tym czasie. Jeśli baza danych jest w trybie offline, witryna musi być również z wdziękiem wyłączona, ponieważ wyświetlanie wyjątku SqlException nie jest zbyt przyjemne. Innym powodem jest awaria sprzętu lub awaria systemu (np. Wyciek zasobów), która wymaga ponownego uruchomienia aplikacji lub systemu.

Kiedyś uczestniczyłem w aktualizacji systemu bankowości internetowej w jednym z największych banków w moim kraju. Cały proces aktualizacji stron internetowych, warstwy środkowej i baz danych trwał trzy dni, gdy system był niedostępny dla klientów. Obejmował także pełną kopię zapasową wszystkiego, więc w przypadku awarii system można przywrócić do starej wersji.

Ladislav Mrnka
źródło
2
Czy HTTP 503 (zamiast 500) nie jest poprawnym kodem stanu dla „wyłączenia z powodu konserwacji”?
Nubok
4

Serwery potrzebują łatek do uruchomienia, aw wielu systemach operacyjnych łatki te wymagają ponownego uruchomienia. To jedna z kategorii przestojów. Wiele firm planuje ponowne uruchomienie z łat w celu skrócenia czasu użytkowania, np. W niedzielę rano. Jeśli nie ma łatek, i tak uruchamiają ponownie serwery w regularnym czasie konserwacji (jest to kac z NT4 dni, gdy niektóre liczniki przepełniają się co półtora tygodnia, więc ponowne uruchamianie co tydzień zapobiegało innym błędom).

Jedna firma, w której pracowałem, miała witrynę e-commerce pod koniec lat 90., która przynosiła ponad 1 000 000 USD sprzedaży miesięcznie. Ktoś awansował niewłaściwą tabelę podatków na serwer produkcyjnej bazy danych. Lekarstwem było przywrócenie serwera db z kopii zapasowej i zastosowanie transakcji od ostatniej kopii zapasowej. Zajęło to kilka godzin, podczas których strona była niedostępna do przyjmowania zamówień. Ponieważ część zamówień i statyczne broszury sprzedażowe działały w tej samej witrynie i były nierozłączne, obie musiały zejść.

W jednej firmie, w której pracowałem, wstawiono niewłaściwy tekst do niewłaściwego miejsca, a dyrektor generalny został odrzucony i zlecono usunięcie witryny „z powodu konserwacji”, podczas gdy układ i tekst zostały „naprawione”, a odpowiednia ofiara obwiniona i zwolniona.

Tangurena
źródło
Nawet to można złagodzić,
stosując
4

Podczas gdy inne odpowiedzi są poprawne, prawie zawsze można uniknąć przestojów przy użyciu odpowiednich architektur. Ale to ma swój koszt i ten koszt może nie być tego wart: godzina przestoju kosztuje amazona lub infrastrukturę stojącą za NASDAQ. Przepełnienie stosu ? Najprawdopodobniej nie tak bardzo.

Jak uniknąć przestojów:

  • zamykanie stron obsługujących sprzęt: jeśli masz serwery proxy przed swoją witryną, możesz zamiast tego przełączyć je w tryb offline bez wpływu na użytkownika
  • rekonfiguracja serwerów: tak samo jak powyżej
  • aktualizacja / zmiana danych w bazach danych: możesz ustawić swoją stronę w trybie tylko do odczytu itp.

Zasadniczo w architekturze warstwowej im bliżej „góry” jesteś, tym trudniej jest uniknąć przestojów, tak samo w przypadku stanu (serwer sieciowy vs baza danych).

David Cournapeau
źródło
4
Czy NASDAQ nie planuje około 14 godzin dziennie przestoju?
Peter Taylor
3

Witryna może planować regularne przestoje, nawet jeśli nie ma nic do zrobienia za każdym razem, gdy nadchodzi zaplanowane przestoje. Robiąc tak, dostają użytkowników używane do idei, że strona będzie się przez pewien okres czasu tak często tak, że gdy praca ma potrzeby, aby to zrobić, użytkownicy nie będą narzekać tyle.

Barry Brown
źródło
istnieje na to lekarstwo: obniżyć system reklamacji podczas przestoju :) W rzeczywistości widziałem, jak firmy to robią. Dobrym tego przykładem jest firma MMO, która zlikwidowała stronę internetową z ogłoszeniem o przestojach, a także fora wsparcia wraz z grą nieczynną z powodu konserwacji. Każdy, kto nie złapie ogłoszenia w ciągu kilku godzin, które upłynęły przed konserwacją, nigdy nie będzie wiedział, co się dzieje.
jwenting 27.04.11
3

Jest w tym także aspekt psychologiczny i marketingowy. W niektórych przypadkach (ośmielę się powiedzieć, że większość przypadków, ale nie jestem aż tak odważny * g *), czytanie „Brak obsługi technicznej” może również oznaczać „Serwer się zawiesił lub przestał działać z jakiegokolwiek innego powodu”.

Widziałem to dość często. Zwykle jako programista potrzebujesz „prawdziwych” komunikatów o błędach, mówiących w stylu „Ups, obecnie mamy do czynienia z dużym obciążeniem i nie wszystkie żądania można obsłużyć”, ale niektórzy marketingowcy powiedzą „koleś, nie możesz powiedz klientowi, że mamy problem. Powiedz mu, że planujemy konserwację - będzie wyglądać znacznie lepiej ”.

Dlatego „Przerwa na konserwację” często jest po prostu innym terminem „nieczynny”.

perdian
źródło
2

Serwer nie wymaga konserwacji w celu konserwacji. Możesz tego uniknąć w przypadku dowolnej skali, zmiany bazy danych, aktualizacji serwera itp.

Problem polega na tym, że tworzenie i utrzymanie systemu 0 przestojów na określoną skalę jest bardzo kosztowne. Potrzebujesz wszędzie nadmiarowości, wszędzie równoważenia obciążenia, replikacji danych, synchronizacji. To są trudne problemy.

Zasadniczo musisz osiągnąć poziom możliwości wypuszczenia Netflix Chaos Monkey w prod, aby upewnić się, że działa, nawet jeśli część twojego systemu jest zajęta aktualizacją lub po prostu nie jest zsynchronizowana. Z pewnością jest to wykonalne. Jest również bardzo drogi, wymaga dużo czasu i wielu ekspertów do pracy nad problemem.

Przełączenie witryny w tryb konserwacji może być środkiem, który wybierzesz, ponieważ nie chcesz tak dużo inwestować, aby uniknąć od czasu do czasu awarii witryny.

Ekonomia.

Oczywiście, jeśli wybierzesz drogę 0down, Twoja strona zyska więcej niż tylko dostępność, zyska również niezawodność, ponieważ te najlepsze praktyki służą obu celom.

e-satis
źródło
0

Nie rozumiem, dlaczego tak wiele witryn robi, jeśli programujesz na serwerze programistycznym, dlaczego miałbyś kiedykolwiek chcieć zamknąć witrynę produkcyjną?

Cholera się zdarza. Chyba że wykonujesz jakąś formę matematycznej weryfikacji twoich rezultatów ( i twoje specyfikacje są ważne ), bez względu na to, jak ostrożny jesteś, zdarza się gówno.

Są też chwile, w których może być konieczne wprowadzenie zmian w kluczowym elemencie infrastruktury (powiedzmy zmiana w strukturach bazy danych), które wymagają przestoju.

O ile nie rozwijasz systemu krytycznego (powiedzmy systemu pięć-dziewięć lub sześć-dziewięć ), odpowiedzialną i opłacalną rzeczą jest zbudowanie systemu z akceptacją przestojów jako części rzeczywistości.

Co więcej, posuwasz się dalej za tą zasadą, czyniąc przestoje łatwymi do zarządzania i podlegającymi harmonogramowi (lub przynajmniej wykrywalnym) z jasnym zrozumieniem i procedurą skutecznego odzyskiwania.

luis.espinal
źródło
1
Weryfikacja matematyczna też nie jest panaceum; czasami okazuje się, że to, co zweryfikowałeś, nie jest tym, co chciałeś zweryfikować.
Donal Fellows,
Prawdziwe. Ale potem twierdzę, że problemem nie jest formalna weryfikacja specyfikacji, ale walidacja tych specyfikacji. Jeśli twoje specyfikacje są niepoprawne, to oczywiście wszystko się z tym nie zgadza , ale walidacja specyfikacji ( „czy naprawdę budujemy właściwą rzecz potrzebną zamierzonemu użytkownikowi do zamierzonego celu” ), to nie jest przedmiotem weryfikacji (*) te specyfikacje, czy budujemy tę rzecz właściwie, czy można ją zbudować? ”), nieformalnie lub w inny sposób. Chyba powinienem był to zrobić (wrt do ważności specyfikacji).
luis.espinal
Nie twierdzę, że niesłusznie o tym wspominasz. Zaznaczam tylko, że istnieją ograniczenia tego, co może zrobić. Kiedyś pracowałem nad formalną weryfikacją, a wielkim problemem w tym czasie było to, jak prawidłowo rozwinąć specyfikacje , aby uwzględnić zmieniające się rozumienie wymagań. Ponieważ jest to przede wszystkim problem ludzki, po drugie problem inżynieryjny, a jedynie problem matematyczny, nie sądzę, aby został on w pełni rozwiązany.
Donal Fellows
O. Myślę, że wtedy lubimy myśleć. Zmieniające się wymagania (i wymagana walidacja) to pięty achillesowe metod formalnych. Ponieważ jest to zadanie twórcze (ze względu na ludzką naturę), nie sądzę, aby można je było rozwiązać, nie w sposób, w jaki chcieliby tego formaliści / puryści . Myślę, że była to jedna z nieudanych obietnic FM; zostały wyprzedane (mam na myśli, na przykład, formalne metody tworzenia stron internetowych ?) Specyfikacje muszą być poddane szczegółowej analizie i nie podlegają szybkim zmianom (i jest to typowe dla systemów krytycznych, a nie wysoce plastycznych). Późniejsze są raczej normą niż wyjątkiem.
luis.espinal
99% interfejsów użytkownika nie dotyczy metod formalnych, lecz psychologii stosowanej. Pozostałe dowody są oczywiste („nie blokuj interfejsu”), nawet jeśli nie zawsze są oczywiste, aby je udowodnić. Ale jeśli aplikacja internetowa została rozdzielona zgodnie z najlepszymi praktykami, wówczas metody formalne będą miały sens w warstwie metod biznesowych (także w warstwie przechowywania danych, ale zwykle tam standardowa rada „nie pisz własnej DB ”i tak ma zastosowanie. :-))
Donal Fellows
-2

Kiedyś nasza strona została zhakowana (stary serwer IIS6 i Windows 2003 kilka lat temu). pracując nad restauracją, umieściliśmy stronę „w trakcie konserwacji” na kilka godzin ....

Serega
źródło