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

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free