Honeycomb: ابزاری برای دیباگ کردن آسان‌تر

Honeycomb: ابزاری برای دیباگ کردن آسان‌تر

مهندسین عملیات فیسبوک با هدف ایجاد یک تحول در زمینهٔ دیباگ کردن نرم‌افزار، یک استارتاپ تحت‌عنوان Honeycomb تأسیس نموده‌اند که امید دارند از طریق این سرویس، عملیات دیباگ کردن را باتوجه به نیازهای دولوپرهای قرن بیست‌و‌یکم بهبود دهند.

زمانی که نرم‌افزارها در هر حوزه‌ای وارد شده و کارهای روزانهٔ مختلفی را تحت سیطره خود قرار داده‌اند اما درعین‌حال باگ‌های زیادی دارند چه اتفاقی می‌افتد؟ واضح است که یک کابوس برای ما تداعی می‌شود. پاسخ مارتن میکوس مدیرعامل شرکت HackerOne برای این مسئله اجرای طرح Bug Bounty است (این طرح به گونه‌ای برنامه‌ریزی شده است تا هکرهای ماهر بتوانند با شناسایی و رفع باگ‌های نرم‌افزارهای مختلف، به کسب درآمد بپردازند.)

چریتی میجرز، یکی از مهندسین ارشد اسبق فیسبوک و از مؤسسان استارتاپ Honeycomb (هانی‌کامب) روش دیگری برای حل این مسئله پیشنهاد می‌دهد:

دولوپرها باید با دیباگ کردن به صورت Live (زنده) و استفاده از سرویس‌های در دسترس قرار داده شده، باگ‌های برنامه‌‌هاشون رو از بین ببرن.

شاید اجرای این امر در برنامه‌های ساده‌تر قدیمی چندان دشوار نباشد، ولی در برنامه‌های امروزی که دارای پیچیدگی‌های زیادی هستند چندان قابل اجرا به‌نظر نمی‌رسد. به‌هرحال وب‌سایت شرکت هانی‌کامب -honeycomb.io- رسماً در آوریل 2017 راه‌اندازی شد و براساس ادعای این شرکت، راه‌حل ارائه شده توسط آن‌ها سریع‌ترین و آسان‌ترین روش برای دیباگ کردن را ارائه می‌دهد.

با در نظر گرفتن پیشینهٔ مؤسسان این شرکت، این ادعا قابل‌اعتماد به‌نظر می‌رسد؛ با وجود این‌که هزاران رویکرد مختلف برای دیباگ کردن در اختیار دولوپرها قرار دارد، دولوپرهای Docker و GitHub از نگرش هانی‌کامب استقبال کرده و ادعا می‌کنند که این روش منجر به کامل شدن چرخهٔ توسعهٔ نرم‌افزاری می‌شود.

میجرز در یک مصاحبه این ادعا که این امکان برای پیدا کردن یک جایگاه برجسته در بازار پررقیب دیباگینگ برای استارتاپ هانی‌کامب وجود نخواهد داشت را رد کرد (وی اعتقاد دارد که رویکرد دیباگینگ هانی‌کامب به‌نوعی مشابه روش ساخت اسکمای انعطاف‌پذیر دیتابیس NoSQL است.)

چرایی و چگونگی هانی‌کامب
اولین سؤالی که به ذهن می‌رسد این است که هانی‌کامب چگونه امیدوار است در بازار پررقیبی که در آن تعداد زیادی نرم‌افزار برای دیباگ کردن وجود دارد (از جمله GDB، Microsoft Visual Studio Debugger و ...)، هم از لحاظ محصول و هم سهم بازار موفق شود. پاسخ میجرز در مورد این سؤال جالب توجه است:

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

