ارتقا معماری زیرساخت و بروزرسانی نرمافزار سمت سرور وب سایت پونیشا
پس از سپری شدن سه ماه از عرضهی نسخهی نهایی موفق پروژه ارتقا زیرساخت و بروزرسانی نرمافزار سمت سرور پونیشا بر آن شدیم تا این بروز رسانی را برای کاربران پونیشا روایت کنیم.
تصمیم جذب سرمایه پونیشا برای اولین بار پس از ۹ سال بوت استرپینگ در اواخر سال ۱۳۹۹ گرفته شد. این تصمیم در راستای پاسخگویی به روند فزون یافته گسترش فعالیتهای فریلنسینگ معطوف به همهگیری ویروس کرونا و ورود نسل زی به بازار کار و همچنین ایجاد زیرساخت لازم برای راهبری این بازار در سالهای آتی گرفته شد.
فهرست مطالب
چالش اساسی چه بود؟
پس از استقرار تیم جدید و برآورد وضعیت، ما با دو اولویت اساسی و در تضاد با هم مواجه شدیم:
۱. باید از وب سایت فعلی پشتیبانی میکردیم و جهت میزبانی از کاربران فعلی که هر روز تعداد ورودشان به شدت افزوده میشد نیز ظرفیت مازاد ایجاد میکردیم.
۲. وبسایت فعلی با توجه به نوع پیادهسازی اون امکان گسترش چندانی نداشت و باید در اسرع وقت وبسایت جدیدی با استفاده از تکنولوژیهای روز توسعه میدادیم تا بتونیم به اون مهاجرت کنیم.
اگر این تضاد اساسی به اندازه کافی چالش برای پیشرفت ایجاد نمیکنه باید به اون کدبیس گسترده، قدیمی و بدون راهنمای پونیشا در حالی که تمامی سرویسها در یک سرور و در هم تنیده در حال اجرا بودن هم اشاره کنیم تا بتونیم یه دید دقیق از صورت مسئله به شما بدیم.
و ببخشید، کدبیس پروژه سمت کاربر وبسایت هم در دسترس نبود. الان دقیق شد.
تصمیم سخت
چالش اساسی پیش رو این بود که وبسایت پونیشا با توجه به امکانات گستردهای که داره محصول به شدت بزرگی محسوب میشه و توسعهی اون در زمان کوتاه در حالی که باید از پروژهی فعلی قدیمی هم پشتیبانی کنی به شدت سخت میشه. با این حال با توجه به اینکه روزانه چندین هزار کاربر از پونیشا استفاده میکنن ما مجبور بودیم هر دو استراتژی رو بهطور موازی و با هم پیش ببریم و در کنار اون سعی کنیم تیم فنی رو هم گسترش بدیم.
قورباغه رو بلعیدیم
چندین هزار کاربر روزانه شوخی سرش نمیشه و باید در اسرع وقت زمین رو برای ورود کاربرای جدید هموار میکردیم. پس دوتا اولویت اصلی برای خودمون در نظر گرفتیم.
۱. بروز رسانی کدبیس سمت سرور لاراول و پیاچپی جهت بهبود امنیت و پرفورمنس
۲. طراحی، پیادهسازی و مهاجرت به یک زیرساخت جدید در راستای بهبود امنیت، مقیاسپذیری، اتکاپذیری و تابآوری
این ارتقا چقدر زمان برد؟
- ارتقا کدبیس، تست و رفعباگها از ابتدای تیرماه ۱۴۰۱ تا پایان دیماه ۱۴۰۱ طول کشید که واقعا مرحلهی پر اصطکاک و دردناکی بود.
- طراحی و پیادهسازی زیرساخت از ابتدای مهرماه ۱۴۰۱ شروع شد که تقریبا تا پایان دیماه ۱۴۰۱ ادامه پیدا کرد.
- جابجایی دادهها و تستهای نهایی که به دلیل مشکلات شبکهی زیرساخت با چالشهای نتوورکی فراوانی روبرو بود در دو هفتهی ابتدای اسفندماه ۱۴۰۱ انجام شد.
- در نهایت مهاجرت از زیرساخت قبلی به زیرساخت و نرمافزار جدید که در ۳ روز پر چالش و مملو از بیخوابی ۱۷ تا ۲۰ اسفند ۱۴۰۱ نهایی شد.
برخی چالشهای طول مسیر
- تلاش برای توسعه و بروزرسانی محصولی که ۶-۷ سال پیش توسعه داده شده و در پس اون رفع باگهایی که بوجود اومده بودن.
- انطباق ورژن تکنولوژیهای استفاده شده در سمت کد و زیرساخت
- کار کردن با پکیجهایی که منقضی (deprecated) شدن یا توسعه کد جدید جهت جایگزینی شون
- سپری کردن روزهای سخت انسانی و محدودیتهای شدید زیرساخت اینترنتی
- تلاش برای حفظ روحیه زمانی که پروژه بیش از برنامهریزی بخاطر مشکلات نامشخص و برنامهریزی نشده طول کشیده بود
لانچ محصول
در نهایت بهمنماه و نیمهی اول اسفندماه رو صرف جابجایی دادهها از زیرساخت قبلی به زیرساخت جدید و تست کامل سایت جدید بهروز شده بر روی زیرساخت جدید کردیم و نهایتا در پی یک عملیات ۷۲ ساعته سایت بهروز شده و زیرساخت جدید را با زیرساخت قبلی جایگزین کردیم و پس از اطمینان از حداقل میزان پایداری مورد نیاز وارد مرحلهی سافت لانچ شدیم.
در این مرحله بصورت مداوم به بهینهسازی و رفع چالشهای گزارش شده پرداختیم و در نهایت در ابتدای خرداد ماه وارد فاز هاردلانچ نهایی شدیم.
برخی از قابلیتهایی که پروژه زیرساخت جدید به همراه داشت:
عملکرد،اتکاپذیریوتابآوری
در زیرساخت جدید تمامی وب سرورها، دیتابیسها، اپلیکیشنها، استورجها و سرورهای کش بصورت جداگانه و به صورت کلاستر شده پیادهسازی و بهینهسازی شدن. این معماری باعث جلوگیری از ایجاد single point of failure و نتیجتا منتج به عملکرد پایاتر وبسایت فعلی شد.
امنیت
پیادهسازی چکلیستهای امنیتی بر روی تمامی ماشینهای مجازی زیرساخت و اجرای شبکهی داخلی و قطع ارتباط با اینترنت برای قسمت عمدهای از زیرساخت به صورت مستقیم.
مقیاسپذیری
پیاده سازی سیستم آبجکت استورج جهت ذخیره سازی فایلها و همچنین استفاده از معماری قابل گسترش بصورت افقی و عمودی در تمامی حافظههای دیگر زیرساخت.
دستاوردها
با اجرای این پروژه که از ابتدای خردادماه امسال در حالت هارد لانچ قرار گرفته توانستیم ظرفیت بسیار بیشتری از کاربران را بدون مشکل و با عملکرد مقبول میزبانی کنیم. از دسترس خارجشدنهایی که به دلیل نقص عملکرد زیرساخت بودند را پایان دهیم و همچنین استانداردهای وب سایت از لحاظ امنیتی را نیز به شدت تقویت کنیم.
مشکلات باقیمانده و گذر از وب سایت فعلی به وبسایت جدید
قبل از هر چیز جا داره از کاربران پونیشا بابت تحمل تمام چالشها در این دورهی گذار تشکر کنیم و لازمه اشاره کنیم که متاسفانه با وجود تمام تلاشهای تیم پونیشا و ارتقاهای انجام شده، به دلیل عدم دسترسی به کدبیس پروژه سمت کاربر وب سایت فعلی، پیاده سازی برخی از قابلیتهای توسعه داده شده یا به شدت وقتگیر و غیر منطقی یا غیر قابل اجرا شدنند. با این وجود سعی شد تا در حد امکان تمامی عملکردهای اساسی سیستم به نحو مطلوب و بدون ایراد برای کاربران پیاده سازی شود.
در انتها باید از تیم فنی پونیشا و مشاوران ارشد زیرساختمون مسعود یوسفپور و محمد سجاد اسعدی که در این پروژه همچون یک همتیمی دلسوز چالشها را تحمل کردند و با تخصص خود ما را در انجام این پروژه همراهی کردند تشکر ویژه کنیم.
ارادتمند
سعید فداکار – مدیر ارشد فنی
مسعود حمیدزاده – مدیر ارشد اجرایی