۱ خلاصهی مدیریتی
پروژه یک پلتفرم پرتراکنش شارژ/تاپآپ موبایل است که بهعنوان واسط بین شرکتهای خدمتگیرنده و اپراتورها عمل میکند. جنس پروژه از نظر منطق کسبوکار پیچیده نیست؛ چالش اصلی، مهندسیِ کارایی در مقیاس است: نگهداشتن نرخ تراکنش بالا (TPS) و پاسخدهی در حد میلیثانیه، در شرایطی که حجم داده در طول ماهها مدام رشد میکند و سیستم باید پایدار، بدون خطا و دارای دسترسپذیری بالا (HA) بماند.
پیشنهاد ما یک معماری میکروسرویس، رویداد-محور و کانتینری با بکاند Python (FastAPI + asyncio) است که دقیقاً برای همین کلاس از مسائل — تراکنشهای I/O-bound با همروندی بالا — طراحی میشود و با معماری چندلایهی فعلی و بستر Docker که تیم ما در آن تجربهی عملیاتی دارد، کاملاً همراستاست.
۲ درک ما از پروژه
برای اطمینان از همترازی، برداشت فنی ما از سامانه را خلاصه میکنیم:
چرخهی اصلی (یک سیکل تکراری)
شرکت خدمتگیرنده درخواست شارژ را با چند پارامتر ارسال میکند ← پلتفرم اطلاعات را دریافت و بر اساس قرارداد غنیسازی میکند ← همان لحظه به اپراتور ارسال میشود ← اپراتور فعالسازی میکند ← تأییدیه به خدمتگیرنده بازگردانده میشود.
دو نوع سرویس
نکتهی معماری مهم
پلتفرم مستقیماً با کاربر نهایی سروکار ندارد؛ کاربر نهایی متعلق به شرکت خدمتگیرنده است و پلتفرم فقط تراکنش را پردازش، اعتبارسنجی و به اپراتور مسیر میدهد. هر خدمتگیرنده روی لایه و دیتابیس مستقل خود کار میکند.
۳ چالشهای اصلی فنی
۴ راهکار پیشنهادی — نگاشت چالش به راهحل
| چالش | راهکار معماری |
|---|---|
| ۳.۱ | بکاند async (FastAPI/asyncio) برای همروندی بالای I/O + connection pooling به اپراتورها |
| ۳.۲ | پارتیشنبندی زمانی/بایگانی جداول تراکنش، ایندکسگذاری هدفمند، جداسازی مسیر داغ از انبار تحلیلی |
| ۳.۳ | الگوی Saga/Outbox، Idempotency Key، صف پیام پایدار، استقرار چندنمونهای پشت Load Balancer |
| ۳.۴ | موتور قواعد خطا مبتنی بر manual + سیاست retry/reverse + مشاهدهپذیری کامل |
| ۳.۵ | دیتابیس/اسکیمای مجزا بهازای خدمتگیرنده + محدودسازی منابع هر مستأجر |
اصول معماری کلیدی
۵ استک فناوری پیشنهادی (بکاند Python)
چرا Python مناسب این پروژه است
بار اصلی سیستم I/O-bound است (انتظار برای پاسخ اپراتور، خواندن/نوشتن دیتابیس و کش)، نه CPU-bound. مدل asyncio دقیقاً برای همین ساخته شده: یک worker میتواند هزاران تراکنشِ در حال انتظار را همزمان و بدون بلوکهشدن مدیریت کند. اکوسیستم بالغ Python نیز توسعهی سریع و قابلاتکا را ممکن میکند.
نمای کلی جریان یک تراکنش
Client ──> API Gateway ──> FastAPI (async)
|
|- validate + detect operator (Redis)
|- idempotency check
v
Kafka (request queue)
v
Transaction Worker (async)
|- call operator (pool + timeout + retry)
|- persist to PostgreSQL (Outbox)
v
Kafka (result queue)
v
return confirmation to Client
۶ رویکرد اجرا و همکاری
- گام ۰ — بازبینی و همترازی. دریافت سورس و مستندات پروژهی فعلی و بررسی معماری موجود. تصمیم آگاهانه دربارهی «ادامهی کد موجود» در برابر «بازنویسی هدفمند»؛ حفظ منطق سالم، و بازنویسی لایهبهلایه در صورت لزوم با استفاده از کد قبلی بهعنوان مرجع دامنه.
- گام ۱ — پایلوت. شروع با یک دامنهی کوچک و کنترلشده (یک اپراتور/یک خدمتگیرنده) برای اثبات معماری و گرفتن تأییدیهی اولیه.
- گام ۲ — توسعهی ایتریشنی. پیشبرد در قالب اسپرینت با جلسات دورهای، تحویل گامبهگام و اعتبارسنجی مستمر با کارفرما.
- گام ۳ — گسترش و سختسازی. افزودن خدمتگیرندهها/اپراتورها، تست بار سنگین، تنظیم HA و failover و آمادهسازی برای مقیاس کامل عملیاتی.
۷ چرا تیم ما
شرکت ما سابقهی ساخت و اجرای عملیاتی سیستمهای نرمافزاری جدی را دارد:
این سوابق نشان میدهد تیم ما هم در منطق کسبوکار و هم در زیرساخت مقیاسپذیر و کانتینری توانمندی عملی دارد و آمادهی انجام پروژهای در این کلاس است.