چرا یک Debugger (دیباگر) جدید می‌تواند باعث تغییر شود؟
مشخصاً حل کردن مسئله‌ای که تاکنون حل نشده یک کار مهم است و تاکنون کسی به‌طور عمده موفق به حل مشکلات بسیار پیچیده در دیباگ کردن نشده است؛ از جملهٔ این باگ‌ها، اشکالات در تعامل میان نرم‌افزار، سرویس‌ها و رفتار کاربر است. میجرز در این رابطه می‌گوید که این مشکل هنوز حل نشده است و همه به‌شدت به حل آن نیاز دارند، حتی اگر خودشان متوجه این امر نباشند.

همه به یک ابزار اساسی چندجانبه که قابلیت ایجاد بازخورد به صورت درلحظه (Real-Time) را داشته باشد به‌شدت نیاز دارند. مسائل ساده، به‌راحتی حل شده و عملاً نیازی به راه‌حل‌های پیچیده ندارند اما این در حالی است که مسائل دشوار هم‌چنان باقی می‌مانند. 

آیندهٔ دیباگ کردن رویداد-محور
مفهوم اسکمای انعطاف‌پذیر، ما را به یاد NoSQL می‌اندازد و این امر یکی از دلایلی است که هانی‌کامب را تحول‌بخش جلوه می‌دهد. روش هانی‌کامب نوعی مفهوم درون‌ساختاری را برای ایجاد و اجرای نرم‌افزار القا می‌کند. بررسی مداوم سیستم، سرویس‌ها و کدها یک امر بسیار حیاتی است که هانی‌کامب ادعا می‌کند این کار را به‌خوبی انجام می‌دهد.

می‌توانید بااستفاده از اطلاعاتی که در اختیار دارید، اتفاقاتی که در برنامه‌ٔتان می‌افتد را پیش‌بینی کنید و تست‌هایی برای آن‌ها بنویسید. با این حال، کاربران همیشه باعث به‌هم ریختن معادلات شده و این مسئله ذاتاً قابل پیش‌بینی نیست!

میجرز در این باره می‌گوید که همهٔ شرکت‌های رشد یافته، یک محل ذخیرهٔ متریک و یک محل ذخیره رویداد دارند. با این حال، زمانی که دولوپرها برای دیباگ‌ کردن حق انتخاب داشته باشند، همیشه به رویدادهای ذخیره شده مراجعه می‌کنند. رویدادها پس از اتفاق افتادن در Log Aggregator ذخیره می‌شوند. لاگ‌های ساختار نیافته درواقع تنها یک روش جایگزین برای رویدادهای ساختار یافته ذخیره شده برای برنامه‌نویسان هستند.

هانی‌کامب به گونه‌ای طراحی شده است که تمامی داده‌های ورودی را فارغ از منشأ آن‌ها بپذیرد؛ به این ترتیب دولوپرهایی که بر روی کدهای به‌اصطلاح Legacy کار می‌کنند نیز می‌توانند از هانی‌کامب بهره ببرند. 

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

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

اگر واقع بین باشیم، متوجه می‌شویم که همهٔ دیباگرها لزوماً در کار خود خبره نیستند. در پاسخ به این سؤال که هانی‌کامب برای این دسته از افراد چه خدماتی ارائه می‌دهد؟ بایستی گفت که هانی‌کامب با ثبت و ضبط کردن نحوهٔ روند فکری دیباگ‌کننده و در دسترس قرار دادن آن برای دیگران، سعی می‌کند همهٔ دیباگ‌کننده‌ها را به بالاترین سطح در انجام این کار ارتقا دهد.

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

میجرز باور دارد که موفقیت در این زمینه، DevOps را وارد یک فاز جدید می‌کند (DevOps که از ترکیب 2 واژه انگلیسی Development (به‌معنای توسعه) و Operations (به‌معنای عملیات و اجرا) ایجاد شده، حرکت و فرهنگی است که بر همکاری و ارتباط عمیق توسعه‌دهندگان نرم‌افزار و سایر متخصصان حوزهٔ فناوری اطلاعات در فرایند ارائهٔ محصول نرم‌افزاری تأکید می‌کند.)

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

منبع