۶۶,۰۰۰ دلار در سال، واقعاً چه چیزی میخرد
دانشگاه لرستان سیستم ایمیلش را روی IceWarp اجرا میکرد و سالانه حدود ۷۰,۰۰۰ دلار برای ۱۰,۰۰۰ صندوق پستی پرداخت میکرد. کل این سیستم را به یک سرور ایمیل خودمیزبان Stalwart مهاجرت دادیم؛ همان تعداد صندوق، همان کاربرها، هزینهی سالانه حالا کمتر از ۴,۰۰۰ دلار. این همان عددی است که این نوشته واقعاً دربارهی آن است — بقیهاش زمینهای است برای اینکه چطور یک تیم کوچک از پس مهاجرتی به این اندازه برمیآید.
سیزده محصول، سه نفر، یک هاست مشترک
این پروژه همزمان با کار ساخت و استقرار روی دوازده محصول دیگر پیش رفت: یک ابزار پشتیبانی، یک اپ انطباق با استانداردها، یک CMS، یک پایگاهدادهی بیوانفورماتیک، چند ربات تلگرام، و چند ابزار داخلی. بیشترشان کوچکاند — رباتی با یک وظیفه، داشبوردی داخلی که کسی بیرون از تیم به آن دسترسی ندارد. دوتایشان اینطور نیستند: فیدار MES که کیفیت و ردیابی قطعهبهقطعهی ساخت فولاد را برای یک مشتری صنعتی دنبال میکند، و خودِ سیستم ایمیل لرستان که ۱۰,۰۰۰ نفر واقعی هر روز به آن وابستهاند. این دو همان انضباط استقرار بقیه را دارند، بهعلاوهی چیزی بیشتر: فیدار MES با ۱۱۳ تست خودکار میآید که چیزهایی مثل sync آفلاین کف کارگاه و رکوردهای QC را پوشش میدهد، چون یک باگ در این زنجیره چیزی نیست که بخواهی بعداً بفهمی.
بخش خستهکنندهای که بقیه را ممکن میکند
پایپلاین استقرار برای هر سیزده محصول یکی است، و احتمالاً بیجلوهترین بخش کل ماجراست: هر استقرار production از نوع blue-green است — یک کانتینر دوم بالا میآید، healthcheck میشود، و فقط بعدش جای کانتینر قدیمی را میگیرد. اگر healthcheck هیچوقت سبز نشود، اسکریپت کانتینر جدید را حذف میکند و قدیمی را دستنخورده نگه میدارد. نه پنجرهی تعمیرات، نه حالت «دیپلویشده ولی خراب».
کد از پایپلاین رد میشود؛ محتوا لازم نیست
دو هفته پیش این را به روش مفیدش فهمیدیم: یک تمپلیت داشت بیسروصدا بلوک call-to-action را از روی دوازده مقالهی منتشرشده حذف میکرد — یک فیلد null در config بدون fallback. رفع باگ در کد یعنی یک دیپلوی. رفع محتوا اینطور نبود: سایت دادهی مقالهها را از Mongo با یک poll هر ۳۰ ثانیه میخواند، پس patch کردن همان دوازده رکورد کل رفع باگ بود. بدون دیپلوی، بدون ریدیپلوی، در نیم دقیقه لایو.
عدد، یک بار دیگر
از ژانویه تا الان، این پایپلاین چیزی نزدیک به ۱,۶۰۰ کامیت را روی ۱۵ ریپازیتوری وارد production کرده. سرعت اینجا هدف نیست؛ فقط چیزی است که وقتی ۳ نفر ۱۳ چیز را روی یک هاست مشترک میسازند، بدون جایی برای یک دیپلوی بد که همهچیز را بخواباند، از آن سر بیرون میآید.