Sinimulan namin kamakailan ang isang maliit na proyekto upang linisin kung paano nakikipag-usap ang mga bahagi ng aming mga system sa likod ng mga eksena sa Buffer. Ilang mabilis na konteksto: gumagamit kami ng tinatawag na SQS (Amazon Simple Queue Service. Ang mga pila na ito ay kumikilos tulad ng mga waiting room para sa mga gawain. Isang bahagi ng aming system ang nag-drop ng mensahe, at ang isa pa ay kukuha nito sa ibang pagkakataon. Isipin na parang nag-iiwan ng tala para sa isang katrabaho: "Hoy, kapag ito ay may pagkakataon na magpadala ng data." isang tugon. Ang aming proyekto ay upang magsagawa ng nakagawiang pagpapanatili: i-update ang mga tool na ginagamit namin upang subukan ang mga queue sa lokal at linisin ang kanilang configuration. Ngunit habang kami ay nagma-map kung anong mga pila ang aktwal na ginagamit namin, nakakita kami ng isang bagay na hindi namin inaasahan: pitong iba't ibang mga proseso sa background (o mga cron na trabaho, na mga naka-iskedyul na gawain na awtomatikong tumatakbo) at mga manggagawa na tahimik na tumatakbo nang hanggang limang taon, kung bakit wala kaming nagawa sa lahat ng iyon ito.Bakit ito mas mahalaga kaysa sa iyong iniisipOo, ang pagpapatakbo ng hindi kinakailangang imprastraktura ay nagkakahalaga ng pera at para sa isa sa mga manggagawang iyon, magbabayad sana kami ng ~$360-600 sa loob ng 5 taon. Ito ay katamtamang halaga sa engrandeng pamamaraan ng aming pananalapi, ngunit tiyak na puro basura para sa isang proseso na walang ginagawa. Gayunpaman, pagkatapos na dumaan sa pinakamaliit na bahagi ng pananalapi na ito, ako ay ang pinakamaliit na bahagi ng pinansiyal na bahagi. sumali sa team at nag-e-explore sa aming mga system, nahaharap sila sa mga mahiwagang prosesong ito. "Ano ang ginagawa ng manggagawang ito?" umiikot sa mga landas ng code na walang layunin.At sa paglipas ng panahon, ang kaalaman sa institusyonal ba ito ay isang pansamantalang pag-aayos na naging permanente "pansamantalang" upang mahawakan ang isang paglilipat, at hindi ito mawawasak Ang isang naka-iskedyul na gawain ay nagiging kalabisan pagkatapos ng pagbabago sa arkitektura, ngunit walang sinuman ang nag-iisip na suriin. Dati kaming nagpapadala ng mga email ng pagdiriwang ng kaarawan sa Buffer, nagpatakbo kami ng isang nakaiskedyul na gawain na nagsuri sa buong database para sa mga kaarawan na tumutugma sa kasalukuyang petsa at nagpapadala sa mga customer ng isang naka-personalize na email sa panahon ng aming 20ctor ang manggagawang ito—patuloy itong tumakbo sa loob ng limang taon. Wala sa mga ito ang mga kabiguan ng mga indibidwal — ang mga ito ay mga pagkabigo sa proseso Kung walang sinasadyang paglilinis na binuo sa kung paano kami nagtatrabaho, ang entropy ay nanalo. Paano kami nakatulong sa aming arkitektura na mahanap itoTulad ng maraming kumpanya, tinanggap ng Buffer ang microservices movement (isang sikat na diskarte kung saan hinati ng mga kumpanya ang kanilang code sa maraming maliliit at independiyenteng mga serbisyo) taon na ang nakalipas. pipeline, at imprastraktura. Noong panahong iyon, may katuturan ito: ang bawat serbisyo ay maaaring i-deploy nang mag-isa, na may malinaw na mga hangganan sa pagitan ng mga koponan. sa mundo ng microservice, ang bawat repository ay may sariling isla. Ang isang nakalimutang manggagawa sa isang repo ay maaaring hindi mapansin ng mga inhinyero na nagtatrabaho sa isa pang lugar, walang pinag-isang view ng kung ano ang tumatakbo kung saan matagal nang umiral. Hindi idinisenyo ang pagsasama-sama para tulungan kaming makahanap ng imprastraktura ng zombie — ngunit ginawa nito iyonang pagtuklas ay halos hindi maiiwasan. Ano ang aktwal na ginawa naminSa sandaling natukoy namin ang mga naulilang proseso, kailangan naming magpasya kung ano ang gagawin sa mga ito. Narito kung paano namin ito nilapitan. Una, natunton namin ang bawat isa sa pinagmulan nito. Naghukay kami sa kasaysayan ng git at lumang dokumentasyon upang maunawaan kung bakit nilikha ang bawat manggagawa sa unang lugar. Sa karamihan ng mga kaso, malinaw ang orihinal na layunin: isang beses na paglilipat ng data, isang feature na lumubog, isang pansamantalang solusyon na nalampasan ang pagiging kapaki-pakinabang nito. Pagkatapos ay kinumpirma namin na sila ay talagang hindi nagamit. Bago mag-alis ng anuman, nagdagdag kami ng pag-log upang i-verify na ang mga prosesong ito ay hindi tahimik na gumagawa ng isang bagay na mahalaga na napalampas namin. Sinusubaybayan namin ng ilang araw upang matiyak na hindi sila tinawag, at inalis namin sila nang paunti-unti. Hindi namin tinanggal ang lahat nang sabay-sabay. Isa-isa naming inalis ang mga proseso, binabantayan ang anumang hindi inaasahang epekto. (Luckily, there weren't any.)Finally, we documented what we learned. Nagdagdag kami ng mga tala sa aming mga panloob na doc tungkol sa kung ano ang orihinal na ginawa ng bawat proseso at kung bakit ito inalis, kaya hindi magtataka ang mga susunod na inhinyero kung may nawawalang mahalagang bagay. Ano ang nagbago pagkatapos ng paglilinisMaaga pa kami sa pagsukat ng buong epekto, ngunit narito ang nakita namin sa ngayon. Tumpak na ngayon ang aming imbentaryo ng imprastraktura. Kapag may nagtanong, "Anong mga manggagawa ang pinapatakbo natin?" talagang masasagot namin ang tanong na iyon nang may kumpiyansa. Naging mas simple rin ang mga pag-uusap sa onboarding. Ang mga bagong inhinyero ay hindi natitisod sa mga mahiwagang proseso at nag-iisip kung wala silang konteksto. Ang codebase ay sumasalamin sa kung ano talaga ang ginagawa namin, hindi kung ano ang ginawa namin limang taon na ang nakakaraan. Ituring ang mga refactor bilang arkeolohiya at pag-iwasAng aking pinakamalaking takeaway mula sa proyektong ito: bawat makabuluhang refactor ay isang pagkakataon para sa arkeolohiya. Kapag malalim ka sa isang sistema, talagang nauunawaan kung paano kumonekta ang mga piraso, nasa perpektong posisyon ka para tanungin kung ano pa ang kailangan. Ang pila na iyon mula sa ilang lumang proyekto? Ang manggagawang ginawa ng isang tao para sa isang beses na paglipat ng data? Ang nakaiskedyul na gawain na tumutukoy sa isang tampok na hindi mo pa naririnig? Maaaring tumatakbo pa rin ang mga ito. Narito kung ano ang ginagawa namin sa aming proseso sa pasulong: Sa panahon ng anumang refactor, itanong: ano pa ang nakakaantig sa system na ito na matagal na naming hindi tinitingnan? Kapag hindi na ginagamit ang isang feature, subaybayan ito hanggang sa mga proseso sa background nito, hindi lang ang code na nakaharap sa user. Kapag may umalis sa team, idokumento kung ano ang pinangangasiwaan nila sa mga background na mayroon pa rin sa aming mga bahaging iyon. na-migrate pa sa iisang repository. Habang nagpapatuloy kami sa pagsasama-sama, tiwala kaming mahahanap namin ang higit pa sa mga nakatagong relic na ito. Ngunit ngayon ay naka-set up na kami upang mahuli ang mga ito at pigilan ang pagbuo ng mga bago. Kapag ang lahat ng iyong code ay nakatira sa isang lugar, ang naulilang imprastraktura ay walang mapagtataguan.
Ang Natutunan Namin Pagkatapos Makahanap ng 7 Nakalimutang Trabaho na Tumatakbo sa loob ng 5 Taon
By Social Media
·
·
6 min read
·
572 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