ویرگول
ورودثبت نام
امید زمانی
امید زمانی
خواندن ۱۸ دقیقه·۲۰ روز پیش

فتح قله آپتایم: آواز غم‌انگیز کلاسترهای گمشده

امید بیچاره، همین که پلکاشو وا کرد، شاخ درآورد! یه دیتاسنتر درب و داغون دورش رو گرفته بود. سرورا مثل این سربازای تو فیلما، تق تق ردیف وایساده بودن. یاد اون شبی افتاد که تا خود صبح با اون هکرای نکبت کلنجار رفته بود. دوباره افتاد تو حال و هوای کسالت.

تو دلش گفت: "اینا چه وضعشه آخه؟" سرورا انگار مال یه سیاره دیگه بودن. بوی عجیب‌وغریبی می‌داد، انگار یه چیزی داشت می‌سوخت. یه لرزش مشکوک هم اینور اونور حس می‌شد. همه و همه داشتن مخ امیدو می‌ترکوندن. برگشت یه نفر رو پیدا کنه جریانو بپرسه، مگه کسی اونجا بود؟ فقط صدای ممتد بوق از این سرورا می‌اومد.

بعد که چشمش خورد به مانیتورا، فکش چسبید کف زمین! نمودارا عین این رقاصا قر می‌دادن رو هوا؛ بالا، پایین، این ور، اون ور. انگار داشتن با امید لوس بازی درمی‌آوردن. هر چی امید چشم‌غره می‌رفت، بیشتر شیطونی می‌کردن!

هر قدم که برمی‌داشت، یه در باز می‌شد و پرتش می‌کرد یه جای دیگه. یه آن کویر، یه آن نیویورک. شده بود عین آلیس تو سرزمین عجایب، منتها نه چای دارچینی بود، نه کیک کشمشی؛ فقط هیولاهای سروری که هر دفعه یه شکل و شمایلی جلوش سبز می‌شدن.

یهو دید داره لت و پار می‌شه زیر دست و پای سرورا! عربده می‌کشیدن و می‌خواستن از خجالتش در بیان. امید بدبختم هر چی جون داشت می‌ذاشت که دخلشونو بیاره. ولی مگه این ارورا تموم می‌شد؟ یکی رو ادب می‌کرد، صد تای دیگه پاچه‌شو می‌گرفتن. حس می‌کرد تو باتلاق کابوسا داره دست و پا می‌زنه.

با خودش گفت: "خدایا، یه امشبو بذارین کپه مرگمونو بذاریم دیگه! حالا من چه خاکی تو سرم بریزم با این زامبی‌های سروری؟" همون لحظه دستش خورد به یه چیز تو جیبش، هندزفری!

تا هندزفری رو چپوند تو گوشش، دید همه جا ساکت شد! سرورا یکی یکی خوابیدن انگار. اهل دلا رو بگو! پس کلید معما دم دست خودش بود. دیگه داشت حال می‌کرد.

اما انگار قسمت نبود حالشو ببره. یهو زمین قیژ ویژ کرد و امیدو کشید تو خودش؛ سقوط آزاد، تو یه چاه بی‌ته. حالا کجا بود؟ نه جادوگر مهربون بالا سرش بود، نه کفش‌های جادویی پاش. فقط یه لونه گورکن بود و یه دنیای سیاه بی‌انتها.

داد زد و از خواب پرید. نفسش بالا نمی‌اومد بس که ترسیده بود. مثل جت پرید سمت کامپیوتر. اوف، خدا رو شکر همه چی اوکی بود. پس کابوس دیده بود فقط. عجب خوابی!

ولو شد و رفت تو آشپزخونه. چراغ یخچال یه چشمک شیطنت‌آمیز بهش زد. غذا حاضر بود، ولی میل و حالش کجا بود؟ خزید بالای سر بچه‌ها، لپاشونو بوسید و لبخند زد. دورشون بگرده، عین تیتاب خواب بودن.

