Vi startade nyligen ett litet projekt för att rensa upp hur delar av våra system kommunicerar bakom kulisserna på Buffer. Lite snabbt sammanhang: vi använder något som heter SQS (Amazon Simple Queue Service. Dessa köer fungerar som väntrum för uppgifter. En del av vårt system lämnar ett meddelande och en annan hämtar det senare. Tänk på det som att lämna en lapp till en hey, bearbetare som skickar data när du får en chans: ". note behöver inte vänta på svar.Vårt projekt var att utföra rutinunderhåll: uppdatera verktygen vi använder för att testa köer lokalt och rensa upp deras konfiguration.Men medan vi kartlade vilka köer vi faktiskt använder, hittade vi något vi inte förväntade oss: sju olika bakgrundsprocesser (eller cron-jobb, som är schemalagda uppgifter som körts automatiskt i fem år) och arbetare som inte har körts automatiskt i fem år användbar. Här är varför det är viktigt, hur vi hittade dem och vad vi gjorde åt det. Varför det här betyder mer än du tror Ja, att köra onödig infrastruktur kostar pengar, och för en av dessa arbetare skulle vi ha betalat ~360-600 USD under 5 år. städning, jag skulle hävda att den ekonomiska kostnaden faktiskt är den minsta delen av problemet. Varje gång en ny ingenjör ansluter sig till teamet och utforskar våra system, stöter de på dessa mystiska processer "Vad gör den här arbetaren en fråga som äter upp ombordstigningstiden och skapar osäkerhet. "glömd" infrastruktur behöver uppmärksammas ibland, beroendeförändringar, när något annat förändras. Sanningen är att detta händer naturligt i alla långlivade system. En funktion föråldras, men bakgrundsjobbet som stödde det fortsätter att köras en arbetare "tillfälligt" för att hantera en migrering, och den blir aldrig överflödig efter en arkitektonisk förändring, men ingen tänker på att göra detta e-postmeddelande uppgift som kontrollerade hela databasen för födelsedagar som matchade det aktuella datumet och skickade ett personligt e-postmeddelande till kunder. Under en refaktorisering 2020 bytte vi vårt transaktionsverktyg för e-post men glömde att ta bort den här arbetaren – det fortsatte att köras i fem år till. Inget av dessa är misslyckanden i processen. anammade mikrotjänströrelsen (ett populärt tillvägagångssätt där företag delade upp sin kod i många små, oberoende tjänster) för flera år sedan. Vi delade upp vår monolit i separata tjänster, var och en med sitt eget arkiv, distributionspipeline och infrastruktur. Vid den tiden var det vettigt: varje tjänst kunde distribueras på egen hand, med tydliga gränser mellan teamen. Så vi konsoliderade till ett enda förråd med flera tjänster. Tjänsterna existerar fortfarande som logiska gränser, men de lever tillsammans på ett ställe. Detta visade sig vara det som gjorde upptäckten möjlig. I mikrotjänstvärlden är varje förråd sin egen ö. En bortglömd arbetare i en repo kanske aldrig uppmärksammas av ingenjörer som arbetar på ett annat ställe där det inte finns något ställe att söka efter. Vi kunde äntligen se hela bilden till dess konsumenter och producenter. Vi kunde se köer med producenter men inga konsumenter. Vi kunde hitta arbetare som hänvisade till köer som inte längre fanns.upptäckt nästan oundviklig. Vad vi faktiskt gjorde När vi identifierade de föräldralösa processerna var vi tvungna att bestämma oss för vad vi skulle göra med dem. Så här tog vi oss an det. Först spårade vi var och en till dess ursprung. Vi grävde igenom git-historik och gammal dokumentation för att förstå varför varje arbetare skapades från början. I de flesta fall var det ursprungliga syftet tydligt: en engångsmigrering av datamigrering, en funktion som fick solnedgång, en tillfällig lösning som överlevde dess användbarhet. Sedan bekräftade vi att de verkligen var oanvända. Innan vi tog bort något lade vi till loggning för att verifiera att dessa processer inte i det tysta gjorde något viktigt vi hade missat. Vi övervakade i några dagar för att se till att de inte blev uppringda alls, och vi tog bort dem stegvis. Vi raderade inte allt på en gång. Vi tog bort processer en efter en och såg efter eventuella oväntade biverkningar. (Lyckligtvis fanns det inga.)Slutligen dokumenterade vi vad vi lärde oss. Vi lade till anteckningar i våra interna dokument om vad varje process ursprungligen hade gjort och varför den togs bort, så framtida ingenjörer skulle inte undra om något viktigt försvann. Vad som förändrades efter städningVi är fortfarande tidigt med att mäta den fulla effekten, men här är vad vi har sett hittills.Vår infrastrukturinventering är nu korrekt. När någon frågar: "Vilka arbetare driver vi?" vi kan faktiskt svara på den frågan med tillförsikt. Konversationer ombord har också blivit enklare. Nya ingenjörer snubblar inte över mystiska processer och undrar om de saknar sammanhang. Kodbasen återspeglar vad vi faktiskt gör, inte vad vi gjorde för fem år sedan. Behandla refaktorer som arkeologi och förebyggande. Mitt största bidrag från det här projektet: varje betydande refaktor är en möjlighet för arkeologi. När du är djupt inne i ett system och verkligen förstår hur bitarna hänger ihop, är du i den perfekta positionen att ifrågasätta vad som fortfarande behövs. Den där kön från något gammalt projekt? Arbetaren som någon skapade för en engångsdatamigrering? Den schemalagda uppgiften som refererar till en funktion du aldrig har hört talas om? De kanske fortfarande körs. Det här är vad vi bygger in i vår process framöver: Fråga under alla refaktorer: vad mer rör det här systemet som vi inte har tittat på på ett tag? När du tar bort en funktion, spåra den hela vägen till dess bakgrundsprocesser, inte bara den användarvända koden. När någon lämnar teamet, dokumentera vad de hade för bakgrunden som vi fortfarande körde för de gamla delarna, särskilt i de äldre delarna. som inte har migrerats till det enda förvaret ännu. När vi fortsätter att konsolidera är vi övertygade om att vi kommer att hitta fler av dessa dolda reliker. Men nu är vi konfigurerade för att fånga upp dem och förhindra att nya bildas. När all din kod finns på ett ställe har föräldralös infrastruktur ingenstans att gömma sig.
Vad vi lärde oss efter att ha hittat 7 bortglömda jobb i 5 år
By Social Media
·
·
6 min read
·
554 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