Здраво! Моје име је Пасха Цхерниак, ја сам водећи програмер у КИВИ, и данас желим да причам о неизбежном. Абоут Легаци.
Почнимо са питањем: шта је Легаци услуга? Да ли је застарела услуга услуга коју програмер није додирнуо недељу дана/месеца/године? Или је то сервис који је написао мање искусан програмер, на пример, конкретно ви, али пре годину дана? А сада сте хладнији и искуснији. Или је Легаци услуга услуга за коју сте одлучили да више никада не користите и полако спремате замену за њу? У сваком случају, оставити такву услугу без надзора и не ажурирати је темпирана бомба која може касније експлодирати.
Пре него што пређемо на то како ми у КИВИ радимо са нашим Легаци услугама, рећи ћу вам како смо увели ред у услуге у Новчанику. Већ две године сам одговоран за његов учинак. Ако постоји неки проблем, увек ме прво зову. Обично немам храбрости да зовем неког другог у 11 сата, па сам морао да седнем и да се осврнем на све услуге на нашем домену.
Али ја, као и свака особа, волим да спавам ноћу, па сам покушао да се изборим са експлоатацијом: „Момци, зашто ме зовете? На шта сам добио прилично лаконски одговор типа „Ко други?“ Јер ја поправљам услуге, а момци једноставно не знају кога да позову.
Због тога смо на једној од ретроспектива бекенд тима Валлет-а одлучили да треба да направимо таблу са списком наших услуга, микросервиса и монолита новчаника и одговорних за њих. Знакови су генерално корисни, у разумним границама.
Поред информација ко је за шта одговоран, дали су се одговори на питања: ко је власник сервиса, ко је одговоран за његов развој, архитектуру и животни циклус. Људи одговорни за ову услугу су људи који то могу поправити ако се нешто деси. Власник сервиса има право да остави +2 у урезивању, одговорни такође морају бити присутни на прегледу пре него што овај сервис прихвати ново урезивање.
Како је време одмицало, почеле су да се примењују нове праксе, на пример, миграција на Кубернетес, свакакве провере стилова, спотбугови, ктлинт, присуство логова у Кибани, услуге аутооткривања уместо директног навођења адреса и друге корисне ствари. И свуда нам је наш сто омогућавао да задржимо релевантност наших услуга. За нас је ово нека врста контролне листе која каже да овај сервис то може, али још увек не може, али смо кренули даље, схвативши да нам недостају информације о нашим услугама, које пратимо, где се налазе извори услуга. где се задаци монтаже покрећу у ТеамЦити-у, како су распоређени, где се чувају извори енд2енд тестова, фотографије са сесија дотеривања о архитектури, о донетим одлукама. У идеалном случају, волео бих да све ове информације негде леже и буду при руци када је потребно. Стога је наш знак постао полазна тачка за тражење информација.
Али КИВИ, иако задржава дух стартапа, је велика компанија. Имамо већ 12 година, а тимови се мењају: људи одлазе, људи долазе, формирају се нови тимови. И открили смо неколико сервиса на нашем домену које смо наследили. Неки су дошли од програмера из других тимова, неки су једноставно некако индиректно повезани са Новчаником, тако да сада имамо услугу на нашем билансу стања. Разумевање шта и како функционише - зашто? Услуга функционише, а ми имамо карактеристике производа које свакако треба побољшати.
Како се то дешава
Али у неком тренутку откријемо да сервис престаје да обавља своју функцију, да је нешто покварено - шта учинити у таквој ситуацији? Услуга је једноставно престала да ради. Уопште. И за ово смо сазнали, прво, случајно, а друго, шест месеци касније. Дешава се. Једино што смо знали је на којим виртуелним машинама ће услуга бити распоређена, где се налазе њени извори, и то је све. Урадимо гит клон и заронимо у ум особе која је ово написала пре неколико година, али шта видимо? Ништа од Спринг Боот-а који нам је познат, иако смо на све навикли, имамо пун стацк и све то. Можда тамо постоји Спринг Фрамеворк? Али не.
Момак који је све ово написао је био тежак и све је написао на чистој Јави. Не постоје уобичајени алати за програмера, и намеће се идеја: све ово треба да препишемо. Имамо микросервисе, а из сваког тостера долази уобичајено „Момци, микросервис је оно што вам треба!“ Ако изненада нешто крене наопако, можете мирно узети било који језик и све ће бити у реду.
Ствар је у томе што сада немамо купца који је одговоран за ову услугу. Какве је пословне захтеве имао, шта треба да ради ова служба? А услуга је чврсто интегрисана у ваше пословне процесе.
Сада ми реците, колико је лако преписати услугу без познавања њених пословних захтева? Није јасно како се сервис евидентира да ли постоје метрике. Шта су они, ако их има, још је непознато. И у исто време, услуга садржи огроман број класа неразумљиве пословне логике. Нешто је укључено у неку врсту базе података о којој такође не знамо ништа.
Где почети?
Са најлогичније тачке - доступност тестова. Обично је ту бар нека логика записана и можете извући закључке о томе шта се дешава. Сада је ТДД модеран, али видимо да је пре 5 година све било скоро исто као и сада: тестова јединица скоро да нема и неће нам ништа рећи. Па, осим можда неке провере, како је неки кмл потписан неким прилагођеним сертификатом.
Нисмо могли ништа да разумемо из кода, па смо отишли да видимо шта је у виртуелној машини. Отворили смо дневнике сервиса и пронашли грешку хттп клијента у њима. Самопотписани сертификат који је уграђен у ресурсе апликације је бесрамно покварен. Контактирали смо наше аналитичаре, тражили су нови сертификат, издали су нам га и сервис поново ради. Чини се да је то све. Или не? Уосталом, сервис ради, обавља неку функцију која је потребна нашем пословању. Имамо одређене стандарде за развој апликација, које највероватније имате и ви. На пример, не чувајте дневнике на чвору у фасцикли, већ их чувајте у некој врсти складишта, као што је еластична, и погледајте их у Кибани. Такође можете запамтити златне метрике. Односно, оптерећење услуге, број захтева за услугу, да ли је жив или не, како му иде ХеалтхЦхецк. У најмању руку, ови показатељи ће вам помоћи да знате када се може повући из употребе мирне савести и заборавити као ружан сан.
Шта да се ради
Стога додајемо тако стару услугу у табелу, а онда идемо да тражимо волонтере међу програмерима који ће се побринути за услугу и довести је у ред: они ће написати барем неке информације о услузи, додати линкове до контролне табле у графани, за монтажне задатке и разумевање како да примените апликацију, немојте ручно учитавати датотеке користећи фтп.
Главно је колико ће трајати сва ова корисна волонтерска активност? Један спринт за мање или више искусног програмера, на пример, током техничког дуга од 20%. Колико је времена требало да се схвати сва укорењена логика комуникације са одређеним државним системом и доведе до новијих технологија? Не могу да гарантујем за ово, можда месец или два рада тима. Ово говорим из искуства тренутне интеграције са неком новом услугом.
Истовремено, нема ослобађања пословне вредности. Уопште. Нормално је унајмити услугу за подршку и потрошити мало времена на то. Али након наших стандардних плесова са услугом, додали смо је у табелу, додали информације о њој и можда ћемо је једног дана преписати. Али сада испуњава наше стандарде услуге.
Као резултат тога, желео бих да смислим план шта да радим са Легаци услугама.
Преписивање наслеђа од нуле је лоша идеја
Озбиљно, не морате ни да размишљате о томе. Јасно је да бих то волео, и има неке предности, али обично никоме не треба, укључујући и вас.
Референце књига
Ископајте изворне кодове својих апликација, направите референтну књигу која ће указати шта је где и како функционише, унесите тамо опис пројекта (условно реадме.мд) да бисте брзо разумели где се налазе евиденције и метрике. Програмер који ће се бавити овим након вас ће само рећи хвала.
Разумети домен
Ако сте власник домена, покушајте да држите прст на пулсу. Звучи тривијално, да, али не брину сви да су услуге у једном кључу. Али рад у једном стандарду је заправо знатно лакши.
Само регистровани корисници могу учествовати у анкети. , Добродошао си.
Шта радите са својим наслеђем?
100%Преписујем од нуле, тачније је 12
100%Скоро исто као и ти20
100%Немамо наслеђе, ми смо сјајни4
100%Написаћу у коментарима 2
Гласало је 38 корисника. Уздржано је било 20 корисника.
Извор: ввв.хабр.цом