افتاد لب تخت و یهو یاد قبض برق افتاد که پرداختش نکرده. باز گند زده شد تو احوالاتش. سرشو فرو کرد تو بالش. عجب زندگی نکبتی داشت طفلی! ولی تا وقتی این فرشته‌های دورش بودن، غمی نبود.

چشاش رفت رو هم. فردا باید پا می‌شد و می‌رفت سر همون خان اولی که بود. ولی مطمئن بود هیچ چیز، حتی هیولاهای سروری، به پای شیرینی وجود عزیزانش نمی‌رسه. خوابید و لبخند رو لباش موند.

صدای عربده گوشی کنار گوشم، منو از خواب پروند. انگار یه پتک می‌کوبیدن تو سرم. چشمام هنوز سنگین بود و یه وری شده بودم انگار. دیشب باز تا خود صبح درست نشد بخوابم و الان حس می‌کردم یه گله فیل از رو تنم رد شدن. نالان و نزار، دستمو کشیدم و اون وامونده رو از رو پاتختی چنگ زدم و با یه حرکت، صداش رو خفه کردم. حالا باید چطوری پلکای کاه‌گلی شده‌م رو وا می‌کردم؟! اتاق هنوز غرق ظلمات بود و نور آفتاب، مثل یه گربه ترسو فقط یه ذره سرک می‌کشید تو. به هر جون‌کندنی بود، لبه تخت نشستم و برای یه خمیازه اساسی، دهنم رو باز کردم که فکم از جا در رفت! خمیازه‌ای که انگار قرار بود هر چی خستگیه از وجودم بکشه بیرون و پرت کنه دور.

کش و قوسی به این تن نیم‌بند دادم و شالاپ شولوپ راه افتادم سمت دستشویی. جلو آینه که رسیدم، یه برق چشمی به خودم انداختم. پف زیر چشام از اون بادکنکای آبی هم بزرگ‌تر شده بود و انگار یه گله گاو از رو صورتم رد شده بودن! قیافه‌م شده بود شبیه میدون جنگ! شیر آب رو که وا کردم، یه مشت آب یخ پاشیدم تو صورتم. ناخودآگاه یه "آخیش" گفتم و یه نفس راحت کشیدم. انگار تازه روح تو کالبدم دمیده شد. صورتمو با حوله شتری‌رنگم خشک کردم و از بوی خنک خمیر دندون، ریه‌هامو پر کردم. دستی به موهام کشیدم که انگار تازه متوجه شدم قیافم شبیه بمب‌گذاری‌شده‌ها! هنوز خواب از سرم نپریده بود ولی دیگه یه رگه‌های کمرنگ امید تو وجودم جوونه زده بود.

رفتم سر وقت کتری برقی که این روزا، بیشتر از خودم باهاش سر و کله می‌زدم. یه دستی زدم رو دکمه‌ش و شروع کردم به خوندن فاتحه برا خودم! تا کتری به خودش بجنبه، گفتم یه صبحونه درست و حسابی برا این شکم گشنه‌م راه بندازم. چند وقتی بود که فقط با چند لقمه نون و پنیر سر می‌کردم و دل و روده‌م ناله‌های گرسنگی سر می‌داد. تخم‌مرغ و کره از یخچال کشیدم بیرون و ماهیتابه رو چپوندم رو اجاق. یه تیکه کره انداختم توش و شروع کرد به هیس هیس کردن و دود و دم راه انداختن! فضای آشپزخونه رو برداشته بود بوی کره سوخته که آب از لب و لوچه آدم راه می‌نداخت. دو تا تخم‌مرغ شکستم و انداختم کنار اون کره جلز و ولز شده. کمی نمک و فلفل هم چاشنیش کردم و با کفگیر همشون زدم. لامصب بوی تخم‌مرغا، عین ساز و دهل افتاده بود به جون دل و روده‌م و قار و قورشون تا فلک می‌رفت!

