Kami baru-baru ini memulakan projek kecil untuk membersihkan cara bahagian sistem kami berkomunikasi di sebalik tabir di Buffer. Beberapa konteks pantas: kami menggunakan sesuatu yang dipanggil SQS (Perkhidmatan Gilir Mudah Amazon. Barisan gilir ini bertindak seperti bilik menunggu untuk tugasan. Satu bahagian sistem kami melepaskan mesej dan satu lagi mengambilnya kemudian. Anggaplah ia seperti meninggalkan nota untuk rakan sekerja: "Hei, apabila anda mempunyai peluang untuk memproses data." respons.Projek kami adalah untuk melakukan penyelenggaraan rutin: mengemas kini alatan yang kami gunakan untuk menguji baris gilir secara tempatan dan membersihkan konfigurasinya.Tetapi semasa kami memetakan baris gilir yang sebenarnya kami gunakan, kami menemui sesuatu yang tidak kami jangkakan: tujuh proses latar belakang yang berbeza (atau kerja cron, yang merupakan tugas berjadual yang dijalankan secara automatik) dan pekerja yang telah berjalan secara senyap sehingga lima tahun, apa yang kami lakukan untuk semua itu, apa yang kami lakukan ia.Mengapa ini lebih penting daripada yang anda fikirkan. Ya, menjalankan infrastruktur yang tidak diperlukan memerlukan wang. Saya membuat pengiraan pantas dan untuk salah seorang pekerja itu, kami akan membayar ~$360-600 dalam tempoh 5 tahun Ini adalah jumlah yang sederhana dalam skim besar kewangan kami, tetapi pastinya pembaziran murni untuk proses yang tidak melakukan apa-apa. Walau bagaimanapun, selepas melalui proses pembersihan yang paling kecil ini, saya sebenarnya mengalami masalah kewangan yang paling kecil. menyertai pasukan dan meneroka sistem kami, mereka menghadapi proses misteri ini "Apa yang pekerja ini lakukan?" kitaran pada laluan kod yang tidak mempunyai tujuan. Dan dari masa ke masa, pengetahuan institusi menjadi pudar? Adakah ini merupakan pembaikan sementara yang menjadi kekal. Orang yang menciptanya meninggalkan syarikat itu bertahun-tahun yang lalu, dan konteksnya ditinggalkan dengan mereka. Bagaimana ini boleh berlaku? Memang mudah untuk menuding jari, tetapi sebenarnya ini berlaku secara semula jadi dalam mana-mana sistem yang bertahan lama, tetapi ciri itu terus berfungsi "sementara" untuk mengendalikan penghijrahan, dan tugasan yang dijadualkan menjadi berlebihan selepas perubahan seni bina, tetapi tiada siapa yang terfikir untuk menyemak. Kami pernah menghantar e-mel sambutan hari lahir di Buffer, kami menjalankan tugas berjadual yang menyemak keseluruhan pangkalan data yang sepadan dengan tarikh semasa dan menghantar e-mel yang diperibadikan kepada pelanggan untuk 20 pekerja ini—ia terus berjalan selama lima tahun lagi. Tiada satu pun daripada ini adalah kegagalan individu — ia adalah kegagalan proses Tanpa pembersihan yang disengajakan yang terbina dalam cara kami bekerja, entropi menang. Bagaimana seni bina kami membantu kami mencarinyaSeperti kebanyakan syarikat, Buffer menerima pergerakan perkhidmatan mikro (pendekatan popular di mana syarikat membahagikan kod mereka kepada banyak perkhidmatan yang kecil dan bebas) tahun lalu. saluran paip, dan infrastruktur. Pada masa itu, ia masuk akal: setiap perkhidmatan boleh digunakan sendiri, dengan sempadan yang jelas antara pasukan. Tetapi selama bertahun-tahun, kami mendapati overhed mengurus berpuluh-puluh repositori melebihi faedah untuk pasukan saiz kami Jadi kami menggabungkan menjadi satu repositori tunggal berbilang perkhidmatan, tetapi ini boleh didapati secara langsung. dunia microservices, setiap repositori adalah pulaunya sendiri. Pekerja yang terlupa dalam satu repo mungkin tidak pernah diperhatikan oleh jurutera yang bekerja di tempat lain lebih lama wujud. Penggabungan ini tidak direka untuk membantu kami mencari infrastruktur zombi — tetapi ia berjaya melakukannyapenemuan hampir tidak dapat dielakkan.Apa yang sebenarnya kami lakukanSetelah kami mengenal pasti proses-proses yatim, kami perlu memutuskan apa yang perlu dilakukan dengannya. Begini cara kami mendekatinya. Mula-mula, kami menjejaki setiap satu ke asalnya. Kami menggali sejarah git dan dokumentasi lama untuk memahami sebab setiap pekerja dicipta pada mulanya. Dalam kebanyakan kes, tujuan asal adalah jelas: penghijrahan data sekali sahaja, ciri yang telah terbenam, penyelesaian sementara yang melebihi kegunaannya. Kemudian kami mengesahkan bahawa ia benar-benar tidak digunakan. Sebelum mengalih keluar apa-apa, kami menambah pengelogan untuk mengesahkan proses ini tidak melakukan sesuatu yang penting secara senyap-senyap yang kami terlepas. Kami memantau selama beberapa hari untuk memastikan mereka tidak dipanggil sama sekali, dan kami mengalih keluar mereka secara berperingkat. Kami tidak memadamkan semuanya sekaligus. Kami mengalih keluar proses satu demi satu, memerhatikan sebarang kesan sampingan yang tidak dijangka. (Nasib baik, tidak ada.) Akhirnya, kami mendokumentasikan apa yang kami pelajari. Kami menambahkan nota pada dokumen dalaman kami tentang perkara yang pada asalnya dilakukan oleh setiap proses dan sebab ia telah dialih keluar, jadi jurutera masa depan tidak akan tertanya-tanya jika sesuatu yang penting telah hilang. Perkara yang berubah selepas pembersihanKami masih awal dalam mengukur kesan penuh, tetapi inilah perkara yang telah kami lihat setakat ini. Inventori infrastruktur kami kini tepat. Apabila seseorang bertanya, "Pekerja apa yang kami jalankan?" kita sebenarnya boleh menjawab soalan itu dengan yakin. Perbualan onboarding juga menjadi lebih mudah. Jurutera baharu tidak terjumpa proses misteri dan tertanya-tanya jika mereka tiada konteks. Pangkalan kod mencerminkan perkara yang sebenarnya kami lakukan, bukan apa yang kami lakukan lima tahun lalu. Anggap refactor sebagai arkeologi dan pencegahan Pengambilan terbesar saya daripada projek ini: setiap refactor yang penting ialah peluang untuk arkeologi. Apabila anda mendalami sistem, benar-benar memahami cara kepingan itu bersambung, anda berada dalam kedudukan yang tepat untuk mempersoalkan perkara yang masih diperlukan. Barisan beratur itu dari beberapa projek lama? Pekerja yang dibuat seseorang untuk pemindahan data sekali sahaja? Tugas berjadual yang merujuk ciri yang anda tidak pernah dengar? Ia mungkin masih berjalan. Inilah yang kami sedang bina dalam proses kami pada masa hadapan: Semasa mana-mana refactor, tanya: apakah lagi yang menyentuh sistem ini yang sudah lama tidak kami lihat? Apabila menafikan ciri, jejakinya sehingga ke proses latar belakangnya, bukan hanya kod yang dihadapi oleh pengguna. Apabila seseorang meninggalkan pasukan, dokumenkan perkara yang mereka bertanggungjawab, terutamanya bahagian latar belakang yang masih ada pada kod kami. telah dipindahkan ke repositori tunggal lagi. Sambil kami meneruskan penyatuan, kami yakin kami akan menemui lebih banyak peninggalan tersembunyi ini. Tetapi kini kami bersedia untuk menangkapnya dan menghalang kod baharu daripada terbentuk. Apabila semua kod anda berada di satu tempat, infrastruktur yatim piatu tidak mempunyai tempat untuk disembunyikan.
Apa yang Kami Pelajari Selepas Menemui 7 Pekerjaan Terlupa Berjalan Selama 5 Tahun
By Social Media
·
·
6 min read
·
169 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