لقد بدأنا مؤخرًا مشروعًا صغيرًا لتنظيف كيفية تواصل أجزاء من أنظمتنا خلف الكواليس في Buffer. بعض السياق السريع: نستخدم ما يسمى SQS (Amazon Simple Queue Service. تعمل قوائم الانتظار هذه كغرف انتظار للمهام. يسقط جزء من نظامنا رسالة، ثم يلتقطها جزء آخر لاحقًا. فكر في الأمر مثل ترك ملاحظة لزميل العمل: "مرحبًا، عندما تتاح لك الفرصة، قم بمعالجة هذه البيانات". لا يتعين على النظام الذي يرسل الملاحظة الانتظار حتى الاستجابة. كان مشروعنا هو إجراء صيانة روتينية: تحديث الأدوات التي نستخدمها لاختبار قوائم الانتظار محليًا وتنظيف تكويناتها. ولكن بينما كنا نحدد قوائم الانتظار التي نستخدمها فعليًا، وجدنا شيئًا لم نتوقعه: سبع عمليات خلفية مختلفة (أو وظائف cron، وهي مهام مجدولة يتم تشغيلها تلقائيًا) وعمال كانوا يعملون بصمت لمدة تصل إلى خمس سنوات، جميعهم لا يفعلون شيئًا مفيدًا على الإطلاق. وإليك سبب أهمية ذلك، وكيف وجدناهم، وما فعلناه حيال ذلك. نعم، تشغيل البنية التحتية غير الضرورية يكلف أموالاً. لقد أجريت حسابًا سريعًا وكنا قد دفعنا ما بين 360 إلى 600 دولارًا أمريكيًا على مدار 5 سنوات لأحد هؤلاء العمال. وهذا مبلغ متواضع في المخطط الكبير لمواردنا المالية، لكنه بالتأكيد هدر خالص لعملية لا تفعل شيئًا. ومع ذلك، بعد إجراء عملية التنظيف هذه، أعتقد أن التكلفة المالية هي في الواقع أصغر جزء من المشكلة. في كل مرة ينضم مهندس جديد إلى الفريق ويستكشف أنظمتنا، يواجه هذه العمليات الغامضة هل يفعل هذا العامل؟" يصبح سؤالًا يلتهم وقت الإعداد ويخلق حالة من عدم اليقين. لقد كنا جميعًا هناك - نحدق في جزء من التعليمات البرمجية، ونخشى لمسه لأنه ربما يفعل شيئًا مهمًا. حتى البنية التحتية "المنسية" تحتاج أحيانًا إلى الاهتمام. تحديثات الأمان، ومطبات التبعية، وإصلاحات التوافق عندما يتغير شيء آخر. وقد أدى ذلك إلى قيام فريقنا بإنفاق دورات صيانة على مسارات التعليمات البرمجية التي لا تخدم أي غرض. وبمرور الوقت، تتلاشى المعرفة المؤسسية. هل كان هذا أمرًا بالغ الأهمية؟ هل كان إصلاحًا مؤقتًا أصبح دائمًا؟ لقد ترك الشخص الذي أنشأها الشركة منذ سنوات مضت، وترك السياق معهم. كيف يحدث هذا؟ من السهل توجيه أصابع الاتهام، ولكن الحقيقة هي أن هذا يحدث بشكل طبيعي في أي نظام طويل العمر. يتم إهمال الميزة، ولكن وظيفة الخلفية التي تدعمها تستمر في العمل. يقوم شخص ما بتدوير عامل "مؤقتًا" للتعامل مع عملية الترحيل، ولا يتم حذفها أبدًا. تصبح المهمة المجدولة زائدة عن الحاجة بعد تغيير معماري، لكن لا أحد يفكر في التحقق منها. اعتدنا على إرسال رسائل بريد إلكتروني للاحتفال بعيد الميلاد للقيام بذلك، قمنا بتشغيل مهمة مجدولة لفحص قاعدة البيانات بأكملها بحثًا عن أعياد ميلاد تطابق التاريخ الحالي وأرسلنا بريدًا إلكترونيًا مخصصًا للعملاء. أثناء عملية إعادة البناء في عام 2020، قمنا بتبديل أداة البريد الإلكتروني للمعاملات ولكننا نسينا إزالة هذا العامل - فقد استمر في العمل لمدة خمس سنوات أخرى. لم يكن أي من هذه حالات إخفاق من جانب الأفراد - بل كان بمثابة إخفاقات في العملية، بدون التنظيف المتعمد المضمن في طريقة عملنا، فازت الإنتروبيا. حركة الخدمات الصغيرة (وهو نهج شائع حيث قامت الشركات بتقسيم التعليمات البرمجية الخاصة بها إلى العديد من الخدمات الصغيرة المستقلة) منذ سنوات. قمنا بتقسيم مجموعتنا المتجانسة إلى خدمات منفصلة، لكل منها مستودعها الخاص وخط أنابيب النشر والبنية التحتية الخاصة بها. في ذلك الوقت، كان الأمر منطقيًا: يمكن نشر كل خدمة بمفردها، مع حدود واضحة بين الفرق. ولكن على مر السنين، وجدنا أن النفقات العامة لإدارة العشرات من المستودعات تفوق الفوائد التي تعود على فريق بحجمنا، لذلك قمنا بدمجها في مستودع واحد متعدد الخدمات في عالم الخدمات الصغيرة، كل مستودع هو جزيرة خاصة به. قد لا يلاحظ المهندسون العاملون في مستودع آخر عاملًا منسيًا في مستودع آخر، ولا يوجد مكان واحد للبحث عن أسماء قوائم الانتظار، ولا توجد رؤية موحدة لما يتم تشغيله. ومع وجود كل شيء في مستودع واحد، يمكننا أخيرًا رؤية الصورة الكاملة مع المنتجين ولكن ليس المستهلكين، تمكنا من العثور على عمال يشيرون إلى طوابير لم تعد موجودة. لم يكن الدمج مصممًا لمساعدتنا في العثور على البنية التحتية الميتة - ولكنه أدى إلى ذلك.الاكتشاف أمر لا مفر منه تقريبًا. ما فعلناه بالفعل بمجرد تحديد العمليات اليتيمة، كان علينا أن نقرر ما يجب فعله بها. وإليكم كيفية تعاملنا مع الأمر. أولاً، قمنا بتتبع كل واحدة منها حتى أصلها. لقد بحثنا في تاريخ git والوثائق القديمة لفهم سبب إنشاء كل عامل في المقام الأول. في معظم الحالات، كان الغرض الأصلي واضحًا: ترحيل البيانات لمرة واحدة، وهي ميزة توقفت عن العمل، وهو حل مؤقت تجاوزت فائدته. ثم تأكدنا من أنها غير مستخدمة حقًا. قبل إزالة أي شيء، أضفنا التسجيل للتأكد من أن هذه العمليات لم تكن تؤدي بهدوء شيئًا مهمًا فاتناه. قمنا بمراقبتهم لبضعة أيام للتأكد من عدم استدعائهم على الإطلاق، وقمنا بإزالتهم بشكل تدريجي. لم نحذف كل شيء مرة واحدة. قمنا بإزالة العمليات واحدة تلو الأخرى، لرصد أي آثار جانبية غير متوقعة. (لحسن الحظ، لم يكن هناك أي منها.) وأخيرًا، قمنا بتوثيق ما تعلمناه. لقد أضفنا ملاحظات إلى مستنداتنا الداخلية حول ما قامت به كل عملية في الأصل وسبب إزالتها، لذلك لن يتساءل مهندسو المستقبل عما إذا كان هناك شيء مهم مفقود. ما الذي تغير بعد التنظيف؟ ما زلنا في وقت مبكر في قياس التأثير الكامل، ولكن إليك ما رأيناه حتى الآن. أصبح مخزون البنية التحتية لدينا دقيقًا الآن. عندما يسأل أحدهم: "ما العمال الذين نديرهم؟" يمكننا في الواقع الإجابة على هذا السؤال بثقة. أصبحت المحادثات المتعلقة بالإعداد أسهل أيضًا. لا يتعثر المهندسون الجدد عبر عمليات غامضة ويتساءلون عما إذا كانوا يفتقدون السياق. تعكس قاعدة التعليمات البرمجية ما نقوم به بالفعل، وليس ما فعلناه قبل خمس سنوات. تعامل مع إعادة البناء على أنها علم آثار ووقاية. أكبر ما يمكن تعلمه من هذا المشروع: كل عملية إعادة بناء مهمة هي فرصة لعلم الآثار. عندما تكون متعمقًا في النظام، وتفهم حقًا كيفية اتصال القطع، فأنت في وضع مثالي للتساؤل عما لا يزال مطلوبًا. هذا الطابور من بعض المشاريع القديمة؟ العامل الذي أنشأه شخص ما لترحيل البيانات لمرة واحدة؟ المهمة المجدولة التي تشير إلى ميزة لم تسمع عنها من قبل؟ ربما لا تزال قيد التشغيل. إليك ما نبنيه في عمليتنا للمضي قدمًا: أثناء أي عملية إعادة بناء، اسأل: ما الذي يؤثر أيضًا على هذا النظام الذي لم ننظر إليه منذ فترة؟ عند إيقاف ميزة ما، قم بتتبعها على طول الطريق حتى عمليات الخلفية، وليس فقط التعليمات البرمجية التي يواجهها المستخدم. عندما يترك شخص ما الفريق، قم بتوثيق ما كان مسؤولاً عنه، وخاصة الأشياء التي تعمل في الخلفية. لا يزال لدينا أجزاء قديمة من قاعدة التعليمات البرمجية الخاصة بنا لم يتم ترحيلها إلى النسخة الفردية مستودع حتى الآن. ومع استمرارنا في الدمج، نحن واثقون من أننا سنعثر على المزيد من هذه الآثار المخفية. ولكننا الآن جاهزون للقبض عليهم ومنع تشكل برمجيات جديدة. عندما تكون جميع التعليمات البرمجية الخاصة بك موجودة في مكان واحد، لن يكون للبنية التحتية المعزولة مكان للاختباء.
ما تعلمناه بعد العثور على 7 وظائف منسية تعمل لمدة 5 سنوات
By Social Media
·
·
6 min read
·
672 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