یه لیوان از اون چایی‌های خوش‌عطر و طعم ریختم و با تخم‌مرغ و نون، نشستم پشت میز. از پنجره کوچیک آشپزخونه، سایه رقصان نور آفتاب افتاده بود به دیوار و انگار چشمک می‌زد بهم. دو چشممو بستم و یه نفس عمیق کشیدم. بخار چای خورد تو صورتم و وجودم پر شد از عطر دل‌انگیزش. با اولین قاشق از تخم‌مرغ، انگار برق سه فاز وصل شد به وجودم! خیلی وقت بود یه صبحونه آروم و بی‌دغدغه نخورده بودم. فکر و خیال کارای امروز کم‌کم داشت تو ذهنم رژه می‌رفت، اما سعی کردم بی‌خیال باشم. می‌خواستم لااقل تو همین چند دقیقه، تو حس و حال رویایی صبحگاهی غرق بشم…

وقتی پامو گذاشتم از در بیرون، هوا هنوز اون دم دمای صبح بود. کوچه عین یه شهر متروکه، غرق سکوت بود و جز صدای چیک‌چیک گنجشکا، چیزی به گوش نمی‌رسید. نفسم بخار می‌شد جلو صورتم. دستامو کردم تو جیبای پالتوی مشکیم و راه افتادم سمت ایستگاه. کوله‌پشتیم رو که انداخته بودم رو شونم، صداش دراومده بود و هی خش‌خش می‌کرد. انگار اونم حوصله‌ش سر رفته بود از بس منو برده بود شرکت و آورده بود! با هر قدمی که برمی‌داشتم، ذهنم بیشتر می‌رفت سمت اتاق شیشه‌ای شرکت. تیکت‌هایی که باز شده بودن، میتینگ دو ساعته با مدیرا، ناهار با بچه‌های تیم. انگار یه بختک نشسته بود رو سینه‌م و فشارم می‌داد! قدمامو تندتر کردم. دیگه رسیده بودم سر خیابون اصلی. یه تاکسی دربست گرفتم و شیرجه زدم روی صندلی عقب. ساعت مچیم با دهن‌کجی بهم می‌گفت که دیرم شده لامصب!

تو آسانسور، یه نفس عمیق کشیدم و خودمو برای یه روز پرمشغله دیگه جمع‌وجور کردم. در که باز شد، انگار پا گذاشتم تو کندوی عسل! بچه‌های تیم دور میز جمع شده بودن و هر کی یه چیزی می‌گفت و بلندبلند می‌خندیدن. فاطمه تا منو دید، با یه لبخند دندون‌نما گفت:

- به به، جناب آقای دواپس اینجینیر! بالاخره تشریف آوردین؟ امیر داشت می‌اومد دنبالت!

سعی کردم لبخند بزنم در حالی که استرس کل وجودمو برداشته بود:

- سلام به همگی. آره دیگه، ترافیک بود امروز. حالا امیر کجاست؟

همون لحظه صدای امیر از پشت سرم اومد:

- سلام آقا امید، بیا بریم جلسه دیگه دیرمون شد!

برگشتم سمتش و قیافه‌م مچاله شد:

سلام امیر جان. آره بریم، فقط بذار یه سر به کامپیوترم بزنم، الان میام.

داشتم وسایلمو می‌ذاشتم رو میز که یهو چشمم خورد به کلی نوتیفیکیشن. اسلک داشت بال‌بال می‌زد و میلم پر بود از ایمیلای ریپلای‌خورده! با خودم گفتم خدا بخیر کنه امروز رو. هنوز نیم ساعت هم نگذشته بود که گوشیم زنگ خورد. بله دیگه، ساعت شنی عمرم داشت شروع می‌شد. قبل از اینکه بتونم چیزی بگم، امیر گفت:

- امید جان، منتظریما. بدو بیا دیگه!

