Snapchat-ը հայտնի է քչերի և դեռահասների շրջանում: Դուք հավանաբար 25-ից բարձր եք, եթե չեք կարողանում հասկանալ, թե ինչպես է դա աշխատում: Snapchat-ը՝ սոցիալական մեդիայի ամենահայտնի հավելվածներից մեկը, երեխաներին և դեռահասներին տրամադրում է հենց այն, ինչ նրանք ուզում են՝ սովորական դեպքերը կիսելու հեշտ մեթոդ՝ միաժամանակ նրանց դարձնելով գեղեցիկ տեսք:
Ի տարբերություն Facebook-ի և Twitter-ի, որոնք ձայնագրում և հրապարակում են այն ամենը, ինչ դուք անում եք, Snapchat-ն օգտագործում է հաղորդագրություններ, որոնք պետք է անհետանան (տես, թե ինչպես չեն անում):
Snapchat-ի մասին շատ բան կա, և եթե դուք ծրագրավորող եք, դա նույնիսկ ավելին է: Այսպիսով, այս գրառումը ձեզ կտրամադրի Snapchat-ի բարձր մակարդակի տեսք համակարգի նախագծում և շատ ավելի շատ պատկերացումներ:
ներածություն
Snapchat-ը գտնվում է ԱՄՆ-ում սոցիալական ցանց հավելված, որը թույլ է տալիս օգտատերերին անմիջապես միանալ, կիսվել պատկերներով և այլն:
- Հաղորդագրություններն ու պատկերները (կամ նկարահանումները) ունեն 24-ժամյա ժամկետ: Խրախուսում է մարդկանց կիսվել իրենց պատմություններով խմբերով:
- Snap Map-ը թույլ է տալիս օգտվողներին քարտեզի վրա տեսնել, թե որտեղ են գտնվում իրենց ընկերները:
- Հիշողությունները օգտատերերին հիշեցնում են լուսանկարները, որոնք նրանք պահել կամ տարածել են մեկ տարի անց:
- Snapchat-ը չափազանց տարածված է երիտասարդ սերունդների, հատկապես դեռահասների շրջանում: Հավելվածում կա 319 միլիոն ակտիվ օգտատեր, և ամեն օր ուղարկվում է 5.4 միլիարդ ակնոց:
Դիզայնի կարևոր պայմաններ
Մոնոլիտ ճարտարապետություն – Միաշերտ հավելվածը, որը գործում է այլ հավելվածներից անկախ, հայտնի է որպես մոնոլիտ (մոնոլիտ ճարտարապետություն): Մոնոլիտը նախատեսված է առաջադրանքն ավարտելու համար անհրաժեշտ բոլոր գործողությունները կատարելու և վարելու համար: Հավելվածը կատարում է բոլոր գործառույթները սկզբից մինչև վերջ:
Microservices- ը - Այն մոնոլիտների բևեռային հակադրությունն է: Microservices- ը ճարտարապետական մոտեցում է, որը կազմակերպում է հավելվածը որպես ծառայությունների հավաքածու։ Այս ծառայություններն օգտագործվում են հավելվածի բազմաթիվ ասպեկտները վերահսկելու համար: Հաճախորդը պատվեր է տալիս, մատուցողը վերցնում և առաքում է այն, իսկ խոհարարը պատրաստում է այն: Այս օրինակում յուրաքանչյուր բաղադրիչ գործում է անկախ և առանձին մյուսներից. ոչ ոք հստակ չգիտի, թե ինչ են անում մյուսները, և ոչ մեկին հասանելի չէ նույն տեղեկությունը:
JSONԴա տեքստի վրա հիմնված ձևաչափ է, որը կարող է օգտագործվել JavaScript-ի օբյեկտները, բառացիները, զանգվածները և տվյալները ցուցադրելու համար: Տեքստի վրա հիմնված այս ձևաչափը նախատեսված է պարզ կարդալու և գրելու համար, ինչպես նաև ծրագրային ապահովման միջոցով մարսելի: JSON-ը սովորաբար օգտագործվում է սերվերների և առցանց հավելվածների միջև տվյալների և տեղեկատվության փոխանցման համար:
ՆվագախումբՇատ գործողությունների ավտոմատացման տեխնիկան հայտնի է որպես նվագախմբություն: Այս աշխատանքները ներառում են համակարգչային համակարգի և ծրագրային ապահովման կոնֆիգուրացիա, համակարգում և կառավարում:
ՓոխանորդՎստահված անձը հանդես է գալիս որպես ռեսուրս փնտրող հաճախորդի և այն տրամադրող սերվերի միջև:
ծակԾառայությունների ցանցը ծրագրային ապահովման ճարտարապետության օրինաչափություն է, որը շերտ է ավելացնում ենթակառուցվածքի շերտին՝ թույլ տալու կարգավորվող, դիտելի և անվտանգ հաղորդակցություն ծառայությունների միջև պրոքսիի միջոցով:
Բարձր մակարդակի դիզայն
Մոնոլիտ խնդիրներ
Snapchat-ը առաջացել է որպես ամպի վրա հիմնված մոնոլիտ՝ հիմնված Google App Engine-ի վրա: Այնուամենայնիվ, քանի որ ծրագիրը մեծանում էր հանրաճանաչության և ավելի շատ օգտվողների և տվյալների ձեռքբերման հետ, մասշտաբայնությունը դարձավ խնդիր:
Բացի այդ, մոնոլիտի ներսում պայթյունի հսկայական շառավղով ավելի հնարավոր էին համակարգային անկարգություններ: Snapchat-ի խնդիրներից մեկը սահմանվեց որպես «ընդհանուրների ողբերգություն», որի ժամանակ հատկանիշները մրցում էին ռեսուրսների հասանելիության համար. Գործառույթները բեռնվում էին հավելվածի գործարկման ժամանակ՝ թույլ տալով, որ որոշ գործառույթներ ավելի արագ բեռնվեն, իսկ մյուսները՝ ավելի դանդաղ:
Ինժեներները նաև ձգտում էին իրենց բաղադրիչների հստակ տեսանելիության, տարանջատման և սեփականության իրավունքի զարգացման տեսանկյունից, որպեսզի ծառայությունը լինի ճկուն և արդյունավետ:
Փոխակերպում
Երբ Snapchat-ը ընդլայնվեց, ընկերությունը հասկացավ, որ պետք է իր մոնոլիտ ենթակառուցվածքը բաժանի ավելի փոքր, ավելի արդյունավետ մասերի: Նվազեցված ուշացում ապահովելու համար կազմակերպությունը որոշել է մշակել միկրոծառայությունների վրա հիմնված դիզայն:
Այդ նպատակներն իրականացնելու համար Snapchat-ը նախընտրեց թարմացնել իր ծրագրակազմը՝ օգտագործելով Amazon DynamoDB՝ մասշտաբային NoSQL տվյալների բազայի ծառայությունը: Ընկերությունն իր ջանքերի արդյունքում կարողացավ նվազեցնել միջին հետաձգումը 20%-ով:
Հավելվածը կորպորացիայի կողմից վերաշարադրվել է բազմաթիվ փոքր հավելվածների մեջ: Snapchat-ը սկսեց բազմաթիվ հավելվածներով, այդ թվում՝ տեսախցիկ, չաթ, հիշողություններ, նկարների խմբագրում, բովանդակության սպառում և քարտեզ: Թեև այս ծրագրերը մեկ մոնոլիտի մեջ ինտեգրելը հարմար էր սպառողների համար, այն լուրջ տեխնիկական խնդիր առաջացրեց լավ կատարողականությունը պահպանելու առումով:
Վերաշարադրելու համար կորպորացիան սահմանեց բազմաթիվ հիմնական կանոններ: Մի նախապես բեռնեք; յուրաքանչյուր հատկություն պետք է լինի իր սեփական հավելվածը և այն պետք է լինի արագ: Snapchat-ը դադարեցրեց փոփոխությունները մի քանի վայրերում, որպեսզի հնարավորություն ընձեռվի վերաշարադրելու համար՝ այն դարձնելով խիստ տեխնիկական խնդիր:
Լրացուցիչ հատկանիշների ինտեգրում
Snapchat-ի տեսախցիկի հավելվածը, ի թիվս այլ բաների, ունի ոսպնյակներ, զտիչներ, բիթմոջիներ և հավելյալ իրականության անիմացիաներ ավելացնելու հնարավորություն: Snapchat-ի chat հավելվածը նաև թույլ է տալիս օգտատերերին պահել լուսանկարներ, պահպանել խոսակցությունները, ավելացնել հուզապատկերներ և այլն:
Snapchat-ի քարտեզը, ի թիվս այլ բաների, թույլ է տալիս վերահսկել ընկերներին, եթե նրանք ցանկանում են: Հիշողությունները, լուսանկարների խմբագրումը և բովանդակության սպառումը բոլորն առանձին Snapchat հավելվածներ են՝ իրենց յուրահատուկ հնարավորություններով:
Հիշողությունները թույլ են տալիս պահպանել կամ փոփոխել լուսանկարները կամ տեսանյութերը հետագա օգտագործման համար, ինչպես նաև վերբեռնել կամ ուղարկել դրանք: Օգտատերերը կարող են նաև օգտագործել նկարների խմբագրումը ֆիլմերը կտրելու, տեքստ ավելացնելու, կպչուն պիտակներ ավելացնելու և այլն:
Snapchat-ի արտաքին բովանդակության սպառումը վերաբերում է նրան, թե ինչ է այն ցույց տալիս օգտվողներին՝ հիմնվելով մի շարք պարամետրերի վրա:
Microservices- ը
Ծրագիրը մեծապես կախված էր JSON-ից՝ տվյալ պահին ցանցային հարցումներ կատարելու համար: Այնուամենայնիվ, JSON-ի վերլուծությունը ժամանակատար և անարդյունավետ էր: Snapchat-ն օգտագործել է կենտրոնացված ցանցի կառավարման API՝ այս խնդիրը լուծելու համար JSON-ի օգտագործումը որպես իրականացման մանրամասնություն քողարկելու համար:
Միկրոծառայությունները ներկայացնում են կիրառական վիճակի կառավարման, ծառայությունների հաղորդակցման և ձախողումների կառավարման մարտահրավերները: Snapchat-ն օգտագործել է բաց կոդով տեխնոլոգիաներ, ինչպիսին է Temporal-ը, որպեսզի հաղթահարի նվագախմբային դժվարությունները՝ ուժեղ և հուսալի համակարգ ստեղծելու համար:
Արդյունքում կազմակերպությունը որոշեց օգտագործել սպասարկման ցանցի դիզայնի օրինակը: Այս օրինակին հասնելու համար Snapchat-ն օգտագործեց Envoy-ը՝ մեկ այլ բաց կոդով գործիք, որը հանդես է գալիս որպես վստահված անձի: Էնվոյը կառավարում էր սպասարկման տրաֆիկի հոսքը ենթակառուցվածքի միջոցով՝ ծրագրավորողներին տեսանելի դարձնելով հնարավոր դժվարություններին:
Snapchat-ը ստեղծեց ներքին հավելված, որը կոչվում է «Switchboard» ծառայության ցանցում: Switchboard-ը ծառայում էր որպես Snap-ի ծառայությունների կառավարման վահանակ՝ թույլ տալով օգտվողներին տեղափոխել երթևեկությունը, կառավարել ծառայության կախվածությունը (հատկանիշ, որը թույլ է տալիս կառավարել մեկ ծառայություն՝ կախված մյուսների վիճակից) և ջրահեռացնել շրջանները:
Ծառայությունների ներսում հնարավոր կոնֆիգուրացիաների բարդությունը պարզեցնելու համար Switchboard-ն օգտագործվեց՝ ամբողջ Envoy API-ն բացահայտելու փոխարեն: Snap-ն ունի ընդհանուր ներքին և տարածաշրջանային ցանց իր միկրոծառայությունների համար ծառայության ցանցի շնորհիվ:
Միևնույն տարածաշրջանի ծառայությունները կարող են միանալ միմյանց հետ՝ առանց հանրային ինտերնետից օգտվելու, և ոչ մի արտաքին ցանցային տրաֆիկ չի կարող հաղորդակցվել ցանցի ներքին մասերի հետ:
Անվտանգության նկատառումներից ելնելով, միայն Gateways-ն է իրավասու հայտնվել ինտերնետի առջև: API-ի դարպասները, օրինակ, կարող են հեշտությամբ ծառայել որպես մուտքի դռներ՝ մշակելով հաճախորդների/օգտատերերի հարցումները և ուղղորդելով դրանք ցանցի հետ միասին:
Ցանց և API դարպաս
Snapchat հաճախորդի բոլոր հարցումները կատարվում են API Gateway-ի միջոցով: Այն օգտագործում է նույն Envoy պատկերը և միանում է նույն Control Plane-ին, ինչ մեր ներքին միկրոծառայությունները: Մեր Control Plane-ը մեզ թույլ է տալիս միացնել հատուկ Envoy զտիչներ:
Snapchat-ի նույնականացման համակարգերը, ինչպես նաև մեր տեմպերի սահմանափակման և բեռնաթափման տեխնոլոգիաները կառավարվում են այս զտիչներով: Envoy-ն օգտագործում է Service Mesh-ը՝ ֆիլտրի շղթայի ավարտից հետո հարցումները համապատասխան միկրոսերվիս ուղղորդելու համար:
Եզրափակում
Snapchat-ի API gateway-ն ուղղորդում է արտաքին երթևեկությունը դեպի հավելվածի բազմաթիվ գործառույթներ: Կազմաձևման վիճակները փոփոխելու օգտատերերի հարցումները կառավարվում են սերվերների կողմից, որոնք այնուհետև տրամադրել տվյալներ և տեղեկություններ հավելվածի բազմաթիվ ծառայությունների մասին:
Ընդհանուր առմամբ, Snapchat-ի ներկայիս դիզայնը կարելի է համեմատել մեկ օպերացիոն համակարգի վրա աշխատող մի քանի ծրագրերի հետ, որն այս դեպքում Snapchat հավելվածն է: Ես շատ ջանք գործադրեցի ձեզ տրամադրել Snapchat համակարգի դիզայնի բարձր մակարդակի ակնարկ: Հուսով եմ, որ այն օգտակար եք գտել:
Թողնել գրառում