بينما كان الجميع يحتفل بعيد ميلادي ، كنت أقوم بإصلاح المجموعة حتى الصباح - وألقى المطورون باللوم على أخطائهم

بينما كان الجميع يحتفل بعيد ميلادي ، كنت أقوم بإصلاح المجموعة حتى الصباح - وألقى المطورون باللوم على أخطائهم

إليكم القصة التي غيرت أسلوبي في عمل المطورين إلى الأبد. بالعودة إلى أوقات ما قبل فيروس كورونا، وقبل ذلك بوقت طويل، عندما كنت أنا والرجال نخطط لأعمالنا التجارية الخاصة ونعمل بشكل مستقل بناءً على طلبات عشوائية، سقط عرض واحد في عربتي.

الشركة التي كتبت هذا كانت شركة تحليلات البيانات. لقد قامت بمعالجة آلاف الطلبات يوميًا. لقد جاؤوا إلينا بالكلمات التالية: يا شباب، لدينا ClickHouse ونريد أتمتة تكوينه وتثبيته. نريد أن يتم تخزين Ansible وTerraform وDocker وكل ذلك في Git. نريد مجموعة من أربع عقد تحتوي كل منها على نسختين متماثلتين.

إنه طلب قياسي، وهناك العشرات منهم، وتحتاج إلى حل قياسي جيد بنفس القدر. قلنا "حسنًا"، وبعد 2-3 أسابيع أصبح كل شيء جاهزًا. لقد قبلوا الوظيفة وبدأوا في الانتقال إلى مجموعة Clickhouse جديدة باستخدام فائدتنا.

لا أحد يريد أو يعرف كيفية العبث بـ Clickhouse. ثم اعتقدنا أن هذه كانت مشكلتهم الرئيسية، وبالتالي أعطت محطة خدمة الشركة الضوء الأخضر لفريقي لأتمتة العمل قدر الإمكان، حتى لا أذهب إلى هناك بنفسي مرة أخرى.

لقد رافقنا هذه الخطوة، وظهرت مهام أخرى - إعداد النسخ الاحتياطية والمراقبة. في نفس اللحظة، اندمجت محطة الخدمة الخاصة بهذه الشركة مع مشروع آخر، مما ترك لنا واحدًا منا - ليونيد - كقائد. لم تكن لينيا رجلاً موهوبًا جدًا. مطور بسيط تم تعيينه فجأة مسؤولاً عن Clickhouse. يبدو أن هذه كانت مهمته الأولى لإدارة شيء ما، وقد جعله هذا الشرف الساحق يشعر بالذهول.

بدأنا معًا في عمل النسخ الاحتياطية. اقترحت عمل نسخة احتياطية من البيانات الأصلية على الفور. فقط خذها واضغطها ثم ارميها بأناقة في ملف c3. البيانات الخام هي الذهب. كان هناك خيار آخر - لعمل نسخة احتياطية من الجداول نفسها في Clickhouse، باستخدام التجميد والنسخ. لكن لينيا توصل إلى الحل الخاص به.

أعلن أننا بحاجة إلى مجموعة Clickhouse ثانية. ومن الآن فصاعدًا سنكتب البيانات إلى مجموعتين - المجموعة الرئيسية والنسخة الاحتياطية. أقول له، لينيا، لن تكون نسخة احتياطية، بل نسخة طبق الأصل نشطة. وإذا بدأ فقدان البيانات أثناء الإنتاج، فسيحدث نفس الشيء في النسخة الاحتياطية الخاصة بك.

لكن لينيا أمسكت بعجلة القيادة بقوة ورفضت الاستماع إلى حججي. تحدثنا معه لفترة طويلة في الدردشة، ولكن لم يكن هناك ما يجب القيام به - كانت لينيا مسؤولة عن المشروع، لقد استأجرنا للتو أطفالًا من الشارع.