نفسمو با صدا دادم بیرون و لنگون‌لنگون راه افتادم سمت اتاق جلسات. تو راه با خودم فکر می‌کردم که چه جوری می‌تونم اون همه تسک عقب‌افتاده رو توی این جلسه توجیه کنم. صندلی رو کشیدم عقب و نشستم سر جام. همه داشتن در مورد آمار و نمودار حرف می‌زدن و من فکرم هزار جا بود! همش چشمم به ساعت بود و منتظر بودم این جلسه کسل‌کننده تموم بشه. مدام پاهامو تکون می‌دادم زیر میز و تو دلم دعا می‌کردم زودتر برم سر کارم. بعد کلی کش و قوس اومدن، بالاخره جلسه ختم شد و من مثل فشنگ پریدم بیرون که گیر کسی نیفتم!

نشستم پشت سیستم و یه نفس عمیق کشیدم. یه لحظه سکوت بود و بعد دوباره اون همهمه شرکت شروع شد. کسی داشت پشت تلفن بحث می‌کرد، یکی با صدای بلند می‌خندید و صدای تق و توق کیبوردا مثل سمفونی افتاده بود رو مخم! اما من انگار تو یه دنیای دیگه بودم. غرق یه مشت تسک و کار عقب افتاده، داشتم با گیت‌لب کشتی می‌گرفتم که یهو یکی زد رو شونم. نوید بود که می‌گفت:

- امید؟ ناهار نمیای؟ پاشو بریم یه چیزی بخوریم.

با گیجی نگاش کردم و تازه یادم افتاد که ساعت از دوازده گذشته. گشنگی امونمو بریده بود. از جام بلند شدم و همراه نوید راه افتادیم سمت سلف. حداقل یه استراحت کوتاه، بعد از این همه غوغا، حقم بود...

با نوید هِلک‌هِلک داشتیم می‌رفتیم اتاق ناهارخوری که یهو گوشیم عین وحشی‌ها زد به سیم آخر. آلارمش که بلند شد، انگار یه پارچ آب یخ ریختن رو سرم! تند تند چک کردم ببینم چه خبره، که دیدم بله، سرویسامون دارن یکی یکی جون میدن!

سریع پریدم پشت کامپیوتر و `kubectl` رو زدم بالا. اول گفتم برم سراغ این سرویس آثنتیکِیتور ببینم چشه اینقدر زیر و رو می‌شه:

kubectl logs -f auth-service-7f9c5f5d5-2rq7z
ERROR org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authController': Injection of autowired dependencies failed; nested exception is java.lang.NoClassDefFoundError: com/authlib/jwt/JwtHelper
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:405)

پر بود از این Exceptionهای عجق وجق! معلوم بود یه گندی بالا اومده. شاید این آپدیت تازه تیم جاوا، یه آشی واسه مون پخته بود. گفتم خب، حالا که اینطوره، برم ورژن قبلی:

kubectl rollout undo deployment auth-service
deployment.apps/auth-service rolled back

به به، Rollback که راه افتاد، ولی مگه این Podهای لامصب می‌ذاشتن آب خوش از گلومون پایین بره؟ همه رفته بودن تو حالت Pending و هر کاری می‌کردم، تکون نمی‌خوردن.

kubectl get pods
NAME READY STATUS RESTARTS AGE
auth-service-6f5d5c9f7c-k9qxr 0/1 Pending 0 2m
auth-service-6f5d5c9f7c-st5r8 0/1 Pending 0 2m

شاخام دیگه داشت سقف رو سوراخ می‌کرد! پیش خودم گفتم نکنه کلاستره شارژش تموم شده؟ البته قبل از اینکه الکی آمپر بچسبونم، گفتم برم اول تو ریسورسا و لاگا شاید کاسه‌ای زیر نیم کاسه باشه.

kubectl describe pod auth-service-6f5d5c9f7c-k9qxr
kubectl describe node <node-name>

