Aloitimme äskettäin pienen projektin puhdistaaksemme järjestelmien osien viestintää kulissien takana puskurissa. Nopea konteksti: käytämme jotain nimeltä SQS (Amazon Simple Queue Service. Nämä jonot toimivat kuin tehtävien odotushuoneita. Yksi järjestelmämme osa lähettää viestin ja toinen poimii sen myöhemmin. Ajattele sitä kuin jättäisit muistiinpanon työtoverille: "Hei järjestelmä, prosessi, kun saat tämän tiedon." odottaa vastausta. Projektimme oli suorittaa rutiinihuolto: päivittää työkaluja, joita käytämme testaamaan jonoja paikallisesti ja siivoamaan niiden määritykset. Mutta samalla kun kartoitimme käyttämiämme jonoja, löysimme jotain, jota emme odottaneet: seitsemän erilaista taustaprosessia (tai cron-työtä, jotka ovat ajoitettuja tehtäviä, jotka suoritetaan automaattisesti) ja työntekijät, jotka olivat toimineet hiljaa jopa viiden vuoden ajan Miksi tällä on enemmän merkitystä kuin uskot? Kyllä, tarpeettoman infrastruktuurin käyttö maksaa rahaa, ja yhdestä työntekijästä olisimme maksaneet noin 360–600 dollaria 5 vuoden aikana. Tämä on vaatimaton summa taloudessamme, mutta todellakin puhdasta tuhlausta prosessista, joka ei tee mitään. Joka kerta kun uusi insinööri liittyy tiimiin ja tutkii järjestelmiämme, hän kohtaa nämä salaperäiset prosessit. "Mitä tämä työntekijä tekee?" Tämä johti siihen, että tiimimme käytti huoltojaksoja turhaan. Ja ajan myötä institutionaalinen tieto haalistuu. Oliko se väliaikainen korjaus, joka lähti yrityksestä vuosia sitten, ja konteksti jäi heidän kanssaan. Kuinka tämä tapahtuu? Joku pyörittää työntekijän "tilapäisesti" käsittelemään siirtoa, eikä se koskaan katkea. Suunniteltu tehtävä tulee tarpeettomaksi arkkitehtonisen muutoksen jälkeen. Lähetimme aiemmin syntymäpäiviä koskevia sähköposteja tapahtumasähköpostityökalu, mutta unohdin poistaa tämän työntekijän – se oli käynnissä vielä viisi vuotta. Mikään näistä ei ole yksilöiden epäonnistumisia – ne ovat prosessien epäonnistumisia. Entropia voittaa ilman tarkoituksellista siivousta.Kuinka arkkitehtuurimme auttoi meitä löytämään sen Kuten monet yritykset, Buffer omaksui mikropalveluliikkeen (suosittu lähestymistapa, jossa yhtiöt jakoivat erilliset palvelumme vuosia sitten). Jokaisella on oma tietovarasto, käyttöönottoputki ja infrastruktuuri. Tuolloin se oli järkevää: jokainen palvelu voitiin ottaa käyttöön itsenäisesti, ja ryhmien välillä oli selkeät rajat. Mutta vuosien mittaan olemme huomanneet, että kymmenien tietovarastojen hallinta ylitti koko tiimimme hyödyt Tämä osoittautui mahdolliseksi. Mikropalveluiden maailmassa jokainen tietovarasto on oma saarinsa. Toisessa työpaikassa työskentelevät insinöörit eivät ehkä koskaan huomaa jonojen nimiä, ei yhtenäistä näkemystä siitä, mikä toimii paikalla jonoja tuottajien, mutta ei kuluttajien kanssa Löysimme työntekijöitä, jotka viittasivat jonoihin, joita ei enää ollut olemassa. Yhdistämistä ei suunniteltu auttamaan meitä löytämään zombi-infrastruktuuria – mutta se teki siitä.löytö on lähes väistämätöntä. Mitä itse teimme Kun tunnistimme orvot prosessit, meidän oli päätettävä, mitä niille tehdään. Näin lähestyimme sitä. Ensin jäljitimme jokaisen alkuperänsä. Kaivoimme gitin historiaa ja vanhaa dokumentaatiota ymmärtääksemme, miksi jokainen työntekijä alun perin luotiin. Useimmissa tapauksissa alkuperäinen tarkoitus oli selvä: kertaluonteinen tietojen siirto, ominaisuus, joka katosi, väliaikainen kiertotapa, joka oli vanhentunut. Sitten vahvistimme, että ne olivat todella käyttämättömiä. Ennen kuin poistimme mitään, lisäsimme lokikirjauksen varmistaaksemme, että nämä prosessit eivät tehneet hiljaa jotain tärkeää, jota olimme menettäneet. Valvoimme muutaman päivän ajan varmistaaksemme, ettei heille soitettu ollenkaan, ja poistimme ne vähitellen. Emme poistaneet kaikkea kerralla. Poistimme prosessit yksitellen ja tarkkailimme odottamattomia sivuvaikutuksia. (Onneksi niitä ei ollut.) Lopuksi dokumentoimme oppimamme. Lisäsimme sisäisiin asiakirjoihimme muistiinpanoja siitä, mitä kukin prosessi oli alun perin tehnyt ja miksi ne poistettiin, jotta tulevat insinöörit eivät ihmettele, jos jotain tärkeää olisi kadonnut.Mikä muuttui puhdistuksen jälkeen Olemme vielä alkuvaiheessa mittaamassa koko vaikutusta, mutta tässä on se, mitä olemme nähneet tähän mennessä. Infrastruktuurin inventaarimme on nyt tarkka. Kun joku kysyy: "Mitä työntekijöitä me pyöritämme?" voimme itse asiassa vastata tähän kysymykseen luottavaisin mielin. Aloituskeskustelut ovat myös yksinkertaistuneet. Uudet insinöörit eivät törmää salaperäisiin prosesseihin ja ihmettele, puuttuuko heiltä kontekstia. Koodikanta heijastaa sitä, mitä todella teemme, ei sitä, mitä teimme viisi vuotta sitten. Käsittele refaktoreita arkeologiana ja ennaltaehkäisynä Suurin otokseni tästä projektista: jokainen merkittävä refaktori on mahdollisuus arkeologiaan. Kun olet syvällä järjestelmässä ja ymmärrät todella, kuinka palaset liittyvät toisiinsa, sinulla on täydellinen mahdollisuus kyseenalaistaa, mitä vielä tarvitaan. Tuo jono jostain vanhasta projektista? Kertaluonteista tiedonsiirtoa varten luotu työntekijä? Ajastettu tehtävä, joka viittaa ominaisuuteen, josta et ole koskaan kuullut? Ne saattavat edelleen olla käynnissä.Tässä on se, mitä rakennamme prosessiimme jatkossa: Kysy missä tahansa refaktorissa: mikä muu koskettaa tätä järjestelmää, jota emme ole tarkastelleet vähään aikaan?Kun poistat ominaisuuden käytöstä, jäljitä se aina sen taustaprosesseihin, ei vain käyttäjäkohtaiseen koodiin. Kun joku lähtee tiimistä, dokumentoi, mitä he olivat vastuussa, erityisesti vanhemmissa koodin osissa, joita meillä on edelleen. on vielä siirretty yhteen arkistoon. Kun jatkamme yhdistämistä, olemme varmoja, että löydämme lisää näitä piilotettuja jäänteitä. Mutta nyt olemme valmiita saamaan ne kiinni ja estämään uusien muodostumisen. Kun kaikki koodisi on yhdessä paikassa, orvolla infrastruktuurilla ei ole minnekään piiloutua.
Mitä opimme löydettyämme 7 unohdettua työtä 5 vuoden ajan
By Social Media
·
·
6 min read
·
538 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