متن‌باز کردن Notify Cyber

مخزن GitHubسایت بایگانی‌شدهپست ردیت

پست لینکدینپست HackerNews

پس از بیش از ۲ سال و بیش از ۱۷ هزار بازدیدکنندهٔ منحصربه‌فرد، داریم Notify Cyber را متن‌باز می‌کنیم!

در اوایل ۲۰۲۳، دیلان اَک و من (مهمت ییلماز) Notify Cyber را ساختیم چون از عبور کردن از میان منابع پراکندهٔ اخبار امنیت سایبری خسته شده بودیم. ما پلتفرمی ساختیم که اخبار را از بیش از ۷ منبع از جمله انتشارهای امنیتی اپل، هشدارهای CISA، پایگاه دادهٔ CVE در NIST، Dark Reading، IT Security Guru، مرکز پاسخ‌گویی امنیتی مایکروسافت (MSRC)، Trellix، و The Hacker News گردآوری می‌کرد. بک‌اند یک گردآورندهٔ پایتون بود که داده‌ها را بدون نیاز به خزش مبتنی بر مرورگر پاک‌سازی و پردازش می‌کرد؛ این سیستم می‌توانست همهٔ محتوا را با استفاده از درخواست‌ها و تجزیهٔ ساده استخراج کند. سپس مقالات را با استفاده از API اوپن‌ای‌آی خلاصه می‌کردیم و همه‌چیز را در پایگاه دادهٔ PostgreSQL روی Supabase ذخیره می‌کردیم. فرانت‌اند و API بدون‌سرور روی Vercel میزبانی می‌شدند؛ دیلان رابط کاربری تمیز Next.js و React را ساخت، در حالی که من بک‌اند را نگه‌داری می‌کردم. دامنه را از طریق Google Domains ثبت کردیم و فهرست انتظار را با یک Google Form ساده مدیریت کردیم. همه‌چیز زیرساختی کاملاً رایگانِ لایهٔ رایگان بود، که برای اثبات مفهوم عالی بود. برای داستان کاملِ اینکه چه چیزی ما را به ساخت این پروژه ترغیب کرد، نخستین پست وبلاگ ما از ۲۹ مه ۲۰۲۳ را بخوانید.

راه‌اندازی، تجربه‌ای فروتن‌کننده بود. ما در ژوئن ۲۰۲۳ با تقریباً صفر بازدیدکنندهٔ روزانه راه‌اندازی شدیم. دو هفتهٔ اول را صرف بازاریابی در توییتر کردیم اما هیچ کاربر جدیدی نگرفتیم. دیلان و من دلسرد شده بودیم و می‌خواستیم پروژه را کنار بگذاریم، اما به‌عنوان آخرین راه‌حل، تصمیم گرفتیم یک تلاش نهایی در ردیت انجام دهیم.

پس از روزها رفت‌وبرگشت، دیلان توانست یک پست را برای انتشار در r/cybersecurity تأیید کند و آن را منتشر کرد. و ظرف ۳ روز، بیش از ۸ هزار بازدیدکننده و بیش از ۱۰۰ نفر در فهرست انتظارمان داشتیم. آن پست در نهایت به بیش از ۶۵ هزار بازدید با نرخ رأی موافق ۹۶٪ رسید.

طی دو سال، به بیش از ۱۷ هزار بازدیدکنندهٔ منحصربه‌فرد و بیش از ۴۳ هزار بازدید صفحه رسیدیم، آن هم همگی از طریق رشد ارگانیک. همچنین در همان بازهٔ زمانی شمار فهرست انتظار را به بیش از ۱۶۰ رساندیم. حتی بی‌رحمانه بهینه‌سازی کردیم و هزینه‌های ماهانه را از ۳۸ دلار به فقط ۱٫۸۵ دلار کاهش دادیم؛ با انتقال گردآورنده از یک نمونهٔ ابری به یک Raspberry Pi 3B+ که در خانهٔ من اجرا می‌شد. فرانت‌اند و API روی لایهٔ رایگان Vercel باقی ماندند، اما انتقال گردآوری داده به سخت‌افزار محلی، همان نقطهٔ تحول بود. یک نمونهٔ Linode را به‌عنوان پشتیبان برای زمانی که سفر می‌کردم راه‌اندازی کردیم، اما بیشترِ وقت‌ها فقط همین Raspberry Pi کوچولو بود که در پس‌زمینه آرام و بی‌صدا کار می‌کرد، کانتینرهای Docker را اجرا می‌کرد و پایگاه داده‌مان را با اخبار تازهٔ امنیتی تغذیه می‌کرد. این همان نوع زیرساختِ دست‌وپا‌جمع‌کردنی است که بیشتر مردم حتی در نظر هم نمی‌گیرند، اما ثابت کرد که برای اجرای چیزی با اثر واقعی، به استقرارهای ابریِ گران‌قیمت نیاز ندارید.

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

در طول این مسیر، آموختیم که زمان‌بندی و توزیع مهم‌اند. MVP می‌تواند دست‌وپا‌جمع‌کردنی باشد، اما اجرا باید تمیز باشد. چیزی را بسازید که از حل کردنش لذت می‌برید. تقاضای واقعی همیشه به مدل کسب‌وکاری معتبر تبدیل نمی‌شود. و در بازنشسته کردن/تغییر مسیر دادن یک پروژه، شأن و کرامت وجود دارد.

اما دربارهٔ قدم بعدی، من در حال حاضر روی حل چند مسئلهٔ جالب در Charter/Spectrum تمرکز کرده‌ام و چند پروژهٔ هیجان‌انگیز هم در افق دارم. اما تا آن زمان، می‌خواهم این فصل را با Notify Cyber ببندم. این پروژه به من نگاهی اجمالی به این نشان داد که تناسب محصول-بازار چه شکلی است و اینکه برای ساخت یک پروژه/محصول اثرگذار، به سرمایه‌گذاری و بازاریابی پرزرق‌وبرق نیاز ندارید. راه‌اندازی با منابع داخلی شاید مسیرِ بیشترِ محصولات نرم‌افزاری باشد و من این درس را در هر چیز دیگری که در آینده می‌سازم با خودم حمل می‌کنم.

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

تشکر ویژه از دیلان اَک برای پیش بردن فرانت‌اند و موفقیت ما در ردیت!

آخرین صحنهٔ تلخ و شیرین از سامورایی جک