دیدم نودها ریسورس کم دارن. واسه همین تصمیم گرفتم چندتا نود اضافه کنم.

terraform apply -auto-approve
Apply complete! Resources: 2 added, 0 changed, 0 destroyed

اما مگه شانس با ما یار بود؟ انگار هر چی آچار می‌گرفتم دستم، پیچ کلاستر شل‌تر می‌شد! بیا و این Istio رو نگاه، قاطی کرده بود و عین خروس بی‌محل، ترافیکو ول می‌چرخوند:

kubectl get services -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-egressgateway ClusterIP 10.107.25.165 <none> 80/TCP,443/TCP 23h
istio-ingressgateway LoadBalancer 10.101.23.31 <pending> 15021:30948/TCP,80:30159/TCP,443:31041/TCP,31400:30469/TCP,15443:32740/TCP 23h
istiod ClusterIP 10.105.135.20 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 23h

برا محکم‌کاری، با Trivy هم یه سرکشی کردم، ببینم اگه دشمن خونگی هست کجا کمین کرده شاید نقطه کوری تو سیستم پیدا شد.

trivy image auth-service:latest
2023-03-14T12:31:02.679Z INFO Need to update DB
2023-03-14T12:31:02.679Z INFO DB Repository: ghcr.io/aquasecurity/trivy-db
2023-03-14T12:31:02.679Z INFO Downloading DB...
2023-03-14T12:32:17.217Z INFO Vulnerability scanning is enabled
2023-03-14T12:32:17.218Z INFO Scanning image 'auth-service:latest'
2023-03-14T12:32:41.569Z CRITICAL Total: 18 (UNKNOWN: 0, LOW: 2, MEDIUM: 11, HIGH: 4, CRITICAL: 1)

یهو دیدم نتیجه اسکن داره داد می‌زنه که این سیستم عین پنیر سوئیسی سوراخ سوراخه! اول از همه، یقه یه مشت لایبرری و پکیج مشکوک رو چسبیدم، عین بازجو افتادم به جونشون که آدرس لونه فساد رو لو بدن! هی گفتم باگ پشت باگ، پَچ پشت پَچ، تا حسابی حالی این پکیج های افسارگسیخته بشه.

# Updating dependencies in Dockerfile
RUN apt-get update && apt-get upgrade -y

و بعد از این که مطمئن شدم همه چیز آپدیته، دوباره اسکن رو انجام دادم:

trivy image auth-service:latest

دیدم که تعداد آسیب‌پذیری‌ها خب به شکل قابل ملاحظه‌ای کم شده. خب، این یکی هم درست شد.

یهو یاد Ansible افتادم هی خدا خدا می‌کردم که ای کاش تو Ansible تر نزده باشم. با هزار بدبختی و استرس، رفتم چک کنم ببینم اصلا رو کانفیگش کار کردم یا نه، که دیدم آره بابا، خدا رو شکر کانفیگش درست بود.

اون وسط، نوید هم هی زنگ می‌زنه که "امید، چی شد؟ نمیای پس؟" اما خب، کو گوش شنوا؟ الان که نمی‌شه دست از سرویسا برداشت. گفتم "داداش، تو برو ناهارتو بزن، خودت که دیدی نمی‌تونم از اینجا تکون بخورم."

از اون ور هم این دولوپر مثلاً لید شده که ۲۰ تا کامند حفظ کرده و هر جا می‌رسه پز می‌ده که "آقا، من دارم CKAD می‌خونما"، شده رفیق چاکِ جناب CTO! هی تو گوشش خونده که "آقا، من Kubernetes بلدم، RBAC کشکه، اینا رو بسپر به من." این CTO بیچاره ما هم که فکر کرده حالا خبریه، داده دسته‌گلش بره تو پروژه هر غلطی دلش می‌خواد بکنه!

