Бид саяхан Buffer дээр системийнхээ хэсгүүдийн хөшигний ард хэрхэн холбогдож байгааг цэвэрлэх жижиг төслийг эхлүүлсэн. Зарим хурдан контекст: бид SQS (Amazon Simple Queue Service) гэж нэрлэгддэг зүйлийг ашигладаг. Эдгээр дараалал нь даалгаврын хүлээлгийн өрөө шиг ажилладаг. Манай системийн нэг хэсэг нь мессежийг буулгаж, нөгөө хэсэг нь мессежийг дараа нь авдаг. Үүнийг хамт ажиллагсаддаа тэмдэглэл үлдээхтэй адилаар бодоод үз л дээ. note нь хариу хүлээх шаардлагагүй. Манай төсөл бол байнгын засвар үйлчилгээ хийх явдал байв: бидний ашигладаг дарааллыг дотооддоо туршиж, тохиргоог нь цэвэрлэх. Гэхдээ бид ямар дарааллыг ашиглаж байгааг зураглаж байх хооронд бидний төсөөлөөгүй зүйлийг олж харлаа: долоон өөр арын процесс (эсвэл автоматаар ажилладаг хуваарьтай ажил) болон таван жил үргэлжилсэн ажилчид Энэ яагаад чухал вэ, бид тэдгээрийг хэрхэн олсон, энэ талаар юу хийсэн бэ. Энэ нь таны бодож байснаас хамаагүй чухал юм. Тийм ээ, би маш хурдан тооцоо хийсэн бөгөөд эдгээр ажилчдын нэг нь 5 жилийн хугацаанд бид 360-600 доллар төлөх байсан. Цэвэрлэх бол санхүүгийн зардал нь үнэндээ асуудлын хамгийн өчүүхэн хэсэг гэж би маргаж байна. Шинэ инженер багт нэгдэж, манай системийг судлах болгонд "Энэ ажилчин юу хийдэг вэ?" гэсэн асуулт гарч ирдэг, учир нь бид бүгд ямар нэг зүйл хийхээс айдаг." Дэд бүтэц нь хааяа нэг зүйл өөрчлөгдөхөд аюулгүй байдлын шинэчлэлтүүдийг хийх шаардлагатай болдог. Энэ нь манай багийн хувьд ямар ч зорилгоо биелүүлээгүй засвар үйлчилгээ хийхэд хүргэсэн. Цаг хугацаа өнгөрөхөд үүнийг үүсгэсэн хүн үүнийг орхих нь маш чухал байсан уу? Гэхдээ үнэн бол энэ нь ямар ч урт хугацааны системд тохиолддог. Нэг онцлог шинж чанар нь хуучирч мууддаг, гэхдээ хэн нэгэн ажилчдыг "түр зуур" ажиллуулдаг бөгөөд энэ нь архитектурын өөрчлөлтийн дараа хэзээ ч тасардаггүй Төрсөн өдрийн мэдээллийн санг бүхэлд нь шалгаж, 2020 онд хийсэн рефакторын үеэр бид гүйлгээний цахим шуудангийн хэрэглүүрийг сольсон боловч энэ ажил дахин таван жил ажилласаар байна. Эдгээрийн аль нь ч хувь хүмүүсийн алдаа биш - эдгээр нь бидний архитектурт санаатай цэвэрлэгээ хийлгүйгээр бидэнд тусалдаг. Буфер нь бичил үйлчилгээний хөдөлгөөнийг (компаниуд өөрсдийн кодыг олон жижиг, бие даасан үйлчилгээ болгон хуваах түгээмэл арга) олон жилийн өмнө хүлээн зөвшөөрсөн. Бид өөрсдийн нэг төрлийн үйлчилгээ болгон хувааж, тус бүр нь өөрийн агуулах, байршуулах хоолой, дэд бүтэцтэй байсан бөгөөд тухайн үед энэ нь утга учиртай байсан: үйлчилгээ тус бүрийг дангаар нь байрлуулж, олон жилийн туршид ажиллаж байсан хүмүүсийн хоорондын тодорхой хил хязгаарыг олж мэдсэн. Энэ нь бидний багтаамжтай багийн ашиг тусаас давсан тул бид олон үйлчилгээтэй нэг репозиторыг нэгтгэсэн, гэхдээ тэдгээр нь нэг газар амьдардаг. Энэ нь нээлтийг хийх боломжтой болгосон юм. Хаана ажиллаж байгаа талаар нэгдмэл ойлголт байхгүй. Бүх зүйлийг нэг репозитортой болгосноор бид дараалал бүрийг түүний хэрэглэгчид болон үйлдвэрлэгчид рүү харж чадсан боловч одоо байхгүй болсон дарааллыг лавлаж буй ажилчдыг олж чадсангүй.нээлт бараг гарцаагүй. Бид яг үнэндээ юу хийсэн бэ, бид өнчин болсон үйл явцыг олж мэдсэнийхээ дараа тэдэнтэй юу хийхээ шийдэх хэрэгтэй болсон. Бид үүнд хэрхэн хандсаныг эндээс үзнэ үү. Эхлээд бид тус бүрийг гарал үүслийг нь судалж үзсэн. Ажилчин бүр яагаад анх үүссэнийг ойлгохын тулд бид git-ийн түүх, хуучин баримт бичгүүдийг ухаж үзсэн. Ихэнх тохиолдолд анхны зорилго нь тодорхой байсан: нэг удаагийн өгөгдөл шилжүүлэх, нар жаргах функц, ашиг тусаа алдсан түр зуурын шийдэл. Дараа нь бид тэдгээрийг үнэхээр ашиглаагүй болохыг баталсан. Ямар нэг зүйлийг арилгахын өмнө бид эдгээр процессууд бидний орхигдуулж байсан чухал зүйлийг чимээгүйхэн хийгээгүй эсэхийг шалгахын тулд бүртгэлийг нэмсэн. Бид тэднийг огт дуудаагүй эсэхийг хэд хоногийн турш хянаж, үе шаттайгаар устгасан. Бид бүгдийг нэг дор устгаагүй. Бид аливаа гэнэтийн гаж нөлөөг ажиглаж, процессуудыг нэг нэгээр нь устгасан. (Азаар нэг ч байсангүй.) Эцэст нь бид сурсан зүйлээ баримтжуулсан. Бид дотоод баримт бичигт үйл явц бүрийг анх юу хийж байсан, яагаад устгасан тухай тэмдэглэл нэмсэн тул ирээдүйн инженерүүд ямар нэг чухал зүйл алга болсон эсэхэд эргэлзэхгүй байх болно. Цэвэрлэгээ хийсний дараа юу өөрчлөгдсөн бэ. Бид нөлөөллийг бүрэн хэмжихэд эрт байгаа ч өнөөг хүртэл бидний харсан зүйл энд байна. Манай дэд бүтцийн тооллого одоо үнэн зөв болсон. Хэн нэгэн "Бид ямар ажилчид ажиллуулдаг вэ?" Бид үнэндээ энэ асуултад итгэлтэйгээр хариулж чадна. Онцлох яриа ч бас хялбар болсон. Шинэ инженерүүд нууцлаг үйл явцын өмнө бүдэрч, контекстийг алдаж байна уу гэж гайхдаггүй. Кодын сан нь бидний таван жилийн өмнө хийсэн зүйл биш харин бидний хийж байгаа зүйлийг тусгадаг. Рефакторыг археологи, урьдчилан сэргийлэлт гэж үзэх Энэ төслөөс авсан хамгийн том зүйл: чухал рефактор бүр нь археологийн хувьд боломж юм. Та системд гүн гүнзгий нэвтэрч, хэсгүүд хэрхэн холбогдож байгааг үнэхээр ойлгож байгаа үед та одоо ч гэсэн юу хэрэгтэй байгааг асуух төгс байрлалд байна. Хуучин төслийн дараалал уу? Нэг удаагийн өгөгдөл шилжүүлэхэд зориулан бүтээсэн ажилчин уу? Таны хэзээ ч сонсож байгаагүй онцлогийг харуулсан хуваарьт даалгавар? Тэд одоо ч ажиллаж байгаа байж магадгүй. Бидний цаашдын үйл явцдаа юуг бий болгож байгааг эндээс харж болно: Аливаа дахин засварлах явцад бидний удаан хугацааны турш хараагүй энэ системд өөр юу нөлөөлж байна вэ гэж асуугаарай? Онцлогыг ашиглахгүй байх үед зөвхөн хэрэглэгч рүү чиглэсэн кодыг биш, түүний арын процессыг хүртэл мөрдөөрэй. Хэн нэгэн багийг орхих үед тэдний хариуцаж байсан зүйлсийг баримтжуулна, ялангуяа бидний хуучин кодуудад бидний ажиллаж байсан зүйлс байгаа. хараахан нэг репозитор руу шилжүүлээгүй байна. Үргэлжлүүлэн нэгтгэх тусам бид эдгээр далд дурсгалуудыг олно гэдэгт итгэлтэй байна. Харин одоо бид тэдгээрийг барьж, шинээр үүсэхээс урьдчилан сэргийлэхээр тохируулагдсан. Таны бүх код нэг дор байх үед өнчин дэд бүтэц нуугдах газаргүй болно.
5 жилийн турш мартагдсан 7 ажлын байрыг олсны дараа бид юу сурсан
By Social Media
·
·
6 min read
·
172 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