قمنا بمراقبة حالة المجموعة وفرضنا رسومًا فقط على عمل المسؤولين. إدارة Clickhouse خالصة دون الدخول في البيانات. كانت المجموعة متاحة، وكانت الأقراص جيدة، وكانت العقد جيدة.

لم نكن نعلم أننا تلقينا هذا الأمر بسبب سوء فهم فظيع داخل فريقهم

لم يكن المدير سعيدًا لأن Clickhouse كان بطيئًا وكانت البيانات تُفقد أحيانًا. لقد كلف محطة الخدمة الخاصة به بمهمة اكتشاف ذلك. لقد اكتشف الأمر بأفضل ما يستطيع وخلص إلى أننا نحتاج فقط إلى أتمتة Clickhouse - هذا كل شيء. ولكن سرعان ما أصبح واضحًا أنهم لم يكونوا بحاجة إلى فريق من المطورين على الإطلاق.

تبين أن كل هذا كان مؤلمًا جدًا. والشيء الأكثر إزعاجًا هو أنه كان في عيد ميلادي.

مساء الجمعة. لقد قمت بالحجز في بار النبيذ المفضل لدي ودعوت رفاقي.

قبل المغادرة تقريبًا، نتلقى مهمة لإنشاء تغيير، ونكمله، وكل شيء على ما يرام. تم تمرير التعديل، وتم تأكيد Clickhouse. نحن نذهب بالفعل إلى الشريط، ويكتبون إلينا أنه لا توجد بيانات كافية. حسبنا أن كل شيء يبدو كافيا. وغادروا للاحتفال.

المطعم كان صاخبة يوم الجمعة. بعد أن طلبنا المشروبات والطعام، استرخينا على الأرائك. طوال هذا الوقت، كان الركود الخاص بي ممتلئًا بالرسائل ببطء. لقد كتبوا شيئا عن نقص البيانات. اعتقدت أن الصباح أحكم من المساء. خاصة اليوم.

أقرب إلى الحادية عشرة بدأوا في الاتصال. لقد كان رئيس الشركة... "ربما قرر أن يهنئني"، فكرت بتردد شديد، والتقطت الهاتف.

وسمعت شيئًا مثل: "لقد أفسدت بياناتنا! أنا أدفع لك، ولكن لا شيء يعمل! لقد كنت مسؤولاً عن النسخ الاحتياطية، ولم تفعل شيئًا لعينًا! دعونا نصلح الأمر!" - فقط حتى أكثر وقاحة.

- أتعرف ماذا، اخرجي! اليوم هو عيد ميلادي، والآن سأشرب، ولن أشارك في منتجات يونيو محلية الصنع من حماقة وعصي!

هذا ما لم أقله. وبدلاً من ذلك، أخرجت جهاز الكمبيوتر المحمول الخاص بي وبدأت العمل.

لا، لقد قصفت، لقد قصفت مثل الجحيم! لقد سكب عبارة "لقد أخبرتك بذلك" في الدردشة - لأن النسخة الاحتياطية، التي لم تكن نسخة احتياطية على الإطلاق، - بالطبع، لم تحفظ أي شيء.

لقد توصلت أنا والأولاد إلى كيفية إيقاف التسجيل يدويًا والتحقق من كل شيء. لقد تأكدنا بالفعل من عدم كتابة بعض البيانات.

أوقفنا التسجيل وأحصينا عدد الأحداث التي كانت موجودة يوميًا. لقد قاموا بتحميل المزيد من البيانات، والتي لم يتم تسجيل ثلثها فقط. ثلاث شظايا مع 2 نسخ متماثلة لكل منهما. قمت بإدراج 100.000 صف - لم يتم تسجيل 33.000 صف.

كان هناك ارتباك كامل. طلب الجميع من بعضهم البعض أن يبتعدوا بالتناوب: ذهبت لينيا إلى هناك أولاً، تليها أنا ومؤسس الشركة. فقط محطة الخدمة التي انضمت حاولت تحويل مكالماتنا الصاخبة ومراسلاتنا نحو إيجاد حل للمشكلة.