نتیجه‌ش چی شده؟ زده RBAC رو غیرفعال کرده که تستش راحت‌تر از آب خوردن بشه! هی می‌گم حاجی این چه کاریه آخه؟ برو تو Minikubeات، تو Staging، تو Pre-prod، هر جا دلت خواست جولون بده، چرا میای رو پروداکشن تست می‌کنی بی‌صاحابو؟ مگه ندیدی من خودمم رو پروداکشن نمیام و همیشه تو Staging دارم جون می‌کنم، چرا میای هی سنگ رو یخم می‌ذاری؟ انگار نه انگار! حالا سیستم احرازمون فلج شده و یه مشت آلارم رو سرم هوار شده. این جوجه مهندسم که در حال حاضر الفرار، گذاشته رفته مرخصی!

حالا الان گیر کردم پشت این الستیک‌سرچ که هی قرمز و سبز داره بازی می‌کنه. یه نیگا به این آلوکیشن میندازم، ببینیم کی زیرآبی رفته:

GET /_cluster/allocation/explain
{
&quotindex&quot: &quotauth-logs-2023-06-11&quot,
&quotshard&quot: 0,
&quotprimary&quot: true,
&quotcurrent_state&quot: &quotunassigned&quot,
&quotunassigned_info&quot: {
&quotreason&quot: &quotNODE_LEFT&quot,
&quotat&quot: &quot2023-06-11T08:30:52.546Z&quot,
&quotdetails&quot: &quotnode_left[YjevIHK2RTGGxlWvEtQQWA]&quot,
&quotlast_allocation_status&quot: &quotno_valid_shard_copy&quot
},
&quotcan_allocate&quot: &quotno_valid_shard_copy&quot,
&quotallocate_explanation&quot: &quotcannot allocate because a previous copy of the primary shard existed but can no longer be found on the nodes in the cluster&quot
}

داشتم با مغزم کلنجار میرفتم که دوزاریم افتاد که یه نود شاردخور، یه نود زرنگ، شاردامونو هوایی کرده رفتم تو لونه کانفیگا نشستم با شاردا حرف زدم، کلی باهاشون دردودل کردم تا راضی شدن برگردن سر جاشون

spec:
defaultResources:
requests:
memory: 4Gi
cpu: 1
replicas: 3

کانفیگ رو هم یجوری زیر و رو کردم که شاردا هوس نکنن از لونه فرار کنن!

kubectl apply -f elasticsearch.yaml

البته اینم یه پماد موقت، حالا تا کی جواب بده خدا عالمه! ولی خب جای شکرش باقیه که چند نود بیشتر داریم، وگرنه الان باید برا کلاستر آگهی ترحیم چاپ می‌کردیم رو گیت‌هاب!

واسه اینکه مطمئن شم جیگر حالیشه و نرفته تو جاده خاکی، پورت فوروارد رو بالا پایین کردم تا ببینم ترافیکو برا کی داره خرج میکنه!

kubectl port-forward svc/jaeger-query 16686

نگو یه آقا بالاسری اومده عین چی تمام سرویسو ترکونده و حالا همه دارن شوت می‌کنن سمت ۸۰۸۰! آخه مرد حسابی، مگه نمی‌بینی من و این سرویسا شدیم کارد و پنیر؟ چرا میای هی یه پورت از آستینت در میاری که منم باید دوباره جمعش کنم؟

apiVersion: v1
kind: Service
metadata:
name: auth
spec:
selector:
app: auth
ports:
- port: 80
targetPort: 3000

بعد از اینکه تنظیماتو اوکی کردم، کانفیگو آپدیت کردم که ترافیکه یه دفعه هوس نکنه بازم بزنه تو کوچه علی چپ!

kubectl apply -f k8s/auth-service.yaml

خب دیگه، کانفیگشو یه دستی شستیم و الان ترافیک آدم شده میره رو ۳۰۰۰. یعنی هر کی از ننه‌ش قهر می‌کنه میاد یه پورت جدید اختراع می‌کنه؟ این چه وضعشه آخه؟ اینم شانس ماست دیگه!

