आमच्या सिस्टमचे काही भाग पडद्यामागे बफरवर कसे संवाद साधतात हे साफ करण्यासाठी आम्ही अलीकडेच एक छोटासा प्रकल्प सुरू केला आहे. काही द्रुत संदर्भ: आम्ही SQS (Amazon Simple Queue Service. या रांगा कार्यांसाठी वेटिंग रूमप्रमाणे काम करतो. आमच्या सिस्टमचा एक भाग संदेश सोडतो, आणि दुसरा तो नंतर उचलतो. याचा विचार करा, जेव्हा आपण डेटा मिळवा तेव्हा एक संधी सोडा: "सहकारी प्रक्रिया सोडा. नोट पाठवणाऱ्या सिस्टमला प्रतिसादासाठी प्रतीक्षा करावी लागत नाही. आमचा प्रकल्प नियमित देखभाल करणे हा होता: स्थानिक पातळीवर रांगांची चाचणी घेण्यासाठी आणि त्यांचे कॉन्फिगरेशन साफ करण्यासाठी आम्ही वापरत असलेली साधने अद्ययावत करा. परंतु आम्ही प्रत्यक्षात कोणत्या रांगा वापरतो हे आम्ही मॅप करत असताना, आम्हाला अपेक्षा न करता असे काहीतरी सापडले: सात वेगवेगळ्या पार्श्वभूमी प्रक्रिया (किंवा क्रॉन जॉब्स, ज्या स्वयंचलितपणे चालविल्या गेल्या आहेत) पाच वर्षांसाठी अनुसूचित केलेल्या कामांसाठी आणि सिल कर्मचाऱ्यांसाठी अनुसूचित कार्ये. ते सर्व काही करत नाहीत. हे महत्त्वाचे का आहे, आम्हाला ते कसे सापडले आणि आम्ही त्याबद्दल काय केले. हे महत्त्वाचे का आहे, होय, अनावश्यक पायाभूत सुविधा चालवण्याकरता पैसे खर्च होतात आणि त्यापैकी एकासाठी, आम्ही 5 वर्षांमध्ये ~ 360-600 पैसे दिले असते, परंतु ही सर्वात मोठी रक्कम आहे अशा प्रक्रियेसाठी कचरा जो काही करत नाही. तथापि, या क्लीनअपमधून गेल्यानंतर, मी असे म्हणू शकतो की आर्थिक खर्च हा समस्येचा सर्वात लहान भाग आहे. प्रत्येक वेळी जेव्हा एखादा नवीन अभियंता संघात सामील होतो आणि आमच्या सिस्टमचा शोध घेतो तेव्हा त्यांना या अनाकलनीय प्रक्रियेचा सामना करावा लागतो कारण ते कदाचित काहीतरी महत्त्वाचे करत असेल. अधूनमधून सुरक्षा अद्यतने, सुसंगतता सुधारणे आवश्यक आहे, यामुळे आमच्या कार्यसंघाने कोड मार्गांवर खर्च केला आहे पूर्वी, आणि संदर्भ त्यांच्याकडेच राहिले. हे कसे घडते? बोटे दाखवणे सोपे आहे, परंतु सत्य हे आहे की हे कोणत्याही दीर्घकालीन प्रणालीमध्ये घडते. एक वैशिष्ट्य नापसंत होते, परंतु पार्श्वभूमीचे काम जो स्थलांतरण हाताळण्यासाठी "तात्पुरते" चालू ठेवतो, आणि तो कधीही बदलला जात नाही तपासण्यासाठी विचार करतो. आम्ही बफरवर वाढदिवस साजरा करणारे ईमेल पाठवायचे, ज्याने वर्तमान तारखेशी जुळणारे संपूर्ण डेटाबेस तपासले आणि 2020 मध्ये रिफॅक्टर दरम्यान, आम्ही आमचे व्यवहार ईमेल साधन स्विच केले परंतु या कार्यकर्त्याच्या अयशस्वीपणाचे आणखी पाच वर्षे ते काढून टाकण्यास विसरले. आम्ही कसे कार्य करतो हे जाणूनबुजून साफ केल्याशिवाय, एंट्रॉपी जिंकते. अनेक कंपन्यांप्रमाणेच, बफरने मायक्रो सर्व्हिसेस चळवळ स्वीकारली (एक लोकप्रिय दृष्टीकोन ज्यामध्ये कंपन्या त्यांचे कोड अनेक लहान, स्वतंत्र सेवांमध्ये विभाजित करतात). संघांमध्ये स्पष्ट सीमा असल्याने स्वत:च तैनात केले जातील. परंतु अनेक वर्षात, डझनभर रिपॉझिटरी व्यवस्थापित करण्याचे फायद्यांचे प्रमाण अधिक आहे, त्यामुळे आम्ही एका बहु-सेवा एकल रेपॉजिटरीमध्ये एकत्रित झाल्या, परंतु ते एकाच ठिकाणी एकत्र राहतात. हे सर्व रीपॉझिटरी बनले आहे एका रेपोमध्ये काम करणाऱ्या अभियंत्यांच्या लक्षात येऊ शकत नाही, कुठे काय चालले आहे याचे कोणतेही एकसंध दृश्य नाही. आम्ही शेवटी प्रत्येक रांगेचे ग्राहक आणि उत्पादकांना शोधू शकलो एकत्रीकरणाची रचना आम्हाला झोम्बी पायाभूत सुविधा शोधण्यात मदत करण्यासाठी केली गेली नव्हती — परंतु यामुळे ते घडलेशोध जवळजवळ अपरिहार्य आहे. आम्ही प्रत्यक्षात काय केले एकदा आम्ही अनाथ प्रक्रिया ओळखल्या की, त्यांचे काय करायचे ते आम्हाला ठरवायचे होते. आम्ही त्याच्याशी कसे संपर्क साधला ते येथे आहे. प्रथम, आम्ही प्रत्येकाला त्याचे मूळ शोधले. प्रत्येक कामगार प्रथम का तयार केला गेला हे समजून घेण्यासाठी आम्ही गिट इतिहास आणि जुने दस्तऐवज खोदले. बऱ्याच प्रकरणांमध्ये, मूळ उद्देश स्पष्ट होता: एक-वेळ डेटा स्थलांतर, एक वैशिष्ट्य जे सूर्यास्त झाले, एक तात्पुरती वर्कअराउंड जी त्याच्या उपयुक्ततेपेक्षा जास्त आहे. मग आम्ही ते खरोखर न वापरलेले असल्याची पुष्टी केली. कोणतीही गोष्ट काढून टाकण्यापूर्वी, या प्रक्रिया शांतपणे आमच्याकडून चुकल्यासारखे काहीतरी करत नसल्याची पडताळणी करण्यासाठी आम्ही लॉगिंग जोडले. त्यांना अजिबात बोलावले गेले नाही याची खात्री करण्यासाठी आम्ही काही दिवस निरीक्षण केले आणि आम्ही त्यांना हळूहळू काढून टाकले. आम्ही एकाच वेळी सर्व काही हटवले नाही. कोणत्याही अनपेक्षित दुष्परिणामांकडे लक्ष ठेवून आम्ही एक-एक करून प्रक्रिया काढून टाकल्या. (सुदैवाने, तेथे कोणतेही नव्हते.) शेवटी, आम्ही जे शिकलो त्याचे दस्तऐवजीकरण केले. आम्ही आमच्या अंतर्गत दस्तऐवजांमध्ये प्रत्येक प्रक्रियेने मूलतः काय केले होते आणि ती का काढली होती याच्या टिपा जोडल्या आहेत, त्यामुळे भविष्यातील अभियंत्यांना काही महत्त्वाचे गहाळ झाल्यास आश्चर्य वाटणार नाही. साफ केल्यानंतर काय बदलले आम्ही अद्याप पूर्ण प्रभाव मोजण्यात लवकर आहोत, परंतु आम्ही आतापर्यंत जे पाहिले ते येथे आहे. आमची पायाभूत सुविधांची यादी आता अचूक आहे. जेव्हा कोणी विचारले की "आम्ही कोणते कामगार चालवतो?" आम्ही त्या प्रश्नाचे उत्तर आत्मविश्वासाने देऊ शकतो. ऑनबोर्डिंग संभाषणे देखील सोपे झाले आहेत. नवीन अभियंते अनाकलनीय प्रक्रियांमध्ये अडखळत नाहीत आणि त्यांना संदर्भ गहाळ आहे की नाही याबद्दल आश्चर्य वाटते. कोडबेस आम्ही प्रत्यक्षात काय करतो ते प्रतिबिंबित करतो, आम्ही पाच वर्षांपूर्वी काय केले नाही. रिफॅक्टर्सना पुरातत्वशास्त्र आणि प्रतिबंध म्हणून हाताळा. या प्रकल्पातील माझा सर्वात मोठा मार्ग आहे: प्रत्येक महत्त्वपूर्ण रिफॅक्टर ही पुरातत्वशास्त्रासाठी एक संधी आहे. जेव्हा तुम्ही एखाद्या सिस्टीममध्ये खोलवर असता, तुकडे कसे जोडले जातात हे खरोखर समजून घेतो, तेव्हा तुम्ही अद्याप काय आवश्यक आहे याबद्दल प्रश्न विचारण्यास योग्य स्थितीत असता. कुठल्यातरी जुन्या प्रकल्पाची ती रांग? कार्यकर्ता कोणीतरी एक-वेळ डेटा स्थलांतर करण्यासाठी तयार केले? शेड्यूल केलेले कार्य जे तुम्ही कधीही ऐकले नसलेल्या वैशिष्ट्याचा संदर्भ देते? ते अजूनही चालू असू शकतात.आम्ही आमच्या प्रक्रियेत पुढे काय तयार करत आहोत ते येथे आहे:कोणत्याही रिफॅक्टर दरम्यान, विचारा: या प्रणालीला आणखी काय स्पर्श करते ज्याकडे आम्ही काही काळापासून पाहिले नाही?एखादे वैशिष्ट्य नापसंत करताना, केवळ वापरकर्ता-फेसिंग कोड नव्हे तर त्याच्या पार्श्वभूमी प्रक्रियेवर सर्व मार्ग शोधून काढा. जेव्हा कोणी संघ सोडतो, तेव्हा आमच्याकडे कोणत्या पार्श्वभूमीच्या भागांचे प्रभारी होते, विशेषत: आमच्याकडे कोणत्या पार्श्वभूमीच्या प्रभारी भाग आहेत याचे दस्तऐवजीकरण करा. कोडबेस जो अद्याप एकल रेपॉजिटरीमध्ये स्थलांतरित झाला नाही. जसजसे आम्ही एकत्रीकरण करत राहू तसतसे आम्हाला खात्री आहे की आम्हाला यापैकी आणखी लपवलेले अवशेष सापडतील. परंतु आता आम्ही त्यांना पकडण्यासाठी आणि नवीन तयार होण्यापासून रोखण्यासाठी सेट अप केले आहे. जेव्हा तुमचा सर्व कोड एकाच ठिकाणी राहतो, तेव्हा अनाथ पायाभूत सुविधांना लपवण्यासाठी कोठेही नसते.
5 वर्षे चालत असलेल्या 7 विसरलेल्या नोकऱ्या शोधल्यानंतर आम्ही काय शिकलो
By Social Media
·
·
6 min read
·
657 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