Ventara

/Case study

Nosozlikdan omon qoladigan obuna billingi

Ishlash monitoringi mahsuloti. Ko'p jamoalar xato qiladigan qism atrofida qurilgan: Stripe obunalari, webhook'lar va oradagi holatlar. O'z mahsulotimiz, tasvirlash uchun emas, ko'rsatish uchun qurilgan.

INTERFACENext.jsSERVICESFastAPICeleryStripeDATAPostgreSQLRedisPLATFORMDockerARCHITECTURE
  • FastAPI
  • PostgreSQL
  • Celery
  • Redis
  • Stripe
  • Next.js
  • Docker

/Muammo

Billing kodi ko'rinmas tarzda buziladi, gap pulga borib taqalguncha. Webhook ikki marta keladi, tartibsiz keladi yoki foydalanuvchi allaqachon boshqa tarifda bo'lganda keladi. Bularning har biri jimgina noto'g'ri obuna holatini yaratadi va uni bir oydan keyin sezishadi.

/Yondashuv

Webhook ishlovchilari idempotent va hodisa id'si bo'yicha kalitlanadi, shuning uchun takroriy yetkazish hech narsani o'zgartirmaydi. Obuna holati optimistik ko'chirilmaydi, Stripe'dan keltirib chiqariladi, shuning uchun o'tkazib yuborilgan hodisa keyingi sinxronizatsiyada o'zini tuzatadi. Narxlar versiyalanadi: tarifni o'zgartirish mavjud mijozlarni jimgina qayta narxlamaydi. Fon ishlari Celery va Redis'da, butun stack konteynerlashtirilgan.

/Natija

Aynan billing yo'llarini qamraydigan 244 ta avtotest bor, takroriy va tartibi buzilgan webhook yetkazish ham shu jumladan. Ustiga obuna holatini ko'rish uchun admin konsoli. Haqiqiy Stripe test kalitlari bilan ishlaydi, ya'ni integratsiya mock qilinmaydi, sinaladi.