اون وسط، این Istio هم عین خروس بی‌محل پریده وسط، شیطونه می‌گه ورژن جدیدشو نصب کنم شاید سر جاش بشینه!

داشتم این کارا رو می‌کردم یهو دیدم رئیس اومد کنارم وایساد. یه سیبیل از بناگوش دررفته داره که نگو، انگار سه روزه تو اتاق جلسه گیر کرده بوده!

پرسید: "امید، چیکارا می‌کنی؟ گره از این کار وا می‌شه به نظرت؟"

گفتم: "والا شما بگو، اگه من بلد بودم که الان اینجا دنبال راه چاره نبودم. هر کی سرش به تنش می‌ارزه، یه گندی بالا میاره و ماهام باید دورش بگردیم تا صفا سیتی بشه!"

رئیسه که دید باهاش رودربایستی ندارم، یه پوزخند تحویلم داد و گفت: "خیلی خب، پس هر وقت آپدیتی داشتی خبرم کن."

گفتم: "برو داداش، خیالت تخت."

همینا رو گفتم که شیرفهم بشه این چرخه معیوب تا کی می‌خواد ادامه پیدا کنه. ما می‌مونیم و یه مشت دستگاه و سیستم و مهندس که انگار با هم رفیقن و دارن باهامون چپ می‌افتن.


خلاصه همین که از اون قفس شیرها زدم بیرون، حس کردم انگار از تله‌ی مرگ جون سالم به در بردم. پا تند کردم تو پیاده‌رو خیابون ولیعصر، هندزفری تو گوشم و صدای یه مشت آهنگ درهم برهم تو سرم می‌پیچید اما فکرم یه لحظه هم از کار دور نمی‌شد.

پیش خودم غر می‌زدم که ما هم شانسی نداریم ها، سرویسا و سیستما همه دست به یکی کردن امروز تا منو سکته بدن! اون از دیتابیسه که انگار رفته قایم باشک بازی، اینم از این لید محبوب فلانی که فکر کرده فیلمه داره هر کاری دلش می‌خواد می‌کنه و دست میبره تو کار ما! تازه اون رئیسمون هم که هی میاد بالا سرم نق می‌زنه، انگار من سوپرمنم همه کاری ازم برمیاد. اصلا مگه دست خودمه؟ دارم سعی می‌کنم سیستم رو جمع و جور کنم دیگه!

همینطور که تو فکر بودم، یهو دیدم رسیدم دم خیابون ونک و باید وایسم تو این صف کوفتی تا سوار ماشینای فردیس بشم. پاهام درد گرفته بود بس که رژه رفته بودم تو پیاده رو! خیلی خسته و کلافه بودم، واسه همین یه گوشه کز کردم رو جدول تا یکم نفسم جا بیاد.

تو همون حالت، ذهنم پر کشید سمت خروجی اون کامندایی که زده بودم، `kubectl get pods --all-namespaces`، `kubectl get deployments`، `kubectl get hpa`، هی تو سرم می‌چرخیدن. کم کم داشت دوزاریم می‌افتاد که شاید بیشتر از یه Root Cause پشت قضیه بوده و انگار یه Learning from Incidents ای اتفاق افتاده. یه حسی بهم میگفت فردا دوباره همین آش و همین کاسه س!

اصلا همه می‌دونن کجاهای سیستم لنگ می‌زنه، ولی انگار خوششون میاد همه تقصیرا رو بندازن گردن دواپس بدبخت! فردام که برم شرکت، باید آماده باشم جواب صدتا سوال و متلک رو بدم. انگار نه انگار که تا خرخره تو کار فرو رفتم تا اوضاع رو سروسامون بدم.

