Vazifa
Bu yerda ishning ikkala qiyin turi bir joyga kelgan.
Birinchisi: begona yopiq dvigatelda ishlab turgan platforma. Bir yuz qirq uchta modul, bir yuz oʻn uchta jadval, yadroning bir qismi himoyalangan va prinsipial oʻqilmaydi.
Xatti-harakat kod oʻqib emas, tajriba bilan aniqlanadi, tizim esa har kuni pul bilan operatsiya olib boradi.
Ikkinchisi: noldan yozilayotgan yangi avlod, u oʻtmishdoshi omad bilan chiqib ketgan joylarda oʻtmishdoshidan sezilarli ishonchli boʻlishi kerak.
Yechim
Meros platformani qayta yozish uchun qayta yozmadik. Uni qismlarga ajratdik, tajriba bilan aniqlangan narsalarni hujjatlashtirdik va nuqtaviy olib boramiz, toʻlov integratsiyalaridan boshlab, chunki ish deyarli hammasi aynan oʻsha yerda sodir boʻladi. Yangi avlod bu sohada hamma narsani hal qiladigan ikki narsa atrofida qurildi: balansning toʻgʻriligi va kalitlarning himoyasi.
Balans koddan erkin soʻrov bilan oʻzgarmaydi. Operatsiyalar idempotent, bitta xabarning takroriy yetkazilishi ikkinchi hisoblashni yaratmaydi, raqobatdagi yechishlar esa qoldiqni minusga olib keta olmaydi. Kalitlar shifrlangan holda saqlanadi, shifrlash kaliti esa repozitoriydan tashqariga chiqarilgan.
Arxitektura va qanday qurdik
Nimalar qilingan:
· meros yadroni, yopiq modullari bilan birga, ochish va hujjatlashtirish
· ikkala platformada toʻlov integratsiyalarini olib borish
· avtomatik hisoblash bilan kiruvchi operatsiyalar konturi
· koʻp bosqichli tekshiruv bilan mablagʻ yechish
· bitim vaqtiga mablagʻ blokirovkasi bilan foydalanuvchilar orasidagi bitimlar
· shaxsni tekshirish, hisob boʻyicha hodisalar haqida messenjerga xabar
Alohida ish sifatida ajratilgan serverga koʻchish bajarilgan. Stek: Laravel va PHP, PostgreSQL, Redis, shuningdek eski platformaning meros muhiti.
Natija
Ikkala platforma ham ishlaydi. Keysning buyurtmachi uchun qiymati soha mavzusida emas, kamdan-kam birga uchraydigan ikki malakada: yangi tizimda yuklama va pulni ushlab turish va ayni paytda hujjati ham, manba kodining bir qismiga kirish ham yoʻq begona tizimni qoʻllab-quvvatlash.
Ikkinchisi odatda birinchisidan qimmatroq chiqadi.