Multi-Platform Back-End և տվյալների ճարտարապետություն

Back-End համակարգ, տվյալների փոխկապակցված մոդել և API-ներ՝ web ու mobile հավելվածների և բազմալեզու բովանդակության համար։

Back-End · Տվյալների ճարտարապետությունBack-End, Database & API OwnershipՉհրապարակվող թվային հարթակ

Համատեքստ

Համակարգն ուներ մեծ փոխկապակցված 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 տրամադրելու տրամաբանության վրա։

Համակարգի կառուցվածքը

Տվյալների հոսքըWeb և mobile client-ները աշխատում են նույն Back-End API-ների և ընդհանուր relational data model-ի հետ։
Client-ներ
WebMobileContent
Back-End API-ներ · Content Transformation
Domain Services · Validation
Prisma · MySQL Relational Model
Cloud Infrastructure

Որտեղ էր բարդությունը

  • Մեծ փոխկապակցված 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-ների՝ առանց նույն տվյալային կառուցվածքը յուրաքանչյուրի համար առանձին կրկնելու։

Տեխնոլոգիաներ և համակարգեր

Node.jsTypeScriptPrismaMySQLAWS

Հարթակի անունը, hostname-ները, ենթակառուցվածքի հասցեները, credentials-ը, secrets-ը և private schema անունները չեն հրապարակվում։