Нядаўна мы пачалі невялікі праект па ачыстцы таго, як часткі нашых сістэм ўзаемадзейнічаюць за кулісамі ў Buffer. Некалькі кароткага кантэксту: мы выкарыстоўваем нешта пад назвай SQS (Amazon Simple Queue Service. Гэтыя чэргі дзейнічаюць як залы чакання для выканання заданняў. Адна частка нашай сістэмы адпраўляе паведамленне, а іншая падбірае яго пазней. Думайце пра гэта як пра тое, каб пакінуць нататку для калегі: «Гэй, калі будзе магчымасць, апрацуй гэтыя даныя». Сістэма, якая адпраўляе note не трэба чакаць адказу. Наш праект заключаўся ў выкананні планавага тэхнічнага абслугоўвання: абнаўленні інструментаў, якія мы выкарыстоўваем для лакальнага тэсціравання чэргаў, і ачыстцы іх канфігурацыі. Але пакуль мы вызначалі, якія чэргі мы насамрэч выкарыстоўваем, мы выявілі тое, чаго не чакалі: сем розных фонавых працэсаў (або заданняў cron, якія з'яўляюцца запланаванымі задачамі, якія выконваюцца аўтаматычна) і рабочых, якія працавалі бясшумна на працягу пяці гадоў. Усе яны не рабілі абсалютна нічога Вось чаму гэта важна, як мы іх знайшлі і што мы з гэтым зрабілі. Чаму гэта мае большае значэнне, чым вы думаеце. Так, запуск непатрэбнай інфраструктуры каштуе грошай, і за аднаго з гэтых работнікаў мы заплацілі б ~360-600 долараў за 5 гадоў. Гэта сціплая сума ў нашай фінансавай схеме, але, безумоўна, пустая трата для працэсу, які нічога не дае. сцвярджаюць, што фінансавыя выдаткі - гэта самая малая частка праблемы. Кожны раз, калі новы інжынер далучаецца да нашай сістэмы, ён сутыкаецца з гэтымі таямнічымі працэсамі. "Што робіць гэты работнік?" становіцца пытаннем, якое з'ядае час на ўсталёўку і стварае нявызначанасць - утаропіўшыся ў фрагмент кода, баючыся дакрануцца да яго, часам патрабуе ўвагі "забытая" інфраструктура абнаўленні, выпраўленні сумяшчальнасці. Гэта прывяло да таго, што наша каманда марнавала цыклы тэхнічнага абслугоўвання, якія не выкарыстоўвалі мэты. Ці было гэта часовае выпраўленне, якое стала пастаянным? Чалавек, які стварыў яго, пакінуў кампанію разам з ім. Як гэта адбываецца? Функцыя састарэла, але фонавая праца, якая падтрымлівала яе, працягвае працаваць. Для выканання міграцыі запланаванае заданне ніколі не становіцца лішнім, але ніхто не думае пра гэта дні нараджэння, якія адпавядаюць бягучай даце, і адправілі кліентам персаналізаваную электронную пошту. У 2020 годзе мы змянілі наш інструмент транзакцыйнай электроннай пошты, але забыліся выдаліць гэты воркер — ён працаваў яшчэ пяць гадоў. Нічога з гэтага не з'яўляецца збоем асобных людзей — гэта збой у працэсе, убудаваным у нашу працу, энтрапія перамагае. рух мікрасэрвісаў (папулярны падыход, пры якім кампаніі разбіваюць свой код на мноства невялікіх незалежных сэрвісаў). Мы падзялілі наш маналіт на асобныя сэрвісы, кожны са сваім уласным сховішчам, канвеерам разгортвання і інфраструктурай. У той час гэта мела сэнс: кожны сэрвіс можна было разгарнуць асобна, з выразнымі межамі паміж камандамі. Але на працягу многіх гадоў мы выявілі, што накладныя выдаткі на кіраванне дзесяткамі сховішчаў пераважылі карысць для нас. Такім чынам, мы аб'ядналі адзіны рэпазітар з некалькімі службамі, але яны жывуць разам. У свеце мікрасэрвісаў кожны рэпазітар - гэта асобны астравок. Інжынеры, якія працуюць у іншым, ніколі не заўважаць аднаго месца для пошуку імёнаў чаргі Калі ўсё было ў адным сховішчы, мы змаглі прасачыць кожную чаргу да яе спажыўцоў і вытворцаў, але не змаглі знайсці рабочых, якія спасылаліся на чэргі, якія больш не існавалі.Адкрыццё амаль непазбежна. Што мы на самой справе зрабілі. Пасля таго, як мы выявілі асірацелыя працэсы, нам трэба было вырашыць, што з імі рабіць. Вось як мы падышлі да гэтага. Спачатку мы прасачылі паходжанне кожнага з іх. Мы прагледзелі гісторыю git і старую дакументацыю, каб зразумець, чаму ўвогуле быў створаны кожны рабочы. У большасці выпадкаў першапачатковая мэта была зразумелая: аднаразовая міграцыя даных, функцыя, якая спынілася, часовы абыходны шлях, які перажыў сваю прыдатнасць. Потым мы пацвердзілі, што яны сапраўды не выкарыстоўваліся. Перш чым што-небудзь выдаліць, мы дадалі рэгістрацыю, каб пераканацца, што гэтыя працэсы ціха не робяць нешта важнае, што мы прапусцілі. Мы назіралі некалькі дзён, каб пераканацца, што іх наогул не выклікалі, і паступова выдалялі іх. Мы не выдалялі ўсё адразу. Мы выдалялі працэсы адзін за адным, сочачы за любымі нечаканымі пабочнымі эфектамі. (На шчасце, іх не было.) Нарэшце, мы задакументавалі тое, што даведаліся. Мы дадалі нататкі да нашых унутраных дакументаў пра тое, што першапачаткова рабіў кожны працэс і чаму ён быў выдалены, каб будучыя інжынеры не задаваліся пытаннем, калі нешта важнае прапала. Што змянілася пасля ачысткі. Мы яшчэ рана вымяраць поўнае ўздзеянне, але вось што мы бачылі да гэтага часу. Наша інвентарызацыя інфраструктуры цяпер дакладная. Калі нехта пытаецца: "Якімі рабочымі мы займаемся?" мы сапраўды можам з упэўненасцю адказаць на гэтае пытанне. Размовы аб адаптацыі таксама сталі прасцей. Новыя інжынеры не натыкаюцца на таямнічыя працэсы і не задаюцца пытаннем, ці не хапае ім кантэксту. Кодавая база адлюстроўвае тое, што мы на самой справе робім, а не тое, што мы рабілі пяць гадоў таму. Ставіцеся да рэфактараў як да археалогіі і прафілактыкі. Мой самы вялікі вынік з гэтага праекта: кожны значны рэфактаринг - гэта магчымасць для археалогіі. Калі вы глыбока ў сістэме, сапраўды разумееце, як злучаюцца часткі, вы знаходзіцеся ў ідэальным становішчы, каб задацца пытаннем, што яшчэ трэба. Тая чарга з нейкага старога праекта? Работнік, створаны кімсьці для аднаразовай міграцыі даных? Запланаванае заданне, якое спасылаецца на функцыю, пра якую вы ніколі не чулі? Магчыма, яны ўсё яшчэ працуюць. Вось што мы ўбудоўваем у наш далейшы працэс: падчас любой рэфактарынгі спытайце: што яшчэ датычыцца гэтай сістэмы, чаго мы даўно не разглядалі? Пры спыненні падтрымкі функцыі адсочвайце яе аж да яе фонавых працэсаў, а не толькі да карыстальніцкага кода. Калі хтосьці пакідае каманду, дакументуйце, за што ён адказваў, асабліва тое, што працуе ў фонавым рэжыме. У нас усё яшчэ ёсць старыя часткі нашага кодавай базы, якія яшчэ не былі перанесены ў адзіны рэпазітар. Працягваючы кансалідацыю, мы ўпэўненыя, што знойдзем больш гэтых схаваных рэліквій. Але цяпер мы гатовыя злавіць іх і прадухіліць з'яўленне новых. Калі ўвесь ваш код знаходзіцца ў адным месцы, асірацелай інфраструктуры няма дзе схавацца.
Што мы даведаліся, знайшоўшы 7 забытых вакансій, якія працавалі на працягу 5 гадоў
By Social Media
·
·
6 min read
·
722 views
Read in:
aa
ace
af
ak
alz
am
ar
as
awa
ay
az
ba
ban
be
bew
+191 more
bg
bho
bik
bm
bn
brx
bs
bug
ca
ceb
cgg
ckb
co
crh
cs
cv
cy
da
de
din
doi
dv
dyu
dz
ee
el
en
eo
es
et
eu
fa
ff
fi
fj
fo
fr
fur
fy
ga
gd
gl
gom
gn
gu
ha
haw
he
hi
hil
hne
hmn
hr
hrx
ht
hu
hy
id
ig
ilo
is
it
ja
jam
jv
ka
kab
kbp
kg
kha
kk
kl
km
kn
ko
kri
ku
ktu
ky
la
lb
lg
li
lij
ln
lo
lmo
lt
ltg
lua
luo
lus
lv
mai
mak
mg
mi
min
mk
ml
mn
mni-mtei
mos
mr
ms
mt
my
nd
ne
nl
nn
no
nr
nso
nus
ny
oc
om
or
pa
pag
pam
pap
pl
ps
pt
pt-br
qu
rn
ro
ru
rw
sa
sah
sat
sc
scn
sg
si
sk
sl
sm
sn
so
sq
sr
ss
st
su
sus
sv
sw
szl
ta
tcy
te
tg
th
ti
tiv
tk
tl
tn
to
tpi
tr
trp
ts
tt
tum
ty
udm
ug
uk
ur
uz
ve
vec
vi
war
wo
xh
yi
yo
yua
yue
zap
zh
zh-hk
zh-tw
zu