Чому веб-сайти (навіть цей) іноді "вниз для обслуговування"?


36

Я особисто ніколи цього не робив. Я не розумію, чому так багато сайтів, якщо ви займаєтеся розробкою на сервері розробок, чому б вам коли-небудь потрібно було закрити свій виробничий сайт?

Я завжди цікавився цим.

Що вони роблять за цей час, для чого потрібно це робити?


56
Вони замінюють вакуумні трубки на серверах.
mipadi

11
Я подумав, що вони складають перфокарти.
Крістофер Махан

5
Майте на увазі, що веб-сайт, ймовірно, не відповідає більшості оновлень. Очевидно, ви бачите лише ті, де насправді потрібно на деякий час перейти в офлайн.
Дін Хардінг

4
Ніхто не звертався з причини безпеки; може бути відомий подвиг (він же публікував, як використовувати певний веб-сайт), і адміністратори приймають його в автономному режимі, щоб пом'якшити зловживання з боку інших сторін під час виправлення.
Francisco Presencia

1
У мене виникає питання "Які стратегії я можу використовувати, щоб досягти нульового (планового) простою в веб-додатку, що підтримується базами даних?" Спеціально оновлення, які потребують змін схеми db: softwareengineering.stackexchange.com/questions/336945/…
Stephen

Відповіді:


59

Великий запуск для будь-якого великого масштабу полягає в тому, що якщо хтось змінює схеми баз даних, для запуску зазвичай існують декілька великих, неприємних сценаріїв обслуговування.

Тепер це може зайняти секунду або близько того, щоб запустити ваш набір даних про розробку. Але коли ви починаєте вимірювати дані в терабайт і петабайт, навіть додавання одного стовпчика до таблиці може зайняти години.

Тож незалежно від того, наскільки швидким та автоматизованим є розгортання, у вас все ще виникають проблеми зі збереженням даних. Якщо ви плануєте дуже добре, ви можете встановити дзеркало для читання сайту, поки ви проходите цей процес, але для багатьох сайтів лише для читання безглуздо і, таким чином, не варто докладати зусиль.


3
+1 - переповнення стека лише для читання було б не дуже добре. Це не так багато, чого ви не зможете знайти в Google :)
corsiKa

10
@glowcoder: під час пошуку в Google ви знайдете відповіді.
Стипендіати Дональ

@Donal це був саме мій погляд.
corsiKa

1
Google є масовим і напевно має велику базу даних; чому так, що я ніколи не бачу "вниз для обслуговування" для Google? (Домашня сторінка Google.com)
alexyorke

7
@ alexy13 - google знаходиться в спеціальній категорії масштабу, де вони не можуть мати єдиної бази даних або навіть центру обробки даних, частини системи завжди вниз, і вони написали передній кінець для обробки. Я також хотів би, якби ви передали мені такий час і бюджет на НДДКР.
Wyatt Barnett

7

Існує низка причин, чому ви можете зняти сайт для обслуговування. Назвати декілька:

  • Зміни бази даних
  • Зміни DAL
  • Оновлення послуг

Якщо ваш сайт не є статичним, під час оновлення логіки ви хочете зняти його, інакше люди, які потрапляють на ваш сайт, можуть отримати помилки або несподівану поведінку.

Крім того, якщо ви торкаєтесь web.config (в ASP.NET) для свого сайту, вам слід спершу зняти його для обслуговування, оскільки це вибухне сеансом для користувачів. Таким чином, якби вони опинилися посеред чогось, це було б втрачено.


2
сеанс буде втрачено, якщо використовується стан сеансу "В процесі". Якщо ви використовуєте стан поза сеансом процесу, сеанс не буде втрачено, якщо змінено web.config.
Ентоні

2
Останній пункт справедливий лише в тому випадку, якщо ви проводите сеанси в процесі роботи, які, сподіваюся, ви не на виробничому майданчику! Існує більше, ніж просто торкатися до web.config, що призведе до зменшення робочого процесу.
Дін Хардінг

7

Ну це якимось абстрактне питання - я навіть бачив сайти, які замість HTTP 500 використовували "Вниз для обслуговування".

Для веб-сайтів іноді потрібно зробити оновлення. Наприклад, якщо ви змінюєте базу даних, ви не хочете, щоб за цей час жоден інший користувач торкався цієї бази даних. Якщо база даних офлайн, сайт також повинен бути вимкнено, оскільки показ SqlException не дуже приємний. Іншою причиною є певна несправність HW або збій системи (наприклад, витоку ресурсів), що вимагає додатків або навіть перезавантаження системи.

