Bu yaxınlarda sistemlərimizin hissələrinin Buferdə pərdə arxasında necə əlaqə saxladığını təmizləmək üçün kiçik bir layihəyə başladıq. Bəzi sürətli kontekst: biz SQS (Amazon Simple Queue Service) adlı bir şeydən istifadə edirik. Bu növbələr tapşırıqlar üçün gözləmə otaqları kimi fəaliyyət göstərir. Sistemimizin bir hissəsi mesajı buraxır, digəri isə mesajı daha sonra götürür. Bunu bir iş yoldaşınız üçün qeyd buraxmaq kimi düşünün. O, məlumatı göndərdiyiniz zaman sistem: " a. Qeyd cavab gözləmək məcburiyyətində deyil. Layihəmiz müntəzəm texniki xidmət göstərmək idi: növbələri yerli olaraq sınamaq və onların konfiqurasiyasını təmizləmək üçün istifadə etdiyimiz alətləri yeniləyin. Lakin biz əslində hansı növbələrdən istifadə etdiyimizi xəritələşdirərkən, gözləmədiyimiz bir şey tapdıq: yeddi fərqli fon prosesi (yaxud avtomatik işləyən planlaşdırılmış tapşırıqlar) və onlar üçün heç bir faydası olmayan işçilər Bu niyə vacibdir, onları necə tapdıq və bu barədə nə etdik. Bəli, lazımsız infrastrukturun işlədilməsi pula başa gəlir və mən 5 il ərzində biz 360-600 dollar ödəmiş olarıq. Təmizləmə, mən iddia edərdim ki, maliyyə xərcləri əslində problemin ən kiçik hissəsidir. Hər dəfə yeni mühəndis komandaya qoşulduqda və sistemlərimizi araşdırdıqda, bu sirli proseslərlə qarşılaşırlar: “Bu işçi nə edir?” sualına çevrilir ki, biz hamımız orada olmuşuq, çünki bir şeyə toxunmaqdan qorxmuşuq.” İnfrastrukturun vaxtaşırı diqqətə ehtiyacı var, başqa bir şey dəyişdikdə, bu, komandamızın heç bir məqsədə xidmət etməyən texniki xidmət dövrlərinə səbəb oldu. lakin həqiqət budur ki, bu, hər hansı bir uzunömürlü sistemdə təbii olaraq baş verir. Bir xüsusiyyət köhnəlir, lakin onu dəstəkləyən fon işi, bir işçini miqrasiyanı idarə etmək üçün "müvəqqəti olaraq" işə salır və o, heç vaxt yıxılmır cari tarixə uyğun gələn ad günləri üçün bütün verilənlər bazasını yoxlayan və müştərilərə fərdi e-poçt göndərən planlaşdırılmış tapşırıq 2020-ci ildəki refaktor zamanı biz bu işçini silməyi unutduq – o, daha beş il işləməyə davam etdi. Bunların heç biri fərdlərin uğursuzluğu deyil – bir çox şirkətlərimizin işinə kömək edən qəsdən təmizləmə apardıq. Bufer mikroservislər hərəkatını (şirkətlərin kodlarını bir çox kiçik, müstəqil xidmətlərə böldüyü məşhur yanaşma) illər əvvəl qəbul etdi. Biz monolitimizi hər birinin öz deposu, yerləşdirmə boru kəməri və infrastrukturu olan ayrı-ayrı xidmətlərə böldük. Biz bir çox xidmətli bir depoda birləşdik, lakin onlar bir yerdə yaşayırlar. Bu, kəşfi mümkün edən şey oldu. Nəyin işlədiyinə dair vahid bir görünüş yox idi. Nəhayət, hər bir növbəni onun istehlakçılarına və istehsalçılarına görə görə bildik. İstehsalçılarla olan növbələri görə bildik, lakin heç bir istehlakçıya müraciət edə bilmədik.Kəşf demək olar ki, qaçılmazdır. Biz əslində nə etdik, biz yetim prosesləri müəyyən etdikdən sonra onlarla nə edəcəyimizə qərar verməli olduq. Biz ona necə yanaşdıq. Birincisi, hər birinin mənşəyini izlədik. Hər bir işçinin ilk növbədə niyə yaradıldığını başa düşmək üçün git tarixini və köhnə sənədləri araşdırdıq. Əksər hallarda ilkin məqsəd aydın idi: birdəfəlik məlumat miqrasiyası, qürub edən xüsusiyyət, faydalılığını geridə qoyan müvəqqəti həll yolu. Sonra onların həqiqətən istifadə olunmadığını təsdiq etdik. Nəyisə silməzdən əvvəl, bu proseslərin qaçırdığımız vacib bir şeyi sakitcə etmədiyini yoxlamaq üçün giriş əlavə etdik. Biz bir neçə gün nəzarət etdik ki, onların ümumiyyətlə çağırılmadığını yoxladıq və mərhələli şəkildə çıxardıq. Hər şeyi bir anda silmədik. Gözlənilməz yan təsirləri müşahidə edərək prosesləri bir-bir aradan qaldırdıq. (Xoşbəxtlikdən, yox idi.) Nəhayət, öyrəndiklərimizi sənədləşdirdik. Biz daxili sənədlərimizə hər bir prosesin ilkin olaraq nə etdiyi və onun niyə silindiyi barədə qeydlər əlavə etdik, beləliklə, gələcək mühəndislər vacib bir şeyin itib-çıxmadığını düşünməsinlər. Təmizləmədən sonra nə dəyişdi Biz hələ tam təsiri ölçməkdə erkənyik, lakin indiyə qədər gördüklərimiz bunlardır. İnfrastruktur inventarımız indi dəqiqdir. Biri soruşanda ki, biz hansı fəhlələri işlədirik? biz əslində bu suala əminliklə cavab verə bilərik. Onboarding söhbətləri də sadələşdi. Yeni mühəndislər sirli proseslərin qarşısında büdrəmirlər və kontekstdən məhrum olub-olmadıqları ilə maraqlanmırlar. Kod bazası beş il əvvəl etdiklərimizi deyil, əslində etdiklərimizi əks etdirir. Refaktorlara arxeologiya və profilaktika kimi yanaşın Bu layihədən əldə etdiyim ən böyük çıxışım: hər bir əhəmiyyətli refaktor arxeologiya üçün bir fürsətdir. Bir sistemin dərinliyində olanda, parçaların necə birləşdiyini həqiqətən dərk edəndə, hələ də nəyin lazım olduğunu sorğulamaq üçün mükəmməl vəziyyətdə olursunuz. Hansısa köhnə layihənin növbəsi? Birdəfəlik məlumat köçürməsi üçün yaradılan işçi? Heç eşitmədiyiniz xüsusiyyətə istinad edən planlaşdırılmış tapşırıq? Ola bilsin ki, onlar hələ də işləyirlər. Budur, irəliləyiş prosesimizə daxil edirik: İstənilən refaktor zamanı soruşun: bu sistemə bir müddətdir baxmadığımız başqa nə toxunur? Funksiyanı ləğv edərkən, onu yalnız istifadəçinin üzləşdiyi kodla deyil, onun arxa plandakı proseslərinə qədər izləyin. Kimsə komandadan çıxanda, onların nəyə cavabdeh olduqlarını sənədləşdirin, xüsusən də bizim köhnə işlərimizin arxa planında olan elementlərimiz hələ də var. hələ vahid depoya köçürülməmişdir. Konsolidasiyaya davam etdikcə bu gizli qalıqların daha çoxunu tapacağımıza əminik. Amma indi biz onları tutmaq və yenilərinin əmələ gəlməsinin qarşısını almaq üçün qurulmuşuq. Bütün kodunuz bir yerdə yaşayanda, yetim infrastrukturun gizlənəcək yeri yoxdur.
5 il ərzində işləyən 7 unudulmuş işi tapdıqdan sonra öyrəndiklərimiz
By Social Media
·
·
6 min read
·
190 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