Ръководство

Модернизация на стар софтуер без пълно пренаписване

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

Have a nice dayHave a nice day14 мин. четене
Модернизация на стар софтуер без пълно пренаписване

Почти всеки утвърден бизнес има такъв: парче софтуер, което всички тихо мразят. Бавно е, грозно е, половината екип знае заобиколен начин за бъга, който никой така и не поправи, а единственият човек, който го разбираше, напусна през 2019 г. Инстинктът винаги е един и същ — да го изгорим и да построим нов. И точно този инстинкт най-често е причината добри компании да загубят година и малко състояние за нищо.

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

Добрата новина е, че рязкото пренаписване почти никога не е единствената опция и рядко е най-добрата. Има по-спокоен начин за модернизация — поетапен, обратим и щадящ бизнеса, който все още трябва да печели пари, докато работите. Това е ръководство за този начин: как да разберете какво наистина се нуждае от поправка, как да заместите болезнените части, без да сваляте цялата система, и как да познаете кога пълното пренаписване наистина е правилният избор.

Защо рязкото пренаписване е толкова изкушаващо — и толкова опасно

Пълното пренаписване съблазнява, защото обещава чист лист. Никаква наследена бъркотия, никакви компромиси, свежа кодова база, изградена правилно с модерни инструменти. На бялата дъска изглежда очевидно. В действителност се записвате да изградите наново години натрупана бизнес логика — голяма част недокументирана, някоя живееща само в главите на хора, които вече ги няма — докато часовникът тиктака и сметките пристигат.

По-дълбокият капан е проблемът на паралелната вселена. През месеците или годините, които отнема изграждането на заместника, имате две системи: старата, която все още трябва да движи бизнеса, и новата, която още не е готова. Всяка промяна, от която бизнесът се нуждае, трябва да се прави два пъти, иначе новата система изостава от реалността още преди да стартира. Екипите изгарят, поддържайки и двете живи. И понеже на никого не е позволено да превключи, докато новата система не прави всичко, няма ранна победа, няма обратна връзка, няма доказателство, че работи — само дълго, тревожно чакане за един огромен ден на старт по принципа „всичко или нищо“.

Пренаписването иска от вас да заложите бизнеса на един-единствен ден на старт, години напред, за система, която още никой не е използвал. Това не е план — това е залог.
това казвам на всеки, посегнал към бутона за рестарт

Тук има добре позната индустриална мъдрост и тя е заслужена: втората система, голямото пренаписване, има навика да отнема три пъти повече от очакваното и да пристига с по-малко функции от това, което замества. Оценката не е грешна, защото хората са нехайни. Грешна е, защото в началото никой не може да види всички дребни неща, които старата система тихо прави правилно.

Стар дървен мост с няколко изтъркани дъски, които се сменят една по една със свежи нови, докато хора продължават да минават по него, в топъл плосък редакционен стил
Добрата модернизация изглежда като смяна на по една дъска наведнъж — мостът остава отворен през цялото време.

Какво всъщност означава „наследен“ (не става дума за възраст)

Хвърляме думата наследен, сякаш означава просто стар. Не е така. Много софтуер, който работи от десетилетие, е напълно наред — скучен, стабилен, платен, върши си работата. Само възрастта не е причина да докосвате каквото и да било. Най-скъпата грешка в цялата тази област е да модернизирате нещо, което тихо е работело, само защото е изглеждало остаряло.

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

Диагностицирайте, преди да докоснете каквото и да било

Преди да се пренапише и един ред, ви трябва честна карта на това къде наистина живее болката. През повечето време системата, която всички мразят, е 80% наред. Проблемът е концентриран на няколко конкретни места — един бавен екран, една счупена интеграция, един работен процес, който налага двойно въвеждане на данни — и тези няколко места генерират почти всички оплаквания. Намерете ги и сте намерили целия си проект.

Начинът да ги намерите не е първо технически одит — а разговор. Седнете с хората, които използват нещото всеки ден, и ги попитайте къде боли. Къде чакат? Какво пренаписват? Какво избягват, защото е мъчително? Къде държат частна таблица, за да заобиколят официалната система? Тези заобиколни решения са злато: всяко от тях е точна рентгенова снимка на проблем, който си струва да се поправи.

  • Екраните и стъпките, от които хората се оплакват най-много — не на теория, а в реалната им ежедневна работа.
  • Всяко място, където данните се въвеждат два пъти, защото две системи не си говорят.
  • Интеграциите, които се счупиха или никога не са съществували, налагайки ръчно копиране между инструментите.
  • Всичко, което само един човек знае как да оперира или поправя — вашите единични точки на отказ.
  • Частите, които наистина са наред, за да ги защитите и оставите на мира.
  • От какво ще се нуждае бизнесът догодина, в което текущата система просто не може да порасне.

