Какъв вид предпазни мерки използвате, за да избегнете случайно извършване на неволни промени във вашата производствена среда?

Тъй като нямаме добра среда за подготовка, често трябва да отстраняваме грешки в нашите производствени системи. Имаме сървъри за уеб, приложения и бази данни.

Какъв вид предпазни мерки използвате, за да избегнете случайно извършване на неволни промени във вашата производствена среда, когато правите това?


РЕДАКТИРАНЕ:

Приложението е много сложно B2B вертикално уеб приложение. Включени са много данни. Някои таблици имат близо 100 милиона записа.


РЕДАКТИРАНЕ:

Сценичната среда, която имаме, няма капацитета да отразява продукцията. Включени са и стотици гигабайти файлове с данни, освен действителните данни от базата данни.


РЕДАКТИРАНЕ:

Използваме контрол на източника за кода, но не и за съхранените процедури. Има някои стари съхранени процедури в контрола на източника, но никой вече не ги актуализира.

Основните проблеми са базата данни и данните във файловата система.

Между другото, аз съм консултант в тази компания, а не действителен служител.


person TWA    schedule 05.06.2009    source източник
comment
Когато казвате производствена среда, какво имате предвид? Кутия за уеб услуги? SQL кутия? Уеб сайт?   -  person Joseph    schedule 05.06.2009
comment
@Joseph - Актуализира въпроса   -  person TWA    schedule 05.06.2009


Отговори (10)


Най-директният отговор е: „Недей така“.

person GEOCHET    schedule 05.06.2009
comment
Да, съгласен съм, но компанията няма да инвестира ресурси за добра среда на сцената. - person TWA; 05.06.2009
comment
@TwistedAphid: Тогава твоя работа е да се увериш, че го правят. Те ще похарчат парите по един или друг начин. Може и преди бедствието. - person GEOCHET; 05.06.2009
comment
@TwistedAphid - по някакъв начин трябва да се уверите, че разбират рисковете, за предпочитане в писмен вид. - person Otávio Décio; 05.06.2009
comment
@Rich B, ocdecio - Опитваме се да им кажем за риска и наскоро дори имахме загуба на данни поради този проблем. Те платиха около 20 хиляди долара на компания за възстановяване на данни, за да възстанови файл с база данни на SQL сървър. Просто не можем да ги накараме да разберат стойността на превенцията. - person TWA; 05.06.2009
comment
Работиш за много глупава компания. Предлагам да намерите друг, който няма да им издуха крака при всяка възможност. - person TheTXI; 05.06.2009
comment
@TwistedAphid: Време е да потърсите нова работа. - person GEOCHET; 05.06.2009
comment
Ако сте консултант, може би е време да затворите устата си и да вземете чековете си всеки път, когато изгори. - person GEOCHET; 05.06.2009
comment
@Rich B - Може би си прав. Просто мразя да виждам подобни неща да се случват. Това наистина се отрази на морала на разработчиците тук. В крайна сметка те понасят голяма част от болката от това, че трябва да се борят, за да поправят щетите, когато това се случи. Поне ми плащат на час. :) - person TWA; 05.06.2009
comment
$20 000 е прилична сума (2-3TB) Dell SAN съхранение. Това е доста солидна цена за еднократно възстановяване при повреда. - person Chris K; 05.06.2009

контрол на източника. нищо като връщане назад, когато нещата са непоправими. Също така разликата може да ви помогне да възпроизведете промените в други производствени системи.

person Jimmy    schedule 05.06.2009
comment
Ако вече нямат това, TwistedAphid трябва да си намери нова работа възможно най-скоро. - person David Thornley; 05.06.2009
comment
добре, това беше по-скоро напомняне, че можете да поддържате производствените си файлове с версии, отколкото да използвате контрола на източника като цяло - person Jimmy; 05.06.2009
comment
+1 за запазване на файлове с производствени данни в контрол на източника. Често пренебрегвана най-добра практика. - person DarkSquid; 05.06.2009
comment
Не ви помага, ако промените ви са грешни и са провалили безброй милиони записи. И аз НЕ съм източник, контролиращ 200GB SQL експорт. :-) - person Chris K; 05.06.2009

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

Запазваме предишните производствени версии за резервни версии в случай на проблеми.

Ако нещата се повредят (което не трябва да се случва често с подходяща процедура за тестване и управлявани версии), тогава можем или да върнем обратно, или да поправим актуална корекция. Често, когато нещата са повредени на живо и корекцията е малка, можем да коригираме актуално, след което да преместим корекцията за тестване, за да направим правилен тест.

Независимо от това, понякога нещата се получават...

person JeeBee    schedule 05.06.2009

позволявайте достъп за запис само на определени акаунти, така че трябва да влезете по друг начин, за да направите промяна

на уеб сървър, има две структури на директории, които се отразяват една на друга, едната, в която само един ID може да пише, другата промеждутъчна директория, всеки може да пише.

на сървър на база данни, има една производствена база данни, където само един ID може да пише, има етапна база данни, където всеки може да пише. базовата база данни може да има нощно архивиране, възстановено към нея.

ОБАЧЕ, ако имате грешна заявка или някакъв проблем с ресурсите във вашата етапна система, ресурсите ще бъдат изтеглени от производството и машината може да увисне.

person KM.    schedule 05.06.2009