لم يفهم أحد ما كان يحدث حقًا

لقد اندهشنا أنا والرجال ببساطة عندما أدركنا أن ثلث البيانات لم يتم تسجيلها فحسب، بل تم فقدها أيضًا! اتضح أن الترتيب في الشركة كان على النحو التالي: بعد الإدراج، تم حذف البيانات بشكل لا رجعة فيه، تم إهدار الأحداث على دفعات. تخيلت كيف سيحول سيرجي كل هذا إلى روبل ضائع.

تم إلقاء عيد ميلادي أيضًا في سلة المهملات. جلسنا على البار وولدنا أفكارًا محاولين حل اللغز الذي ألقي علينا. لم يكن سبب سقوط Clickhouse واضحًا. ربما تكون الشبكة، وربما تكون إعدادات Linux. نعم، مهما شئت، هناك ما يكفي من الفرضيات.

لم أحلف يمين المطور، ولكن كان من غير النزيه أن أتخلى عن الأشخاص الموجودين على الطرف الآخر من الخط - حتى لو ألقوا باللوم علينا في كل شيء. كنت متأكداً بنسبة 99% أن المشكلة لا تكمن في قراراتنا، وليس في جانبنا. كانت فرصة الـ 1% التي أخطأنا فيها مشتعلة بالقلق. ولكن بغض النظر عن الجانب الذي كانت فيه المشكلة، كان لا بد من إصلاحها. إن ترك العملاء، بغض النظر عمن هم، مع مثل هذا التسريب الرهيب للبيانات يعد أمرًا قاسيًا للغاية.

عملنا على طاولة المطعم حتى الثالثة صباحًا. أضفنا الأحداث، وأدخلنا التحديد، ثم ذهبنا لملء الفجوات. عندما تفسد البيانات، فهذه هي الطريقة التي تفعل بها ذلك: تأخذ متوسط ​​البيانات للأيام السابقة وتدرجها في البيانات الخاطئة.

بعد الساعة الثالثة صباحًا، ذهبت أنا وصديقي إلى منزلي وطلبنا بيرة من سوق الكحول. كنت جالسا مع جهاز كمبيوتر محمول ومشاكل Clickhouse، وكان أحد الأصدقاء يقول لي شيئا. نتيجة لذلك، بعد ساعة، تم الإهانة لأنني كنت أعمل ولا أشرب البيرة معه، وغادر. كلاسيكي - كنت صديقًا لـ Devops.

بحلول الساعة 6 صباحًا، قمت بإعادة إنشاء الجدول مرة أخرى، وبدأت البيانات تتدفق. كل شيء يعمل دون أي خسائر.

ثم كان الأمر صعبًا. ألقى الجميع باللوم على بعضهم البعض في فقدان البيانات. لو حدث خطأ جديد، أنا متأكد من أنه كان سيكون هناك تبادل لإطلاق النار

في هذه المعارك، بدأنا أخيرًا نفهم - اعتقدت الشركة أننا الرجال الذين يعملون مع البيانات ويراقبون بنية الجداول. لقد خلطوا بين المسؤولين والتجار. وجاءوا ليطلبوا منا شيئًا مختلفًا من المسؤولين.

شكواهم الرئيسية هي - يا إلهي، لقد كنت مسؤولاً عن النسخ الاحتياطية ولم تقم بها بشكل صحيح، واستمررت في إهدار البيانات. وكل هذا مع الحصير اللف.

أردت العدالة. لقد قمت بحفر المراسلات وأرفقت لقطات شاشة للجميع، حيث يجبرهم ليونيد بكل قوته على عمل النسخة الاحتياطية التي تم إجراؤها. اتخذت محطة الخدمة الخاصة بهم جانبنا بعد مكالمتي الهاتفية. في وقت لاحق اعترف لينيا بذنبه.

