Nedavno smo započeli mali projekt za čišćenje načina na koji dijelovi naših sustava komuniciraju iza kulisa u Bufferu. Kratki kontekst: koristimo nešto što se zove SQS (Amazon Simple Queue Service. Ti se redovi ponašaju kao čekaonice za zadatke. Jedan dio našeg sustava ispušta poruku, a drugi je preuzima kasnije. Zamislite to kao da ostavljate poruku kolegi: "Hej, kad budeš imao priliku, obradi ove podatke." Sustav koji šalje note ne mora čekati na odgovor. Naš je projekt bio obavljanje rutinskog održavanja: ažuriranje alata koje koristimo za lokalno testiranje redova čekanja i čišćenje njihove konfiguracije. Ali dok smo mapirali redove čekanja koje zapravo koristimo, pronašli smo nešto što nismo očekivali: sedam različitih pozadinskih procesa (ili cron poslova, koji su planirani zadaci koji se pokreću automatski) i radnika koji su tiho radili do pet godina. Svi oni nisu radili apsolutno ništa Evo zašto je to važno, kako smo ih pronašli i što smo učinili u vezi s tim. Zašto je ovo važnije nego što mislite. Napravio sam brzi izračun i za jednog od tih radnika platili bismo ~360-600 dolara u našim financijskim okvirima, ali definitivno čisto rasipanje za proces koji ne čini ništa. tvrde da je financijski trošak zapravo najmanji dio problema. Svaki put kada se novi inženjer pridruži našem timu, oni naiđu na te tajanstvene procese. "Što ovaj radnik radi?" postaje pitanje koje troši vrijeme na ukrcavanje i stvara nesigurnost ažuriranja, popravci ovisnosti kada se nešto drugo promijeni. To je dovelo do toga da je naš tim trošio cikluse na održavanje bez svrhe. Je li to bilo kritično? Je li to bilo privremeno rješenje koje je postalo trajno? Osoba koja ga je stvorila napustila je tvrtku prije nekoliko godina. Kako se to uopće događa? Dugotrajni sustav. Značajka postaje zastarjela, ali pozadinski posao koji ju je podržavao nastavlja raditi. Netko "privremeno" pokreće radni zadatak koji nikada ne postaje suvišan nakon promjene arhitekture. Prije smo slali rođendanske e-poruke u Bufferu. Da bismo to učinili, pokrenuli smo zakazani zadatak koji je provjerio cijelu bazu podataka rođendane koji se podudaraju s trenutnim datumom i poslali smo klijentima personaliziranu e-poštu. Tijekom refaktora 2020. godine promijenili smo naš alat za transakcijsku e-poštu, ali smo zaboravili ukloniti ovaj worker—on je nastavio raditi još pet godina. Ništa od toga nije greška pojedinaca — bez namjernog čišćenja ugrađenog u naš rad, entropija pobjeđuje. Kako nam je naša arhitektura pomogla da je pronađemo, Buffer je prihvatio pokret mikrousluga (popularan pristup u kojem tvrtke dijele svoj kod na mnogo malih, neovisnih usluga) prije nekoliko godina. Podijelili smo svoj monolit na zasebne usluge, od kojih je svaka imala vlastito spremište, cjevovod za implementaciju i infrastrukturu. U to je vrijeme to imalo smisla: svaka se usluga mogla postaviti samostalno, s jasnim granicama između timova. No tijekom godina otkrili smo da su troškovi upravljanja desecima spremišta nadmašili korist za. tim naše veličine. Usluge i dalje postoje kao logične granice, ali se pokazalo da je to otkriće moguće. U svijetu mikroservisa, svaki radnik u jednom repozitoriju možda nikada neće biti zamijećen od strane inženjera koji rade u drugom Sa svime u jednom repozitoriju, mogli smo pratiti svaki red do njegovih potrošača i proizvođača. Mogli smo uočiti redove s proizvođačima, ali nismo mogli pronaći radnike koji više ne postoje. Konsolidacija nije bila osmišljena da nam pomogne u pronalaženju zombi infrastrukture.otkriće gotovo neizbježno. Što smo zapravo učinili Nakon što smo identificirali procese siroče, morali smo odlučiti što ćemo s njima. Evo kako smo pristupili tome. Prvo smo pratili svaki do njegovog podrijetla. Prekopali smo povijest gita i staru dokumentaciju kako bismo razumjeli zašto je svaki worker uopće stvoren. U većini slučajeva izvorna je svrha bila jasna: jednokratna migracija podataka, značajka koja je ukinuta, privremeno rješenje koje je nadživjelo svoju korisnost. Zatim smo potvrdili da se doista ne koriste. Prije nego što smo bilo što uklonili, dodali smo bilježenje kako bismo potvrdili da ti procesi tiho ne rade nešto važno što smo propustili. Pratili smo nekoliko dana kako bismo bili sigurni da uopće nisu pozvani i postupno smo ih uklanjali. Nismo brisali sve odjednom. Uklanjali smo procese jedan po jedan, pazeći na eventualne neočekivane nuspojave. (Srećom, nije ih bilo.) Konačno smo dokumentirali ono što smo naučili. Dodali smo bilješke u naše interne dokumente o tome što je svaki proces izvorno radio i zašto je uklonjen, tako da se budući inženjeri ne bi pitali ako je nešto važno nestalo. Što se promijenilo nakon čišćenja Još smo rano u mjerenju punog učinka, ali evo što smo do sada vidjeli. Naš inventar infrastrukture sada je točan. Kad netko pita: "Koje radnike vodimo?" zapravo možemo odgovoriti na to pitanje s pouzdanjem. Razgovori o uključivanju također su postali jednostavniji. Novi inženjeri ne nailaze na misteriozne procese i ne pitaju se nedostaje li im kontekst. Baza kodova odražava ono što zapravo radimo, a ne ono što smo radili prije pet godina. Tretirajte refaktore kao arheologiju i prevenciju. Moj najveći zaključak iz ovog projekta: svaki značajan refaktor je prilika za arheologiju. Kada ste duboko u sustavu, stvarno shvaćajući kako se dijelovi povezuju, u savršenoj ste poziciji da preispitate što je još potrebno. Onaj red iz nekog starog projekta? Radnik koji je netko stvorio za jednokratnu migraciju podataka? Planirani zadatak koji upućuje na značajku za koju nikad niste čuli? Možda još uvijek rade. Evo što ugrađujemo u naš budući proces: Tijekom bilo kakvog refaktora, zapitajte se: što još dotiče ovaj sustav, a da nismo pogledali neko vrijeme? Kada obustavljate značajku, pratite je sve do njenih pozadinskih procesa, a ne samo koda okrenutog prema korisniku. Kada netko napusti tim, dokumentirajte za što je bio zadužen, posebno stvari koje rade u pozadini. Još uvijek imamo starije dijelove našeg baze kodova koji još nisu migrirani u jedinstveno spremište. Kako nastavljamo s konsolidacijom, uvjereni smo da ćemo pronaći još ovih skrivenih relikvija. Ali sada smo spremni uhvatiti ih i spriječiti stvaranje novih. Kada sav vaš kod živi na jednom mjestu, osirotjela infrastruktura nema se gdje sakriti.
Što smo naučili nakon što smo pronašli 7 zaboravljenih poslova koji su radili 5 godina
By Social Media
·
·
6 min read
·
737 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