За уеб сървъри и сървъри за приложения бих се опитал да копирам средата на ново място (но в същата среда) и ще накарам засегнатите хора да възпроизведат поведение върху копието. Това поне ще ви даде известно ниво на отделяне от случайно прецакване със 100% от вашите клиенти.

За сървъри на бази данни бих конфигурирал потребителски акаунти в производствената система, за да им дам права само за четене.

person Joseph    schedule 05.06.2009

Акаунти само за четене/гости. Сериозно. Това е същата причина, поради която не винаги влизате като root или администратор.

person Alex Beardsley    schedule 05.06.2009
comment
Обзалагам се, че мога да стартирам малко SQL с акаунта само за четене, за да спра на колене вашата производствена среда. ;) - person tom; 05.06.2009
comment
Това няма да защити нищо. - person GEOCHET; 05.06.2009
comment
Винаги влизам като root, защото никога не правя грешки. - person Pesto; 05.06.2009
comment
@Nalandial: Ще го направя вместо него: ако те имат разрешенията, необходими за отстраняване на грешки в производствена среда, тогава те имат разрешенията, необходими за неволно унищожаване на тази производствена среда. - person Pesto; 06.06.2009

Това е трудно нещо и върви с територията на „без сценична среда“.

По много причини е най-добре да имате специален (дубликат) на PROD, който можете да използвате за етапно внедряване на... и за отстраняване на грешки, но знам, че понякога, когато започвате, това не работи толкова бързо или старателно, както бихме искали.

Едно нещо, което видях да работи, е използването на VM: освен средата за отстраняване на грешки, можете да създадете mini-PROD във VM и да го използвате за отстраняване на грешки. Това може да не е практично предвид вида на приложението, което разработвате, така че допълнителни подробности в тази област биха били полезни.

Що се отнася до избягването на промени в PROD по време на отстраняване на грешки: има ли причина да трябва да промените нещо, за да улесните отстраняването на грешки? Ако е така, може би си струва да потърсите решение по друг начин.

person DarkSquid    schedule 05.06.2009
comment
Понякога, за да пресъздадем проблеми, трябва да поставим тестови поръчки (много сложна система) и след това да бъркаме в базата данни за отстраняване на грешки. - person TWA; 05.06.2009
comment
Това е идеалният момент да използвате VM (или две: една за вашето приложение и една за DB). Ако е необходимо, можете да заснемете сесията/входа от PROD и да възпроизведете отново срещу вашата VM. - person DarkSquid; 05.06.2009

Контролът на версиите е изключително полезен за контролиране на промените в производствените среди - просто направете вашата производствена среда работно копие на съответната директория или директории от хранилището. Когато пуснете актуализация, вашата система за контрол на източника гарантира, че ВСИЧКИ променени файлове ще бъдат копирани. Когато актуализация повреди нещо, можете да върнете производственото работно копие обратно към последната ревизия, която не е повредена. Също така можете да проверите вашата производствена тоалетна от етикет вместо от багажника; по този начин можете да решите кои ревизии на хранилището да приложите към производствената среда, като коригирате етикета.

Ако не сте запознати с концепциите на системите за контрол на версиите, бих ви посъветвал да направите малко проучване. Те са концептуално сложни, но невероятно полезни и мощни. Статията в Уикипедия е добро място за начало: http://en.wikipedia.org/wiki/Revision_control

person The Digital Gabeg    schedule 05.06.2009
comment
Великолепна идея. Освен това, ето сценария: хей, забелязахме, че тази промяна в SP_doSomething причини всички тези 20 000 транзакции да са грешни по случаен начин, но имаме 20 000 000 транзакции в системата, така че не можем да върнем обратно. ОТ ТОВА контролът на версиите не може да ви защити. - person Chris K; 05.06.2009

Съжалявам, трябва да имате сценична среда. Това няма как да се заобиколи. Ако това означава, че трябва да извадите размера на вашите набори от данни, тогава това е, което трябва да направите. Използвайте VMware и VMware конвертор, за да импортирате производствените системи по време на периоди на спад, ако ги имате (това е многочасов процес, така че може би не е практично).

Има определен клас проблеми, които не можете да разрешите, без да имате пълен достъп до производствени DB (или копие), производителността е един от тях. Но наистина трябва да изградите среда за етап, дори ако е на нечия настолна машина с намален набор от данни.

Като оставим това настрана, трябваше да живея живота си с няколко от тях в миналото и наистина не можете да направите нищо, освен много резервни копия. Всяка промяна, която правите, трябва да бъде предшествана от инкрементално архивиране. По този начин, ако сте fubar'd нещо, сумата, която сте загубили не е значителна. SQL сървърът може да прави диференциални архиви, които ограничават количеството дисково пространство, използвано за архивиране. Oracle също може.

person Chris K    schedule 05.06.2009

В случай, че наистина нямате друг избор и е вероятно ситуацията да е хронична... помислете за добавяне на някакъв начин към данните на приложението (файлове или база данни), за да маркирате набор от данни като „моля боже, не променяйте действително активно производствено състояние с тези данни“, комбинирано с изхвърляния на данни в критични позиции в процес, когато този флаг е активиран, може да сте в състояние да упражнявате по-голямата част от производствената логика, без действително да се действа върху данните.

person jerryjvl    schedule 05.06.2009