وعلى العكس من ذلك، لم يرغب رئيس الشركة في إلقاء اللوم على شعبه. لقطات الشاشة والكلمات لم يكن لها أي تأثير عليه. كان يعتقد أنه بما أننا خبراء هنا، فيجب علينا إقناع الجميع والإصرار على قرارنا. على ما يبدو، كانت مهمتنا هي تعليم Lenya، وعلاوة على ذلك، تجاوزه، الذي تم تعيينه كمدير للمشروع، للوصول إلى الشيء الرئيسي وصب شخصيًا كل شكوكنا حول مفهوم النسخ الاحتياطية.

كانت الدردشة مليئة بالكراهية والعدوان الخفي والخفي. لم أكن أعرف ماذا أفعل. لقد وصل كل شيء إلى طريق مسدود. ثم نصحني بأسهل طريقة - كتابة رسالة شخصية إلى المدير وترتيب لقاء معه. فاسيا، الأشخاص في الحياة الواقعية ليسوا بالسرعة التي يكونون بها في الدردشة. رد المدير على رسالتي: تعال، بلا شك.

لقد كان اللقاء الأكثر رعباً في مسيرتي المهنية. لم يتمكن حليفتي من العميل - STO - من إيجاد الوقت. ذهبت إلى الاجتماع مع الرئيس ولينا.

مرارًا وتكرارًا، قمت بإعادة عرض حوارنا المحتمل في رأسي. تمكنت من الوصول مبكرًا جدًا، قبل نصف ساعة. بدأت أشعر بالتوتر، دخنت 10 سجائر، أدركت أن هذا كل شيء، أنا أمارس الجنس وحدي. لن أتمكن من إقناعهم. ودخل إلى المصعد.

وبينما هو ينهض ضرب الولاعة بقوة حتى كسرها.

ونتيجة لذلك، لم تكن لينيا حاضرة في الاجتماع. وأجرينا محادثة رائعة حول كل شيء مع رئيسنا! أخبرني سيرجي عن ألمه. لم يكن يريد "أتمتة Clickhouse" - بل أراد "جعل الاستعلامات تعمل".

لم أر ماعزًا، بل رجلًا طيبًا، قلقًا بشأن عمله، منغمسًا في العمل على مدار الساعة طوال أيام الأسبوع. غالبًا ما تجذبنا الدردشة إلى الأشرار والأوغاد والأغبياء. لكن في الحياة هؤلاء أناس مثلك تمامًا.

لم يكن سيرجي بحاجة إلى اثنين من المطورين للتأجير. وتبين أن المشكلة التي واجهوها كانت أكبر من ذلك بكثير.

قلت إنني أستطيع حل مشكلاته، إنها مجرد وظيفة مختلفة تمامًا، ولدي صديق يعمل بها. لو علمنا منذ البداية أن هذه صفقة بالنسبة لهم، لكنا تجنبنا الكثير. لقد تأخر الوقت، لكننا أدركنا أن المشكلة تكمن في إدارة البيانات الرديئة، وليس في البنية التحتية.

لقد تصافحنا، ورفعوا رواتبنا مرتين ونصف، ولكن بشرط أن أتحمل المسؤولية الكاملة عن بياناتهم وClickhouse بنفسي. في المصعد، تواصلت مع نفس رجل شركة DI Max وأوصلته للعمل. كان من الضروري تجريف المجموعة بأكملها.

كان هناك الكثير من القمامة في المشروع المعتمد. بدءًا من "النسخ الاحتياطي" المذكور. وتبين أن هذه المجموعة "الاحتياطية" نفسها لم تكن معزولة. لقد اختبروا كل شيء عليه، وأحيانًا أدخلوه في مرحلة الإنتاج.

