مهندسی پایدار، معماری ماژولار و امنیت در طراحی
رویکرد فناورانه کراپلود بر پایهای از مهندسی بدون شتابزدگی، حذف پیچیدگیهای تصادفی، خوداتکایی زیرساختی و انتخاب پشتههای آزمونشده بنا شده است.
این صفحه، تصویر فنی اکوسیستم است: چه فناوریهایی استفاده میشود، چرا انتخاب شدهاند، مرزهای اعتماد کجا هستند، و کدام تصمیمهای مهندسی باعث میشوند سرویسها سریع، قابل نگهداری و قابل اعتماد بمانند.
پشتهٔ فناوری
انتخابهایی که سالها آزمون خود را پس دادهاند، نه فناوریِ لحظهای.
| زبان و فریمورک | Python 3.13 · Django 5 (MVT + DRF) |
| پایگاه داده | PostgreSQL 17 — تراکنشهای ACID، جداسازی در سطح ردیف |
| کش و صف | Redis — نشستها، نرخمحدودسازی، صف کارهای پسزمینه |
| وبسرور | nginx — TLS، پروکسی معکوس، محدودیت نرخ، هدرهای امنیتی |
| کارگزار برنامه | gunicorn — چند worker، سوکت یونیکس، بازراهاندازی خودکار |
| فرانتاند | Django Templates + JS سبک، بدون build step سنگین |
| هوش مصنوعی | CTranslate2 + OPUS-MT، کاملاً خودمیزبان و درونسازمانی |
| پرداخت | درگاه بانکی مجاز — بدون ذخیرهٔ اطلاعات کارت |
چهار رکن معماری
۱. مونولیت ماژولار
هر دامنهٔ کسبوکار در یک اپ مستقل با مرزهای روشن قرار دارد. استقرار یکپارچه است، اما مرزها بهگونهایاند که یک ماژول بتواند بدون بازنویسی بقیه تغییر کند.
۲. معماری چنددامنهای
هر سرویس روی دامنهٔ اختصاصی خود اجرا میشود و مسیرها بر اساس میزبان تفکیک میشوند. این جداسازی، سطح حمله و دامنهٔ اثر خطا را کوچک میکند.
۳. چندمستأجری
در نکسوس، هر سازمان یک مستأجر مستقل است و دادهها در سطح ردیف جدا میشوند. هیچ مسیری امکان مشاهدهٔ دادهٔ سازمان دیگر را نمیدهد.
۴. امنیت در طراحی
حداقل دسترسی، جداسازی رازها، اعتبارسنجی ورودی و محافظت CSRF از مرحلهٔ طراحی در نظر گرفته میشوند، نه بهعنوان لایهٔ الحاقی.
نقشهٔ دامنهها
croplod.com | سایت شرکتی، محصولات، مستندات، پروفایل عمومی کاربران |
auth.croplod.com | ورود، ثبتنام، تأیید ایمیل، بازیابی رمز، ۲FA |
account.croplod.com | داشبورد، تنظیمات، امنیت، نشستها |
plus.croplod.com | نشریه و محتوای تحریریه |
wallet.croplod.com | کیف پول، شارژ و پرداخت |
premium.croplod.com | اشتراک ویژه |
ads.croplod.com | ثبت و مدیریت آگهی |
nexus.croplod.com | محیط کاری سازمانی |
نشست مشترک و مرزهای اعتماد
یک ورود، همهٔ سرویسها — با محدودیتهای دقیق.
نشست روی دامنهٔ والد .croplod.com تنظیم میشود تا ورود یکباره در همهٔ زیردامنهها معتبر باشد. این تصمیم یک مرز اعتماد ایجاد میکند و بنابراین با کنترلهای زیر همراه است:
- کوکی نشست با
HttpOnly،SecureوSameSite=Laxصادر میشود. - توکن CSRF روی همهٔ فرمها اعتبارسنجی و پس از ورود بازتولید میشود.
- شناسهٔ نشست هنگام ورود میچرخد تا نشست پیش از ورود قابل استفاده نباشد.
- هدر
CSPدامنههای مجاز فرم و اسکریپت را محدود میکند. - دامنههای بیرون از این خانواده، هیچ دسترسیای به کوکی یا نشست ندارند.
لایههای زیرساخت
شبکه
تنها پورتهای لازم عمومیاند؛ پایگاه داده و کش فقط روی localhost گوش میدهند. مسدودسازی خودکار تلاشهای مکرر در سطح شبکه.
وب
TLS 1.2/1.3، HSTS با preload، محدودیت نرخ روی مسیرهای حساس و مسدودسازی مسیرهای اسکنر.
برنامه
اعتبارسنجی ورودی، جداسازی نقشها، مدیریت خطای کنترلشده و لاگ ساختیافته.
داده
هش یکطرفهٔ رمز، حداقلسازی داده، پشتیبانگیری دورهای و کنترل دسترسی به پایگاه داده.
چرا این انتخابها
چرا جنگو: ابزارهای آمادهٔ امنیت (CSRF، XSS، نشست)، ساختار پروژهای روشن و اکوسیستم پایدار — مناسب مجموعهای که چند سرویس را با یک تیم نگه میدارد.
چرا پستگرس: تراکنشهای قوی، پشتیبانی از دادهٔ رابطهای پیچیده و امکان جداسازی داده در سطح ردیف برای نکسوس.
چرا ردیس: پاسخ کوتاه برای عملیات پرتکرار، نرخمحدودسازی دقیق و صف کارهای پسزمینه.
چرا ترجمهٔ خودمیزبان: متن محتوا نباید برای پردازش به سرویس بیرونی برود. اجرای محلی، هم حریم داده را حفظ میکند و هم وابستگی بیرونی را حذف میکند.
کارایی، پایداری و مقیاس
- صفحههای سبک: تصاویر بهینه، بارگذاری تدریجی و پرهیز از کتابخانههای سنگین فرانتاند.
- کش هدفمند: فایلهای ثابت با سیاست کش طولانی و نسخهدار؛ صفحات حساس بدون کش.
- محدودسازی نرخ: مسیرهای ورود و پنل مدیریت سقف درخواست دارند تا سرویس در برابر حمله پایدار بماند.
- پایش: ثبت رویدادهای امنیتی، لاگ درخواستها و بررسی دورهای خطاها.
- پشتیبانگیری: نسخهٔ پشتیبان دورهای در مسیر جدا از محیط اجرا، با همان کنترلهای دسترسی.
کیفیت کد و نگهداشتپذیری
معماری خوب، معماریای است که تغییر در آن پرهزینه نباشد. به همین دلیل:
- جداسازی مسئولیتها و پرهیز از منطق کسبوکار در لایهٔ نمایش.
- پیکربندی از طریق متغیرهای محیطی و جدا بودن رازها از کد.
- تستپذیری و امکان بازتولید خطا در محیط توسعه.
- مستندسازی تصمیمهای مهم، نه فقط کد.
- بازبینی پیش از انتشار و امکان بازگشت سریع در صورت بروز مشکل.
ادامهٔ مسیر
جزئیات فنی هر بخش در مستندات منتشر شده است.