Когато правите това честно, проектът обикновено се смалява. Собственикът, който е влязъл с думите „заменете всичко“, излиза, осъзнавайки, че трябва да поправи три неща. Това не е разочарование — облекчение е. Три поправими неща са проект, който можете да завършите това тримесечие. Пълната замяна е година, която може и да не преживеете.

Strangler подходът: заменяйте я парче по парче

Има модел за безопасното правене на това и той има леко мрачно, но запомнящо се име: strangler подходът, по името на удушаващата смокиня — лиана, която расте около дърво и постепенно превзема структурата му, докато накрая новият растеж застава самостоятелно, а старият ствол го няма. Приложена към софтуера, идеята е красиво практична: не заменяте старата система с една героична подмяна. Отглеждате новата около нея, парче по парче, докато не остане нищо от старата, от което някой да се нуждае.

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

Диаграма, показваща голяма сива кутия на наследен софтуер, която постепенно се заменя от по-малки ярки модерни модули, свързани чрез маршрутизиращ слой, по една секция наведнъж, в чист редакционен инфографичен стил
Всеки нов модул поема една задача; старата система се смалява, докато в нея не остане нищо важно.

Това, което прави този подход толкова по-безопасен от пренаписването, е, че всяка стъпка е малка, жива и обратима. Никога не работите на сляпо. Всяко ново парче бързо влиза в реална употреба, така че бързо разбирате дали наистина работи. Ако нещо се обърка, рискували сте само един модул, а не целия бизнес — и обикновено можете да се върнете на стария път, докато го поправяте. Получавате победи по пътя вместо един ужасяващ старт накрая. А бизнесът продължава да работи, нормално, през цялото време.

Как всъщност изглежда ритъмът

  1. 1
    Изберете най-болезненото, най-самостоятелно парче
    Искате силна болка и чисти граници — модул, който боли много и няма пръсти навсякъде другаде. Това е първата ви цел.
  2. 2
    Поставете тънък слой пред старата система
    Малък маршрутизиращ слой решава кои заявки отиват към старата система и кои към новото парче. Това е шевът, който прави всичко останало възможно.
  3. 3
    Изградете и пуснете само това едно парче
    Заменете един модул, дайте го в реални ръце и насочете към него само този дял от работата. Седмици, не години — а останалата част от системата не е помръднала.
  4. 4
    Стабилизирайте, после преминете към следващото парче
    Щом на новия модул се вярва, съответната част от старата система заспива. Повторете със следващото болезнено парче, учейки се в движение.
  5. 5
    Изведете старата система от употреба, когато е празна
    В крайна сметка наследената система не прави нищо, на което някой да разчита. Едва тогава я изключвате — тихо, без драма, защото всичко важно вече се е преместило.

Забележете кое е различното спрямо пренаписването: няма един-единствен ден на старт, от който да се страхувате. Няма паралелна вселена за поддръжка. Новата система е в продукция от третата седмица, изкарва си хляба и ви учи на неща, вместо да чака в лаборатория за старт, който все се отлага.

Понякога изобщо не е нужно да я заменяте

Преди да заменяте каквото и да било, си струва да попитате дали старата система се нуждае от замяна, или просто трябва да спре да бъде остров. Изненадващо много проблеми от типа „трябва ни нова система“ всъщност са проблеми „системите ни не си говорят“. Старият софтуер си върши работата добре — той просто седи в силоз, принуждавайки хората да пренасят данни навътре и навън на ръка.

В тези случаи най-евтината, най-бързата поправка не е нова система. Тя е мост. Обвивате стария софтуер с връзка — интеграция, която му позволява автоматично да обменя данни с другите ви инструменти — и модерен слой отгоре за частите, които хората наистина докосват. Остарелият двигател продължава да бръмчи отдолу; екипът получава чиста повърхност и край на копирането. Не е бляскаво, но често е най-високата възвръщаемост на евро в цялото начинание.

ПодходРискВреме до резултатКога пасва
Интегриране / свързванеНисъкДни–седмициСистемата работи, но живее в силоз
Нов интерфейс върху стар двигателНисъкСедмициЛогиката е наред, болката е в потребителското изживяване
Замяна парче по парчеСреденСедмици на парчеКонкретни модули ви спъват
Пълно изграждане нановоВисокМесеци и повечеОсновата наистина не може да ви понесе напред
Четири начина за модернизация, от най-лекото докосване до най-тежкото. Започнете отгоре и слизайте надолу само когато се налага.