قام المطورون الداخليون لدينا بإنشاء أداة إدخال البيانات المخصصة الخاصة بهم. لقد كان يعمل على هذا النحو: قام بتجميع الملفات وتشغيل البرنامج النصي ودمج البيانات في جدول. لكن المشكلة الرئيسية كانت أنه تم قبول كمية هائلة من البيانات مقابل طلب واحد بسيط. انضم الطلب إلى البيانات كل ثانية. كل ذلك من أجل رقم واحد - المبلغ في اليوم الواحد.

استخدم المطورون الداخليون أداة التحليلات بشكل غير صحيح. ذهبوا إلى الجرفانا وكتبوا طلبهم الملكي. قام بتحميل البيانات لمدة أسبوعين. اتضح أنه رسم بياني جميل. لكن في الواقع، كان طلب البيانات كل 2 ثوانٍ. كان كل هذا يتراكم في قائمة الانتظار لأن Clickhouse ببساطة لم تقم بإنهاء المعالجة. هذا هو المكان الذي تم فيه إخفاء السبب الرئيسي. لم ينجح أي شيء في Grafana، وكانت الطلبات تقف في قائمة الانتظار، وكانت البيانات القديمة غير ذات الصلة تصل باستمرار.

لقد أعدنا تكوين المجموعة وأعدنا عملية الإدراج. أعاد المطورون الداخليون كتابة "أداة الإدخال" الخاصة بهم، وبدأوا في مشاركة البيانات بشكل صحيح.

أجرى ماكس تدقيقًا كاملاً للبنية التحتية. لقد أوجز خطة للانتقال إلى الواجهة الخلفية الكاملة. لكن هذا لم يناسب الشركة. لقد توقعوا سرًا سحريًا من ماكس يسمح لهم بالعمل بالطريقة القديمة، ولكن بكفاءة فقط. كان لينيا لا يزال مسؤولاً عن المشروع، ولم يتعلم شيئًا. ومن بين كل ما عُرض عليه، اختار مرة أخرى بديله. كما هو الحال دائمًا، كان هذا هو القرار الأكثر انتقائية... القرار الجريء. اعتقد لينيا أن شركته كان لها طريق خاص. شائكة ومليئة بالجبال الجليدية.

في الواقع، هذا هو المكان الذي افترقنا فيه – لقد فعلنا ما في وسعنا.

مع المعرفة والحكمة من هذا التاريخ، افتتحنا عملنا الخاص وشكلنا عدة مبادئ لأنفسنا. لن نبدأ العمل بنفس الطريقة الآن كما فعلنا في ذلك الوقت.

انضم إلينا DJ Max بعد هذا المشروع، وما زلنا نعمل معًا بشكل رائع. علمتني حالة Clickhouse كيفية إجراء تدقيق كامل وشامل للبنية التحتية قبل بدء العمل. نحن نفهم كيف يعمل كل شيء وعندها فقط نقبل المهام. وإذا كنا في وقت سابق نسرع ​​على الفور للحفاظ على البنية التحتية، فإننا الآن نقوم أولاً بمشروع لمرة واحدة، مما يساعدنا على فهم كيفية إدخاله في حالة صالحة للعمل.

ونعم، نحن نتجنب المشاريع ذات البنية التحتية الرديئة. حتى ولو مقابل الكثير من المال، حتى لو كان من باب الصداقة. من غير المربح تشغيل مشاريع مريضة. وقد ساعدنا إدراك ذلك على النمو. إما مشروع لمرة واحدة لترتيب البنية التحتية ومن ثم عقد الصيانة، أو نمر بالطائرة فحسب. الماضي جبل جليدي آخر.

ملاحظة: إذا كانت لديك أسئلة حول البنية الأساسية لديك، لا تتردد في تقديم طلب.

لدينا عمليتا تدقيق مجانيتان شهريًا، وربما يكون مشروعك واحدًا منهما.

المصدر: www.habr.com

إضافة تعليق