Одного разу я брав участь у вдосконаленні системи Інтернет-банкінгу в одному з найбільших банків моєї країни. Весь процес оновлення веб-сайтів, середнього рівня та баз даних займав три дні, коли система була офлайн для клієнтів. Він також включав повне резервне копіювання всього, щоб у разі відмови систему можна було повернути до старої версії.


2
Хіба HTTP 503 (замість 500) не є правильним кодом статусу для "не для обслуговування"?
Nubok

4

Сервери потребують запуску патчів, а для багатьох операційних систем ці патчі потребують перезавантаження. Так що це одна категорія простою. Багато компаній планують перезавантажити з патчів для низького часу використання, наприклад, у неділю вранці. Якщо патчів немає, вони все одно перезавантажують сервери в регулярно запланований час технічного обслуговування (це похмілля від NT4 днів, коли певні лічильники переповнювались кожні півтора тижні, тому перезавантаження щотижня запобігало виникненню інших помилок).

Одна компанія, над якою я працював, ще в кінці 90-х років створила сайт електронної комерції, який приносив більше 1 000 000 доларів продажів на місяць. Хтось рекламував неправильну таблицю податків на сервері виробничої бази даних. Ліком було відновити сервер db з резервного копіювання та застосувати транзакції з часу останньої резервної копії. Це зайняло кілька годин, протягом яких веб-сайт був недоступний для прийому замовлень. Оскільки порція замовлень та статичні брошури з продажу товарів працювали на одному сайті та були нероздільними, обидва повинні були зійти.

В одній компанії, над якою я працював, був неправильний текст, вставлений у неправильне місце, і генеральний директор перекинувся, і веб-сайт був знятий "для обслуговування", в той час як макет і текст були "виправлені", а відповідний потерпілий звинуватив і звільнив.


Навіть це можна пом'якшити при правильному балансуванні навантаження
Voycey

4

Хоча інші відповіді правильні, ви завжди можете уникнути простоїв, використовуючи правильну архітектуру. Але це коштує, і ця вартість може не варто: година простою коштує амазону чи інфраструктуру, що стоїть за NASDAQ, багато. Переповнення стека ? Швидше за все, не так вже й багато.

Як уникнути простоїв:

  • вимкнення сторінок, що обслуговують обладнання: якщо у вас є проксі-сервери перед веб-сайтом, ви можете замість цього розмістити їх у режимі офлайн, не впливаючи на користувача
  • перенастроювання серверів: те саме, що вище
  • оновлення / зміна даних у базах даних: ви можете перевести веб-сайт у режим лише для читання тощо ...

Взагалі, в шаруватій архітектурі, чим ближче до "вершини" ви, тим важче уникнути простоїв, те саме, що і для статей (веб-сервер проти бази даних).


4
Хіба NASDAQ не має близько 14 годин на день запланованого простою?
Пітер Тейлор

3

Сайт може запланувати регулярний час простою, навіть якщо нічого не робити щоразу, коли запланований час простою. Роблячи таким чином, вони отримують користувачі звикли до того , що сайт буде вниз в протягом певної кількості часу кожен так часто , так що , коли робота дійсно потрібно зробити, користувачі не скаржаться так багато.


є ліки від цього: збийте систему скарг під час простою :) Я насправді бачив, що компанії роблять це. Компанія MMO, яка знімає веб-сайт, на якому розміщено оголошення про час простою, а також форуми підтримки разом із грою, яка не працює на технічному обслуговуванні, є хорошим прикладом цього. Той, хто не зловив оголошення протягом кількох годин, до яких він був до технічного обслуговування, ніколи не дізнається, що відбувається.
jwenting

3

У цьому також є психологічна та маркетингова сторона. У деяких випадках (я наважуся сказати більшість випадків, але я не такий сміливий * g *) читання "Вниз для обслуговування" також може означати "Сервер вийшов з ладу або вийшов з експлуатації з будь-якої іншої причини".

Я бачив це досить часто. Зазвичай, як розробник, ви хочете "справжніх" повідомлень про помилки, які говорять приблизно так: "На жаль, зараз ми відчуваємо високе завантаження, і не всі запити можуть бути оброблені", але деякі люди з маркетингу скажуть вам "чувак, ви не можете скажіть замовнику, що у нас є проблеми. Скажіть їм, що ми проводимо планове обслуговування - це буде виглядати набагато краще ".

Тож "Вниз для технічного обслуговування" часто є лише черговим терміном "поза експлуатацією".


2

Жоден сервер НЕ ПОТРІБНІ, щоб перейти на технічне обслуговування. Ви можете уникати цього будь-чого, будь-якого масштабу, зміни БД, оновлення сервера тощо.