تو همین حین و حال بودم که یه ماشین فردیس جلوی پام ترمز کرد. پریدم عقب و خودمو پرت کردم رو صندلی. تا نشستم، فوری لپتاپمو از کوله در آوردم و زل زدم به داشبورد Grafana/Prometheus. یه حسی بهم می‌گفت که نکنه بلایی سر سیستم اومده باشه! استرس تمام وجودمو گرفته بود و فقط زیر لب دعا می‌کردم که خدایا به خیر بگذرون، فقط همین امروز رو!

اما مگه می‌ذاشتن آدم یه نفس راحت بکشه؟ هنوز چند دقیقه از مسیر نگذشته بود که موبایلم شروع کرد به زنگ خوردن و پیام دادن. لیدِرای تیما یکی یکی پیداشون شده بود و می‌خواستن ببینن چه خبر شده! یکی زنگ می‌زد، یکی تو گروه منشن می‌کرد، اون یکی پیوی می‌داد. بابا انگار نه انگار که منم آدمم و یه روز پرمشغله رو پشت سر گذاشتم! مگه من بز چندسر دارم که به همه یه جواب بدم آخه؟!

لیدِر تیم فرانت‌اند که کلا قاطی کرده بود، هی می‌پرسید "وضعیت Deployment چطوره؟ تستا گرین شدن؟" بعد لیدِر بک‌اند پشت بندش می‌گفت "Podا که همه Running ان؟ پس این ارورا واسه چیه؟" آقا حداقل بذارید به خونه برسم، یه نفس بکشم، بعد سین جین! خودمم موندم چند نفرم من!

تازه اینا به کنار، لیدِر تیم دیتا هم شروع کرد گیر دادن که "Elasticsearch چرا اینقدر Unassigned Shard داره؟ نکنه رپلیکیشن از کار افتاده؟" بابا به خدا همین دو ساعت پیش دستی Shard ریختم تو نودا، کوتاه بیا دیگه! انگار یادشون رفته منم یه بنده خدام و کلی کار و زندگی دارم.

خلاصه تا رسیدم دم در خونه، انگار تازه از میدون جنگ برگشته بودم! بین راه نمی‌دونم چند بار به همه قول دادم که فردا حتما میرم Monitoring رو تقویت می‌کنم و Alert می‌ذارم برای هر سرویس. دیگه کم مونده بود کتبی ازم تعهد بگیرن که اجازه ندم سیستم بخوابه رو دستمون!

ولی خب چاره چیه؟ وقتی یه سازمان با کلی Microservice طرفی و هر تیم حساسیت خودشو داره، نمیشه که بی‌خیال وظایفت بشی. باید جواب همه رو بدی و Ownership همه چی گردن توئه. همین دیگه، از اول هم گفتم زندگی DevOps مثل شقایق پر از خون خودشه!

خلاصه به هر جون کندنی بود، بالاخره رسیدم خونه. کلیدو که چپوندم تو در، دیدم دوتا فرشته خوشگلم لب در وایسادن و تا منو دیدن عین موشک پریدن بغلم. اون لحظه انگار یه پارچ آب یخ ریختن رو سرم و یهو یادم رفت تا پنج دقیقه پیش داشتم با کیا کلنجار می‌رفتم!

کشیدمشون تو بغلم و یه هوایی چرخوندمشون. حس کردم انگار اصلا امروز چیزی به اسم شرکت و دردسراش وجود نداشته! فهمیدم با وجود این همه گرفتاری و غر زدنای سر کار، وقتی میام تو خونه و میبینم دارم برا کی جون میکنم، میفهمم که ارزششو داره هر چقدرم سختی بکشم. این حس قشنگ و آرامش، مث یه دوش آب گرم میمونه که خستگی رو از تنم میشوره میبره و بهم جون میده که فردا دوباره شمشیرمو وردارم.


دواپسکوبرنتیزمهندسخانوادهزیرساخت
The Tiny DevOps Guy
شاید از این پست‌ها خوشتان بیاید