گزارش پیشرفت راهاندازه خودکار پرستاشاب
کار نوشتن راهاندازخودکار از تاریخ ۱۵ اسفند سال گذشته شروع شد و این گزارشی بر پیشرفت پروژه در طول این مدت است. قبل از این تاریخ مشغول خطایابی و توسعه پروژه مدیریت تصاویر پشت سفید بودیم. در طول این مدت کارهای متفرقهی دیگری مانند توسعه کد پایتونی شبه کتابخانهای که با پرستا پروما ارتباط برقرار کند و راحتتر کار آپدیت محصولات را انجام دهد که پتانسیل خوبی برای ترکیب شدن با مدیریت تصاویر پشت سفید دارد و کارهای دیگری که میتوان انجام داد. کار دیگری که صورت گرفت در طول این مدت که ارتباطی با راهانداز خودکار نداشت توسعه کد جاوااسکریپتی که در صفحه تعداد محصول پروما کار آپدیت تعداد محصول را سریعتر و به صورت خودکار انجام دهد. از کارهای متفرقه میتوان به توسعه کدی که به دانلود فایل حجیم از سروری به سرور دیگر نام برد و غیره...
در ابتدا کار هیچ ایدهای برای توسعه نداشتم و به بیراه میرفتیم مثلا استفاده از کتابخانههای پایتون و راهاندازی یک مرروگر در سرور یا استفاده از یک سرور سوم و واسط که همه اینها باعث شد که ما به راهحل نزدیکتر شویم. بعد از تحقیق و سردرگمی فروان کوره راههی از میان تاریک پیدا شد برای قدم گذاشتن در این راه باید یک زبان برنامه نویسی جدید یادمیگرفتیم و باید با مستندات فروانی دست و پنجه نرم میکردیم بعد از مدتی با مشاوره دوستان بالاخره معلوم شد که میخواهیم اصلا چیکار بکنیم. به طور کلی برنامه به صورت یک ماژول در سایت اصلی و یک فایل دیگر به همراه متحویات سایت در پوشه اسکلتون اکانت ساخته شده قرار میگرفت.
طراحی دوم در واقع همان طراحی اول است که چون کد به صورت اولیه و کثیف بود باید تمیز و بازیابی میشد در طراحی اول توابع داخل توابع تعریف شده بود و یک تابع یکسان در چندین جا تعریف شده بود و غیره که از کلاسها و کامپوزر برای مدیریت بهتر استفاده شد.
طراحی سوم در واقع همان طراحی دوم بود بدلیل پاک شدن کدها در طول تمیز کاری مجبور شدیم کار را دوباره انجام دهیم در طول این مدت نیز کدها اندکی تغییر کردند. این نسخه کامل بوده و در سایت محلی به صورت کامل اجرا شده و درمت سه دقیقه قادر به راهاندازی سایت است اما بعد از اینکه به سرور مهاجرت کردیم با کانکت نشدن سرور به سرور سایت ساز مواجه شدیم که همین مشکل را ماژول سرور خود سایت نیز داشت متوچه شدیم که این دو سرور در برقرار ارتباط با یکدیگر مشکل دارند سایت اصلی را به همان سرور بردیم ولی باز هم با مشکل طولانی بود درخواست ها مواجه شدیم که برخی اوقات راهاندازی به طور کامل انجام میشد و در برخی موارد خیر و نصفه انجام میشد.
در فایلی که کنار پوشه اسکلتون قرار دارد فایل های غیر ضروری نیز سرو میشوند که امنیت کار را میآورد پایین. این فایل کنار فایلهای سایت بدون فشرده سازی است که سرعت ساخت اکانت را میآورد پایین. دیتابیس به صورت یکجا پر میشود که باعث کندی برنامه می شود. و غیره...
بعد از متوجه شدن از کندی راهانداز و مواجه شدن با خطای تایم اوت باید بدنبال بهینه سازی و افزایش سرعت راهانداز میرفتیم. برای اینکار نیاز بود که راهانداز از اساس دگرگون شود. از جمله کارهای مهم میتوان نام برد این است که فایل های غیر ضروری دیگر سرو نمی شود. دیتابیس به صورت یکجا پر نمی شود و به صورت غیر همزمان به دیتابیس ریخته میشود که مانند یک استخر اتصلات عمل می کند. فایلهای سایت به صورت فشرده در کنار کد ما قرار دارد که باعث افزایش سرعت ساخت اکانت میشود. بازیابی فایلها و دیتابیس برعهده خود اکانت است. و غیره...
چون از ماژول سرور استفاده می کنیم مدیریت حجم سایت و چند سروری از جمله مشکلاتی است که داریم. از دیگر مشکلات این طراحی به دیلیل زمان بر بودن و اتصال همزمان دو محیط اگر در زمانی که ماژول در حال راهاندازی است کاربر بازیابی صفحه را قطع کند راهاندازی به صورت نیمه کاره راه میشود. و غیره...
بعد از کلی امتحان و خطا بدلیل وجود نداشتن یک نیروی فنی با تجربه در این زمینه بالاخره به منزل مقصود رسیدیم به نظرم من که در طول این پروژه گام به گام با آن همراه بودم این راه حل ۸۰ درصد راهحل نهایی ما برای سرورهای شرین و کم هزینه است این راهحال در صورت تغییر میکند که ما یک سرور اختصاصی خود استفاده کنیم که باز هم میتوان آن را بهینهتر کرد. در اینجا ما به جای استفاده از ماژول سروری خودمان از ماژول سروری سایت اصلی استفاده میکنیم و به جای آن به یک قلاب گوش میدهیم و برای جلوگیری از ورود کاربر به محیط اکانت از قلاب۱ و قلاب۲ استفاده میکنیم. ما با استفاده از یک ایمیل خوشآمد گویی اختصاصی و تیکت به کاربر اعلام می کنیم که درخواستش ثبت شده و بعد از بررسی و تایید نهایی نتیجه به ایشان اعلام میشود اینگونه کاربر منتظر نمیباشد و نمیتواند کار را نصفه کاره بگذارد و از طرفی بدیلی استفاده از ماژول خود سایت اطمینان پذیری بالایی دریافت میکنیم. ما در راهانداز از ادآن ماژول استفاده میکنیم.
ما با استفاده از یک قلاب از پذیریش درخواست مطلع میشویم.
ما با آیدی سفارش اطلاعات را از دیتابیس استخراج کرده و اگر یک اکانت جدید باشد و آپگرید نباشد فایل ما در پوشه اسکلتون وجود دارد در غیر این صورت آپگرید است و نیازی به تغییر در وب سایت نیست. ما یک دیتابیس و یک کاربر و یک کرون جاب را با استفاده از مستندات میسازمیم به صورت غیر همزمان و یک درخواست همزمان برای ایجاد رابطه بین کاربر و دیتابیس انجام می دهیم.
حال همه اطلاعات لازم برای به فایل موجود در اکانت انتقال داده میشود
اطلاعات داخل دیتابیس صف کرون جاب قرار گرفته و در لحظه پاسخ برمیگردد وگرنه دوباره کاربر باید به انتظار بشیند
کرون جاب به صورت غیر همزمان درخواست بازیابی فایل های فشرده و دیتابیس را میکند و بعد از پایان کار با فایل های موجود در سایت اصلی کال بک می کند
حال هم میتوان مستقیم و به صورت غیر همزمان اقدام به کامل کردن دیتابیس و تغییر پارمتر و پاک کردن فایل های اضافی و تغییر ورژن زبان کرد بدلیل اینکه سرعت این ها خوب است نباید به مشکلی خورد ولی برای تمیزی و جلوگیری مشکلات احتمالی می توان از یک کرون ثانویه در سایت اصلی استفاده کرد که این موضوع باید مورد تست و آزمایش قرار گیرد در آخر هم باید ایمیل راهاندازی و تیکت راهاندازی حاوی اطلاعات هویتی به کاربر ارسال شود
در زمان راهاندازی ماژول فایل ایمیل خوشامدگویی و ایمیل پایانی به صورت خودکار در دیتابیس قرار می گیرد. اگر از کرون ثانویه استفاده شود ممکن است هر پنج یا ده دقیقه یک سایت راهاندازی شود در غیر این صورت به دلییل اینکه کرون اولیه در لحظه است در سریعترین زمان ممکن راهاندازی اتفاق میافتد. کرون اولیه باید در مرحل آخر پاک شود. همه کارها باید در دیتابیس سایت اصلی ذخیره شود و در صورت خطا باید به ادمین نشان داده شود و ادمین توانایی دوباره راهاندازی آن مرحل را داشته باشد. و غیره..
به امید سلامتی و موفقیت سجاد فهیمیان تاریخ ۵ اردیبهشت ۱۴۰۲ ساعت ۳ صبح ۴ ساعت نیم قبل از اعزام به سربازی