Nedavno smo započeli mali projekat da očistimo način na koji dijelovi naših sistema komuniciraju iza kulisa u Bufferu. Neki brzi kontekst: koristimo nešto što se zove SQS (Amazon Simple Queue Service. Ovi redovi se ponašaju kao čekaonice za zadatke. Jedan dio našeg sistema ispušta poruku, a drugi je preuzima kasnije. Razmislite o tome kao o ostavljanju bilješke za kolegu, taj proces pošalje ovaj sistem: note ne mora čekati na odgovor. Naš projekt je bio da izvršimo rutinsko održavanje: ažuriramo alate koje koristimo za lokalno testiranje redova i očistimo njihovu konfiguraciju. Ali dok smo mapirali koje redove zapravo koristimo, pronašli smo nešto što nismo očekivali: sedam različitih pozadinskih procesa (ili cron poslova, koji su zakazani zadaci koji se izvode automatski) i radnici koji su radili apsolutno ništa od pet godina korisno.Evo zašto je to važno, kako smo ih pronašli i šta smo uradili u vezi s tim.Zašto je ovo važnije nego što mislite.Da, vođenje nepotrebne infrastrukture košta puno novca i za jednog od tih radnika platili bismo ~360-600$ za 5 godina. Ovo je skroman iznos u velikoj šemi naših finansija, ali je definitivno bio čist proces. tvrde da je finansijski trošak zapravo najmanji dio problema. Svaki put kad se novi inženjer pridruži timu i istražuje naše sisteme, oni se susreću s tim misterioznim procesima koji oduzimaju vrijeme i stvaraju nesigurnost ažuriranja, popravke ovisnosti kada se nešto drugo promijeni. To je dovelo do toga da je naš tim trošio cikluse održavanja na putanje koda koji nisu služili nikakvoj svrsi. dugovječni sistem. Funkcija postaje zastarjela, ali posao u pozadini koji je podržava i dalje radi rođendani koji odgovaraju trenutnom datumu i poslali smo klijentima personaliziranu e-poštu 2020. godine, promijenili smo naš alat za transakciju e-pošte, ali smo zaboravili da uklonimo ovog radnika – nastavio je raditi još pet godina. Ništa od toga nije greška pojedinaca – to su neuspjesi procesa bez namjernog čišćenja ugrađenog u naš rad, a naša mikroservisa je pomogla mnogim kompanijama. pokret (popularni pristup u kojem su kompanije podijelile svoj kod na mnogo malih, nezavisnih usluga) prije mnogo godina. Podijelili smo naš monolit na zasebne usluge, svaka sa svojim spremištem, cevovodom za implementaciju i infrastrukturom. Tako smo konsolidirali u višeservisno jedno spremište i dalje postoje kao logične granice, ali oni žive zajedno na jednom mjestu. Ispostavilo se da je ovo otkriće bilo moguće. U svijetu mikroservisa, svako spremište je vlastito ostrvo. u jednom spremištu, mogli smo da vidimo potpunu sliku. Mogli smo da uočimo redove sa proizvođačima, ali ne i potrošače. Mogli smo da pronađemo radnike koji se pozivaju na redove koji više ne postoje.otkriće je gotovo neizbježno. Šta smo zapravo uradili Kada smo identificirali procese bez roditelja, morali smo odlučiti šta ćemo s njima. Evo kako smo mu pristupili. Prvo smo pratili svaki do njegovog porijekla. Kopali smo kroz istoriju git-a i staru dokumentaciju da bismo razumeli zašto je svaki radnik uopšte stvoren. U većini slučajeva, prvobitna svrha je bila jasna: jednokratna migracija podataka, funkcija koja je zapala, privremeno rješenje koje je nadživjelo svoju korisnost. Tada smo potvrdili da su zaista neiskorišteni. Prije nego što smo bilo što uklonili, dodali smo evidenciju kako bismo provjerili da ovi 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 postepeno smo ih uklanjali. Nismo izbrisali sve odjednom. Uklanjali smo procese jedan po jedan, pazeći na sve neočekivane nuspojave. (Srećom, nije ih bilo.) Konačno smo dokumentovali ono što smo naučili. Dodali smo bilješke u naše interne dokumente o tome šta je svaki proces prvobitno uradio i zašto je uklonjen, kako se budući inženjeri ne bi pitali da li je nešto važno nestalo. Šta se promijenilo nakon čišćenja Još smo rano u mjerenju punog uticaja, ali evo šta smo do sada vidjeli. Naš inventar infrastrukture je sada tačan. Kada neko pita: "Koje radnike vodimo?" zapravo možemo sa sigurnošću odgovoriti na to pitanje. Inboarding razgovori su također postali jednostavniji. Novi inženjeri ne nailaze na misteriozne procese i ne pitaju se da li im nedostaje kontekst. Baza koda odražava ono što mi 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 sistemu, stvarno razumijete kako se dijelovi povezuju, u savršenoj ste poziciji da preispitate šta je još potrebno. Taj red iz nekog starog projekta? Radnik je neko kreirao za jednokratnu migraciju podataka? Planirani zadatak koji upućuje na funkciju za koju nikada niste čuli? Možda još uvijek rade. Evo šta ugrađujemo u naš proces koji ide naprijed: Tokom bilo kakvog refaktora, pitajte: šta još dotiče ovaj sistem koji nismo gledali neko vrijeme? Prilikom odbacivanja funkcije, pratite je sve do njenih pozadinskih procesa, a ne samo do koda okrenutog korisniku. Kada neko napusti tim, dokumentirajte ono za šta su bili zaduženi za naše dijelove, posebno u pozadini imamo stvari koje su još uvijek bile zadužene za naš kod. još nisu migrirani u jedinstveno spremište. Kako nastavljamo sa konsolidacijom, uvjereni smo da ćemo pronaći još ovih skrivenih relikvija. Ali sada smo postavljeni da ih uhvatimo i spriječimo stvaranje novih. Kada sav vaš kod živi na jednom mjestu, napuštena infrastruktura nema gdje da se sakrije.
Šta smo naučili nakon što smo pronašli 7 zaboravljenih poslova koji su radili 5 godina
By Social Media
·
·
6 min read
·
537 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