ԸՆԴՀԱՆՈՒՐ ՊԱՏԿԵՐ
Համատեքստ
Համակարգն ուներ մեծ փոխկապակցված domain՝ օգտատերերի և profile-ների տվյալներից մինչև փաստաթղթեր, աշխարհագրական տվյալներ, polling, բազմալեզու էջեր, navigation և այլ structured content։ Այդ ամբողջ տվյալային մոդելը սպասարկվում էր մեկ Back-End համակարգից։
ԽՆԴԻՐ
Ինչ պետք էր լուծել
Back-End-ը պետք էր զարգացնել՝ առանց խախտելու մեծ փոխկապակցված տվյալների մոդելի կապերն ու սահմանափակումները։ Միաժամանակ նույն տվյալներն ու content-ը պետք էր տարբեր ձևերով տրամադրել web և mobile client-ներին։
ՍԱՀՄԱՆԱՓԱԿՈՒՄՆԵՐ
Ինչ պետք էր հաշվի առնել
- Production database-ն արդեն պարունակում էր իրական տվյալներ, ու schema-ի փոփոխությունները պետք էր անել առանց դրանք վնասելու կամ կորցնելու։
- Բազմալեզու content-ը ներառում էր էջեր, navigation, բազմաստիճան menu-ներ և տարբեր client-ների համար նախատեսված ներկայացումներ։
ԻՄ ՊԱՏԱՍԽԱՆԱՏՎՈՒԹՅՈՒՆԸ
Back-End, Database & API Ownership
- Պատասխանատու եմ եղել Node.js/TypeScript Back-End-ի, Prisma/MySQL տվյալների շերտի, API-ների և content/data կառուցվածքի համար։
- Նախագծել և զարգացրել եմ users, profiles, addresses, education, experience, documents, polling, geography, navigation և content տվյալների միջև կապերն ու database constraints-ը։
- Աշխատել եմ նաև schema փոփոխությունների, migration-ների խնդիրների, արդեն գոյություն ունեցող production data-ի և տարբեր client-ներին content տրամադրելու տրամաբանության վրա։
ՃԱՐՏԱՐԱՊԵՏՈՒԹՅՈՒՆ
Համակարգի կառուցվածքը
ՏԵԽՆԻԿԱԿԱՆ ԲԱՐԴՈՒԹՅՈՒՆՆԵՐ
Որտեղ էր բարդությունը
- Մեծ փոխկապակցված schema-ում փոփոխությունները ազդում էին foreign key-երի, index-ների, unique constraint-ների և այլ կախվածությունների վրա, ու migration-ների հերթականությունը կարևոր էր։
- Որոշ դեպքերում database-ում պահվող HTML/content-ը պետք էր վերածել հերթականությունը պահպանող structured data-ի՝ mobile client-ի համար։
- Schema drift-ի և migration state-ի խնդիրները պետք էր լուծել՝ չվնասելով production data-ն և պահպանելով backup/restore-ի անվտանգ տարբերակը։
ՄՈՏԵՑՈՒՄ
Ինչպես կառուցվեց լուծումը
- Տվյալների կապերն ու հիմնական կանոնները հնարավորինս ամրագրվել են հենց relational model-ում՝ foreign key-երով, constraints-ով և անհրաժեշտ validation-ով։
- Database-ում պահվող content-ը առանձնացվել է այն ձևից, որով այն վերջնականապես տրամադրվում է տարբեր client-ներին։
- Schema փոփոխությունները և migration-ները դիտարկվել են որպես feature-ի իրականացման մաս՝ հաշվի առնելով արդեն գոյություն ունեցող տվյալներն ու անհրաժեշտության դեպքում restore-ի հնարավորությունը։
ԱՐԴՅՈՒՆՔ
Ինչ ստացվեց
- Ստեղծվել և զարգացվել է ընդհանուր Back-End և տվյալների մոդել, որը սպասարկում է տարբեր client-ների՝ առանց նույն տվյալային կառուցվածքը յուրաքանչյուրի համար առանձին կրկնելու։
ՏԵԽՆԻԿԱԿԱՆ ՀԱՄԱՏԵՔՍՏ
Տեխնոլոգիաներ և համակարգեր
Հարթակի անունը, hostname-ները, ենթակառուցվածքի հասցեները, credentials-ը, secrets-ը և private schema անունները չեն հրապարակվում։