Кога пълното пренаписване наистина е правилният избор

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

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

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

Спокоен собственик на малък бизнес и разработчик преглеждат заедно прост план на бюро, спокойно и уверено настроение, в топъл плосък редакционен стил
Най-добрите планове за модернизация изглеждат скучни нарочно — малки стъпки, винаги път назад, бизнесът никога не е изложен на риск.

Частта, която никой не споменава: всичко е най-вече за хората

Ето нещо, което техническите ръководства пропускат. Най-трудната част от модернизацията на стар софтуер обикновено не е кодът — а хората, които години наред са се адаптирали към него. Знаят му странностите. Имат мускулна памет за чудатите му преки пътища. Нов модул, който е обективно по-добър, пак може да се усеща по-зле през първите две седмици, просто защото е непознат. Ако пренебрегнете това, дори перфектна техническа миграция може да се провали.

Поетапният подход помага и тук, почти случайно. Понеже промяната пристига по малко парче наведнъж, хората я попиват постепенно, вместо да бъдат помолени да преучат всичко в един понеделник сутрин. Въведете ежедневните потребители рано. Оставете ги да оформят заместника, преди да е завършен. Екипът, който е помогнал да се проектира новият екран за фактуриране, ще го отстоява; екипът, на когото е стоварен, ще го мрази, дори ако е идентичен. Модернизацията е проект за управление на промяната, преоблечен в софтуерен костюм.

Имате система, която всички постоянно заплашват да заменят?

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

Вижте как подхождаме към софтуера по поръчка

Чести въпроси

По-евтино ли е да се пренапише стар софтуер, или да се модернизира?
Поетапната модернизация почти винаги е по-евтина на практика, защото пълното пренаписване обикновено надхвърля сериозно бюджета — то трябва да изгради наново години недокументирана бизнес логика, преди да даде каквато и да било стойност. Замяната на системата парче по парче или просто свързването и обновяването ѝ ви дава резултати за седмици и ви позволява да спрете да харчите в мига, в който болката е изчезнала. Пренаписването печели на цена само когато основата е толкова счупена, че кърпенето ѝ би струвало повече от започването наново.
Какво е strangler подходът с прости думи?
Това е начин да заменяте стара система постепенно, вместо наведнъж. Изграждате модерна версия на едно болезнено парче, насочвате само тази работа към него и оставяте всичко останало да работи на старата система. Когато това парче е стабилно, преминавате към следващото. С времето старата система прави все по-малко и по-малко, докато се изпразни и можете да я изключите — без страшен единствен ден на старт по пътя.
Можем ли да продължим да движим бизнеса, докато модернизираме?
Да — точно това е целта на поетапното правене. Понеже заменяте по едно малко парче наведнъж и държите старата система жива отдолу, нормалните операции продължават през цялото време. Всяка промяна е достатъчно малка, за да се тества в реална употреба и при нужда да се върне назад. Никога не достигате момент, в който бизнесът зависи от непроверено превключване по принципа „всичко или нищо“.
Как разбираме кои части да модернизираме първо?
Говорете с хората, които използват системата всеки ден, и потърсете заобиколните им решения — частните таблици, ръчното копиране, „тази част просто я правя на ръка“. Всяко заобиколно решение бележи реална, скъпа пропаст. Подредете ги по това колко често хапят и върхът на този списък е мястото, откъдето започвате. Обикновено това е шепа конкретни места, а не цялата система.
Кога пълното пренаписване наистина е правилният избор?
Когато технологията в основата е мъртва или неподдържана, когато бизнесът се е променил толкова много, че старият модел вече изобщо не пасва, или когато системата е толкова заплетена, че дори малки промени чупят несвързани неща — което също означава, че няма чисти шевове за замяна парче по парче. Когато две или три от тези са верни заедно, внимателното, постепенно изграждане наново става по-безопасната опция. Дори тогава държите старата система работеща и прехвърляте потребителите на малки групи, никога с един голям скок.
Have a nice day
Have a nice day
Редакция

Have a nice day е софтуерно студио, което помага на малките и средните предприятия да се дигитализират — автоматизация, изкуствен интелект и софтуер по поръчка, който работи в ежедневната дейност, а не само на слайдове.

Подходящи услуги