← فهرستrsvapi

GET /work/rsvapi200 OK

02 / 08 · سرویس بک‌اند · 2026

RsvAPI

بک‌اند بلیت‌فروشی رویداد؛ جایی که آخرین بلیت فقط یک‌بار فروخته می‌شود.

یک بک‌اند مقیاس‌پذیر برای بلیت‌فروشی با Node.js و TypeScript که کل چرخه رزرو را پوشش می‌دهد: مدیریت رویداد و بلیت، رزرو و پردازش پرداخت.

نقش من
طراحی و پیاده‌سازی کامل سرویس، از ابتدا تا انتها.
سال
2026
بستر
پروژه شخصی
ابزارها
  • Node.js
  • TypeScript
  • Express.js
  • PostgreSQL
  • TypeORM

01 / مسئله

مسئله

وقتی چند نفر هم‌زمان سراغ بلیت‌های محدود می‌روند، کدِ ساده ممکن است یک صندلی را دوبار بفروشد. بک‌اندِ بلیت‌فروشی باید زیر درخواست‌های هم‌زمان هم درست کار کند، نه فقط در مسیر ایده‌آل.

02 / نقش من

نقش من

طراحی و پیاده‌سازی کامل سرویس، از ابتدا تا انتها.

03 / تصمیم‌های مهم

تصمیم‌های مهم

  1. 01

    رزرو به‌صورت تراکنش انجام می‌شود

    ثبت رزرو و به‌روزرسانی موجودی با هم موفق یا ناموفق می‌شوند؛ پس دیتابیس هیچ‌وقت نیمه‌کاره به‌روز نمی‌ماند.

  2. 02

    کنترل هم‌زمانی صریح

    درخواست‌های رقیب برای یک بلیت عمداً مدیریت می‌شوند تا شرایط رقابتی (race condition) فروش را از موجودی بالاتر نبرد.

  3. 03

    کش با Redis

    داده‌هایی که زیاد خوانده می‌شوند در Redis کش می‌شوند تا فشار از روی PostgreSQL کم شود.

  4. 04

    لایه‌های تمیز، ورودی‌های اعتبارسنجی‌شده

    مسیرها، منطق کسب‌وکار و دسترسی به داده از هم جدا هستند. ورودی با Zod اعتبارسنجی می‌شود، احراز هویت با JWT است، API در Swagger مستند شده و تست‌های یکپارچگی و Docker قابلیت تکرار را تضمین می‌کنند.

04 / بخش سخت کار

غیرممکن کردن فروش بیش‌ازحد، نه فقط بعید کردنش. بخش جذاب کار در مسیرهای هم‌زمان بود، نه در CRUD.

ابزارها

  • Node.js
  • TypeScript
  • Express.js
  • PostgreSQL
  • TypeORM
  • Redis
  • JWT
  • Zod
  • Swagger
  • Integration tests
  • Docker