Проблема полягає в тому, що створити та підтримувати систему для простоїв у певному масштабі дуже дорого. Вам потрібна надмірність скрізь, збалансування завантаження скрізь, реплікація даних, синхронізація. Це важкі проблеми.

По суті, вам потрібно досягти рівня можливості випустити Netflix Chaos Monkey в prod, щоб бути впевненим, що він працює, навіть якщо частина вашої системи зайнята оновленням або просто не синхронізована. Це, безумовно, можливо. Це також дуже дорого, вимагає багато часу і багато експертів для роботи над проблемою.

Переміщення сайту в режимі обслуговування може бути обраним вами посередництвом, тому що ви не хочете вкладати стільки коштів, щоб уникнути того, щоб раз на час забирати сайт.

Економіка.

Звичайно, якщо ви обираєте дорогу часу вниз вниз, ваш сайт отримає більше, ніж просто доступність, він також отримає надійність, оскільки ці найкращі практики служать обом цілям.


0

Я не розумію, чому так багато сайтів, якщо ви займаєтеся розробкою на сервері розробок, чому б вам коли-небудь потрібно було закрити свій виробничий сайт?

Лайно буває. Якщо ви не робите якоїсь форми математичної перевірки своїх результатів ( і ваші характеристики є дійсними ), як би ви не були обережні, лайно трапляється.

Крім того, бувають випадки, коли вам доведеться змінити ключовий елемент вашої інфраструктури (скажімо, зміни в структурі вашої бази даних), які вимагають простою.

Якщо ви не розробляєте критичну систему (скажімо, систему п’ять дев'ять чи шість дев'ять ), відповідальною та економічно вигідною справою є побудова системи з прийняттям простоїв як частини реальності.

Крім того, ви переймете цей принцип далі, зробивши керований час керованим і придатним до планування (або, принаймні, виявленого) з чітким розумінням та процедурою ефективного відновлення.


1
Математична перевірка також не є панацеєю; іноді ви виявляєте, що те, що ви перевірили, - це не те, що хотіли підтвердити.
стипендіати

Правда. Але тоді я заперечую, що проблема полягає не в офіційній верифікації специфікацій, а в валідації цих специфікацій. Якщо ваші характеристики недійсні, то, очевидно, все відпаде звідти, але перевірка специфікацій ( "чи ми дійсно будуємо потрібну річ, потрібну передбачуваному користувачеві за призначенням" ), це не фокус перевірки (* "дано ці характеристики, ми будуємо цю річ правильно, чи її можна побудувати? "), неофіційну чи іншу. Я думаю, я мав би поставити застереження щодо цього (wrt до дійсності специфікацій)
luis.espinal

Я не стверджую, що ви неправильно це згадуєте. Я просто зазначаю, що існують межі того, що він може зробити. Раніше я працював над офіційною верифікацією, і великою проблемою в той час було те, як правильно розробляти технічні характеристики , щоб врахувати зміни розуміння вимог. Оскільки це в першу чергу людська проблема, в другому випадку інженерна проблема, і лише третє, це математична проблема, я не думаю, що вона ще повністю вирішена.
Стипендіати Дональ

Ой. Я думаю, тоді ми подібні до думки. Зміна вимог (і валідація запитів) - це ахілесові підбори формальних методів. Оскільки це творче завдання (в силу його людської природи), я не вважаю, що воно вирішиме, не так, як формалісти / пуристи хотіли б. Я думаю, що це було одним із провальних обіцянок ФМ; вони перепродавались (я маю на увазі, наприклад, формальні методи веб-розробки ?). Технічні характеристики повинні бути ретельно вивчені та не піддаватися швидким змінам (і це характерно для критичних систем, а не сильно пружних). Пізніші - це норма, а не виняток.
luis.espinal

99% користувальницьких інтерфейсів пов'язані не з формальними методами, а з прикладною психологією. Решта доказів очевидні ("не тупик інтерфейсу користувача"), навіть якщо не завжди очевидні докази. Але якщо ви розділили веб-перелік відповідно до кращих практик, то формальні методи матимуть багато сенсу на рівні бізнес-методів (також у шарі зберігання даних, але зазвичай це стандартна порада "не пишіть власні" БД "все одно застосовується. :-))
Дональні стипендіати

-2

Колись наш веб-сайт був зламаний (старий сервер IIS6 та Windows 2003 кілька років тому). поки ми працювали над реставрацією, ми поміщали сторінку "на обслуговування" на кілька годин ....

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.