ہم نے حال ہی میں یہ صاف کرنے کے لیے ایک چھوٹا پروجیکٹ شروع کیا ہے کہ کس طرح ہمارے سسٹمز کے کچھ حصے بفر پر پردے کے پیچھے بات چیت کرتے ہیں۔ کچھ فوری سیاق و سباق: ہم SQS (ایمیزون سادہ قطار سروس۔ یہ قطاریں کاموں کے لیے انتظار گاہوں کی طرح کام کرتی ہیں۔ ہمارے سسٹم کا ایک حصہ پیغام چھوڑتا ہے، اور دوسرا اسے بعد میں اٹھا لیتا ہے۔ اس کے بارے میں سوچیں، جیسے کہ آپ کو ڈیٹا حاصل کرنے کا موقع ملتا ہے: "کوئی ڈیٹا حاصل کرنے کے لیے۔" جو سسٹم نوٹ بھیجتا ہے اسے جواب کے لیے انتظار نہیں کرنا پڑتا۔ ہمارا پروجیکٹ معمول کی دیکھ بھال کرنا تھا: ان ٹولز کو اپ ڈیٹ کریں جو ہم قطاروں کو مقامی طور پر جانچنے کے لیے استعمال کرتے ہیں اور ان کی کنفیگریشن کو صاف کرتے ہیں۔ لیکن جب ہم یہ نقشہ بنا رہے تھے کہ ہم اصل میں کون سی قطاریں استعمال کرتے ہیں، ہمیں کچھ ایسا ملا جس کی ہمیں توقع نہیں تھی: سات مختلف پس منظر کے عمل (یا کرون کام، جو کہ خود کار طریقے سے پانچ سال تک چل رہے ہیں) اور کام کرنے والے کارکنوں کے لیے خود بخود چل رہے ہیں۔ یہ سب کچھ بھی کارآمد نہیں ہیں۔ یہ کیوں اہم ہے، ہم نے انہیں کیسے پایا، اور ہم نے اس کے بارے میں کیا کیا۔ یہ آپ کے خیال سے زیادہ کیوں اہم ہے، ہاں، میں نے ایک فوری حساب لگایا اور ان میں سے ایک کارکن کے لیے، ہم نے 5 سال میں ~ 360-600 ادا کیے ہوں گے، لیکن یہ ہماری سب سے بڑی رقم ہے۔ ایک ایسا عمل جو کچھ نہیں کرتا۔ تاہم، اس صفائی سے گزرنے کے بعد، میں یہ کہوں گا کہ مالیاتی لاگت دراصل اس مسئلے کا سب سے چھوٹا حصہ ہے۔ جب بھی کوئی نیا انجینئر ٹیم میں شامل ہوتا ہے اور ہمارے سسٹمز کو دریافت کرتا ہے، تو وہ ان پراسرار عملوں کا سامنا کرتے ہیں، "یہ کارکن کیا کرتا ہے؟ یہ اس لیے کہ شاید یہ کچھ اہم کر رہا ہے۔ یہاں تک کہ کبھی کبھار حفاظتی اپ ڈیٹس، مطابقت پذیری کو درست کرنے کی ضرورت ہوتی ہے، جس کی وجہ سے ہماری ٹیم کو کوڈ کے راستے پر خرچ کرنا پڑتا ہے۔ پہلے، اور سیاق و سباق ان کے پاس رہ گیا ہے۔ یہ کیسے ہوتا ہے؟ انگلی اٹھانا آسان ہے، لیکن حقیقت یہ ہے کہ یہ کسی بھی طویل عرصے تک چلنے والے نظام میں قدرتی طور پر ہوتا ہے۔ چیک کرنے کے لیے سوچتا ہے۔ ایسا کرنے کے لیے، ہم نے ایک طے شدہ ٹاسک چلایا جس میں موجودہ تاریخ سے مماثل سالگرہ کے لیے پورے ڈیٹا بیس کی جانچ پڑتال کی گئی اور 2020 میں ایک ریفیکٹر کے دوران، ہم نے اپنے ٹرانزیکشنل ای میل ٹول کو تبدیل کر دیا، لیکن ان کی ناکامی کے پانچ سالوں کے لیے اسے ہٹانا بھول گئے۔ بغیر کسی جان بوجھ کر صفائی کی کہ ہم کیسے کام کرتے ہیں، اینٹروپی جیت جاتی ہے۔ بہت سی کمپنیوں کی طرح بفر نے مائیکرو سروسز موومنٹ کو اپنایا (ایک مقبول طریقہ جہاں کمپنیاں اپنے کوڈ کو کئی چھوٹی، آزاد خدمات میں تقسیم کرتی ہیں) ٹیموں کے درمیان واضح حدود کے ساتھ خود ہی تعینات کیا جائے گا۔ لیکن کئی سالوں میں، ہم نے دیکھا کہ درجنوں ریپوزٹریوں کا انتظام ہمارے سائز سے زیادہ ہے، لہذا ہم نے ایک ملٹی سروس ایک ریپوزٹری میں شامل کیا ہے، لیکن وہ ایک جگہ پر ایک ساتھ رہتے ہیں۔ ایک ریپو میں بھولے ہوئے کارکن کو دوسرے میں کام کرنے والے انجینیئرز کی طرف سے کبھی نہیں دیکھا جا سکتا ہے، جہاں کیا چل رہا ہے اس کا کوئی متفقہ نظارہ نہیں ہے۔ ہم آخر کار ہر قطار کو اس کے صارفین اور پروڈیوسرز کو تلاش کر سکتے ہیں جو کہ ہم موجود نہیں ہیں۔ کنسولیڈیشن کو زومبی انفراسٹرکچر تلاش کرنے میں ہماری مدد کرنے کے لیے ڈیزائن نہیں کیا گیا تھا - لیکن اس نے اسے بنایادریافت تقریباً ناگزیر ہے۔ ہم نے اصل میں کیا کیا ایک بار جب ہم نے یتیم ہونے والے عمل کی نشاندہی کی، ہمیں فیصلہ کرنا تھا کہ ان کے ساتھ کیا کرنا ہے۔ یہ ہے کہ ہم اس تک کیسے پہنچے۔ سب سے پہلے، ہم نے ہر ایک کو اس کی اصل کا پتہ لگایا۔ ہم نے یہ سمجھنے کے لیے گٹ ہسٹری اور پرانی دستاویزات کو کھود لیا کہ ہر کارکن کو پہلی جگہ کیوں بنایا گیا تھا۔ زیادہ تر معاملات میں، اصل مقصد واضح تھا: ایک بار ڈیٹا کی منتقلی، ایک ایسی خصوصیت جو غروب ہو گئی، ایک عارضی حل جس نے اس کی افادیت کو ختم کر دیا۔ پھر ہم نے تصدیق کی کہ وہ واقعی غیر استعمال شدہ تھے۔ کسی بھی چیز کو ہٹانے سے پہلے، ہم نے لاگنگ کو شامل کیا تاکہ اس بات کی تصدیق کی جا سکے کہ یہ عمل خاموشی سے کوئی اہم کام نہیں کر رہے تھے جس سے ہم چھوٹ گئے تھے۔ ہم نے اس بات کو یقینی بنانے کے لیے کچھ دنوں تک نگرانی کی کہ انہیں بلایا ہی نہیں گیا، اور ہم نے انہیں بتدریج ہٹا دیا۔ ہم نے سب کچھ ایک ساتھ حذف نہیں کیا۔ ہم نے کسی بھی غیر متوقع ضمنی اثرات کو دیکھتے ہوئے ایک ایک کرکے عمل کو ہٹا دیا۔ (خوش قسمتی سے، وہاں کوئی نہیں تھا۔) آخر میں، ہم نے جو کچھ سیکھا اسے دستاویزی شکل دی۔ ہم نے اپنے داخلی دستاویزات میں اس بارے میں نوٹس شامل کیے ہیں کہ ہر عمل نے اصل میں کیا کیا تھا اور اسے کیوں ہٹایا گیا تھا، اس لیے مستقبل کے انجینئرز اس بات پر حیران نہیں ہوں گے کہ کوئی اہم چیز گم ہو گئی ہے۔ جب کوئی پوچھے کہ ہم کون سے کارکن چلاتے ہیں؟ ہم درحقیقت اس سوال کا جواب اعتماد کے ساتھ دے سکتے ہیں۔ آن بورڈنگ گفتگو بھی آسان ہو گئی ہے۔ نئے انجینئرز پراسرار عمل میں ٹھوکریں نہیں کھا رہے ہیں اور یہ سوچ رہے ہیں کہ کیا وہ سیاق و سباق سے محروم ہیں۔ کوڈبیس اس بات کی عکاسی کرتا ہے کہ ہم اصل میں کیا کرتے ہیں، نہ کہ ہم نے پانچ سال پہلے کیا کیا تھا۔ ریفیکٹرز کو آثار قدیمہ اور روک تھام کے طور پر سمجھو اس پروجیکٹ سے میرا سب سے بڑا فائدہ: ہر اہم ریفیکٹر آثار قدیمہ کے لیے ایک موقع ہے۔ جب آپ کسی نظام میں گہرے ہوتے ہیں، واقعی یہ سمجھتے ہیں کہ ٹکڑے کیسے جڑتے ہیں، تو آپ یہ سوال کرنے کے لیے بہترین پوزیشن میں ہیں کہ ابھی کیا ضرورت ہے۔ کسی پرانے منصوبے سے وہ قطار؟ ورکر کسی نے ایک بار ڈیٹا کی منتقلی کے لیے بنایا ہے؟ طے شدہ کام جو ایک ایسی خصوصیت کا حوالہ دیتا ہے جس کے بارے میں آپ نے کبھی نہیں سنا ہوگا؟ وہ اب بھی چل رہے ہیں۔ یہ ہے ہم اپنے عمل میں آگے بڑھتے ہوئے کیا بنا رہے ہیں: کسی بھی ری ایکٹر کے دوران، پوچھیں: اس سسٹم کو اور کیا چیز چھوتی ہے جسے ہم نے تھوڑی دیر میں نہیں دیکھا؟ کسی خصوصیت کو فرسودہ کرتے وقت، اسے اس کے پس منظر کے عمل تک پوری طرح ٹریس کریں، نہ صرف صارف کا سامنا کرنے والے کوڈ۔ جب کوئی ٹیم کو چھوڑتا ہے، تو دستاویز کریں کہ وہ کس چیز کے پس منظر کے انچارج تھے جو ہمارے پاس ابھی بھی پرانے سامان کے انچارج تھے۔ کوڈ بیس جو ابھی تک واحد ذخیرہ میں منتقل نہیں ہوا ہے۔ جیسا کہ ہم مضبوطی کا عمل جاری رکھتے ہیں، ہمیں یقین ہے کہ ہمیں ان میں سے مزید پوشیدہ آثار مل جائیں گے۔ لیکن اب ہم ان کو پکڑنے اور نئے کو بننے سے روکنے کے لیے ترتیب دیے گئے ہیں۔ جب آپ کا تمام کوڈ ایک جگہ رہتا ہے، تو یتیم انفراسٹرکچر کے پاس چھپنے کے لیے کوئی جگہ نہیں ہے۔
ہم نے 5 سالوں سے چلنے والی 7 بھولی ہوئی ملازمتیں تلاش کرنے کے بعد کیا سیکھا۔
By Social Media
·
·
6 min read
·
564 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