„Snapchat“ yra gerai žinomas tarp jaunuolių ir paauglių. Jums tikriausiai daugiau nei 25, jei negalite suprasti, kaip tai veikia. „Snapchat“, viena iš populiariausių socialinės žiniasklaidos programų, vaikams ir paaugliams suteikia būtent tai, ko jie nori: paprastą būdą dalytis įprastais įvykiais, o kartu atrodyti šauniai.
Skirtingai nuo „Facebook“ ir „Twitter“, kurie įrašo ir skelbia viską, ką darote, „Snapchat“ naudoja pranešimus, kurie turėtų išnykti (pažiūrėkite, kaip jie nedingsta).
Yra daug apie „Snapchat“, o jei esate kūrėjas, tai dar daugiau. Taigi, šis įrašas suteiks jums aukšto lygio „Snapchat“ vaizdą sistemos projektavimas ir daug daugiau įžvalgų.
Įvadas
„Snapchat“ yra JAV socialinių tinklų programa, leidžianti vartotojams nedelsiant prisijungti, dalytis vaizdais ir daugiau.
- Pranešimams ir vaizdams (arba momentiniams vaizdo įrašams) taikomas 24 valandų laiko limitas. Skatina žmones dalintis savo istorijomis grupėse.
- Snap Map leidžia vartotojams žemėlapyje matyti, kur yra jų draugai.
- Prisiminimai primena vartotojams apie nuotraukas, kurias jie išsaugojo arba pasidalino po metų.
- „Snapchat“ itin populiarus tarp jaunesnių kartų, ypač paauglių. Programoje yra 319 milijonų aktyvių vartotojų, o kasdien išsiunčiama 5.4 milijardo momentinių nuotraukų.
Svarbios dizaino sąlygos
Monolitinė architektūra – Vienos pakopos programa, kuri veikia nepriklausomai nuo kitų programų, vadinama monolitine (monolitine architektūra). Monolitas skirtas atlikti ir valdyti visas veiklas, reikalingas užduočiai atlikti. Programa atlieka visas funkcijas nuo pradžios iki pabaigos.
Microservices – Tai poliarinė priešingybė monolitams. Microservices yra architektūrinis požiūris, kuris organizuoja programą kaip paslaugų rinkinį. Šios paslaugos naudojamos daugeliui programos aspektų valdyti. Klientas pateikia užsakymą, padavėjas paima ir pristato, o virėjas paruošia. Šiame pavyzdyje kiekvienas komponentas veikia nepriklausomai ir atskirai nuo kitų; niekas tiksliai nežino, ką veikia kiti, ir niekas neturi prieigos prie tos pačios informacijos.
JSON: Tai teksto formatas, kurį galima naudoti „JavaScript“ objektams, literalams, masyvams ir duomenims rodyti. Šis tekstas pagrįstas formatas yra skirtas taip, kad jį būtų lengva skaityti ir rašyti, taip pat jį būtų galima suprasti programine įranga. JSON dažniausiai naudojamas duomenims ir informacijai perduoti tarp serverių ir internetinių programų.
Orkestravimas: Daugelio operacijų automatizavimo technika žinoma kaip orkestravimas. Šie darbai apima kompiuterių sistemų ir programinės įrangos konfigūravimą, koordinavimą ir administravimą.
Įgaliojimas: tarpinis serveris veikia kaip tarpininkas tarp kliento, ieškančio šaltinio, ir jį teikiančio serverio.
Tinklelis: Paslaugų tinklelis yra programinės įrangos architektūros modelis, kuris prideda sluoksnį prie infrastruktūros sluoksnio, kad būtų galima reguliuojamą, stebimą ir saugų ryšį tarp paslaugų per tarpinį serverį.
Aukšto lygio dizainas
Monolitinės problemos
„Snapchat“ atsirado kaip debesies pagrindu sukurtas monolitas, pagrįstas „Google App Engine“. Tačiau programos populiarumui augant ir sulaukus daugiau vartotojų bei duomenų, mastelio keitimas tapo problema.
Be to, esant didžiuliam sprogimo spinduliui monolite, visos sistemos trikdžiai buvo labiau įmanomi. Viena iš „Snapchat“ problemų buvo apibrėžta kaip „bendrųjų daiktų tragedija“, kurioje funkcijos varžėsi dėl prieigos prie išteklių; funkcijos buvo įkeliamos programos paleidimo metu, todėl kai kurios funkcijos buvo įkeliamos greičiau, o kitos lėčiau.
Inžinieriai taip pat siekė aiškaus jų komponentų matomumo, atskyrimo ir nuosavybės teisės plėtros požiūriu, kad paslauga būtų lanksti ir efektyvi.
Transformacija
„Snapchat“ plečiasi, įmonė suprato, kad reikia suskaidyti savo monolitinę infrastruktūrą į mažesnes, efektyvesnes dalis. Siekdama sumažinti delsą, organizacija nusprendė sukurti mikropaslaugomis pagrįstą dizainą.
Siekdama šių tikslų, „Snapchat“ pasirinko atnaujinti savo programinę įrangą naudodama „Amazon DynamoDB“, keičiamo dydžio „NoSQL“ duomenų bazės paslaugą. Dėl savo pastangų įmonė sugebėjo 20% sumažinti vidutinį delsą.
Programą korporacija perrašė į daugybę mažesnių programų. „Snapchat“ prasidėjo nuo daugybės programų, įskaitant fotoaparatą, pokalbius, prisiminimus, nuotraukų redagavimą, turinio vartojimą ir žemėlapį. Nors vartotojams buvo patogu integruoti šias programas į vieną monolitą, tai iškėlė rimtų techninių problemų, susijusių su gero našumo išlaikymu.
Perrašymui korporacija nustatė daug pagrindinių taisyklių. Neįkelti iš anksto; kiekviena funkcija turėtų būti atskira programa ir ji turėtų būti greita. „Snapchat“ keliose vietose sustabdė pakeitimus, kad būtų galima perrašyti, todėl tai buvo griežtai techninė užduotis.
Papildomų funkcijų integravimas
„Snapchat“ fotoaparato programėlėje, be kita ko, yra objektyvai, filtrai, bitmojis ir galimybė pridėti papildytos realybės animaciją. „Snapchat“ pokalbių programėlė taip pat leidžia vartotojams saugoti nuotraukas, išsaugoti pokalbius, pridėti jaustukų ir kt.
„Snapchat“ žemėlapis, be kita ko, leidžia stebėti draugus, jei jie to nori. Prisiminimai, nuotraukų redagavimas ir turinio naudojimas yra atskiros „Snapchat“ programos su savo unikaliomis galimybėmis.
Prisiminimai leidžia išsaugoti arba modifikuoti nuotraukas ar vaizdo įrašus, kad galėtumėte juos naudoti vėliau, taip pat juos įkelti ar siųsti. Vartotojai taip pat gali naudoti paveikslėlių redagavimą, norėdami iškirpti filmus, pridėti teksto, pridėti lipdukų ir dar daugiau.
Išorinis „Snapchat“ turinio suvartojimas reiškia, ką jis rodo vartotojams pagal įvairius parametrus.
Microservices
Tuo metu programa labai priklausė nuo JSON, kad galėtų atlikti tinklo užklausas. Tačiau JSON analizavimas užtruko ir neefektyvus. „Snapchat“ naudojo centralizuotą tinklo valdymo API, kad užmaskuotų JSON naudojimą kaip diegimo detalę šiai problemai spręsti.
Mikropaslaugos pristato programos būsenos valdymo, paslaugų komunikacijos ir gedimų valdymo iššūkius. Snapchat naudojo atvirojo kodo technologijas, tokias kaip Temporal, kad įveiktų orkestravimo sunkumus, kad sukurtų stiprią ir patikimą sistemą.
Dėl to organizacija nusprendė naudoti paslaugų tinklelio dizaino modelį. „Snapchat“ naudojo „Envoy“ – kitą atvirojo kodo įrankį, kuris veikia kaip tarpinis serveris, kad pasiektų šį modelį. „Envoy“ valdė paslaugų srautą per infrastruktūrą, suteikdamas kūrėjams matomumą apie galimus sunkumus.
„Snapchat“ paslaugų tinkle sukūrė vidinę programą, pavadintą „Switchboard“. Komutatorius tarnavo kaip „Snap“ paslaugų valdymo pultas, leidžiantis vartotojams perkelti srautą, valdyti paslaugų priklausomybes (funkcija, leidžianti valdyti vieną paslaugą priklausomai nuo kitų būklės) ir nutekėti regionus.
Siekiant supaprastinti galimų paslaugų konfigūracijų sudėtingumą, buvo panaudota Switchboard, o ne atskleista visa Envoy API. Dėl paslaugų tinklo „Snap“ turi bendrą vidinį ir regioninį mikropaslaugų tinklą.
Tame pačiame regione esančios paslaugos galėtų prisijungti viena su kita nenaudodamos viešojo interneto, o joks išorinis tinklo srautas negalėtų susisiekti su vidinėmis tinklo dalimis.
Tik „Gateways“ būtų įgaliotas prisijungti prie interneto saugumo sumetimais. Pavyzdžiui, API šliuzai gali būti lengvai naudojami kaip priekinės durys, apdorojančios klientų / vartotojų užklausas ir nukreipiančios juos kartu su tinklu.
Tinklo ir API šliuzas
Visos užklausos iš „Snapchat“ kliento gaunamos per API šliuzą. Jis naudoja tą patį „Envoy“ vaizdą ir jungiasi prie tos pačios valdymo plokštumos kaip ir mūsų vidinės mikro paslaugos. Mūsų valdymo plokštuma leidžia mums įjungti pasirinktinius Envoy filtrus.
Šie filtrai tvarko „Snapchat“ autentifikavimo sistemas, taip pat mūsų greičio ribojimo ir apkrovos mažinimo technologijas. Pasiuntinys naudoja „Service Mesh“, kad nukreiptų užklausas į atitinkamą mikroservisą, kai filtravimo grandinė baigta.
Išvada
„Snapchat“ API šliuzas nukreipia išorinį srautą į daugelį programos funkcijų. Vartotojų užklausas keisti konfigūracijos būsenas valdo serveriai, kurie tada pateikti duomenis ir informacija atgal į daugybę programos paslaugų.
Apskritai dabartinį „Snapchat“ dizainą galima palyginti su keliomis programomis, veikiančiomis vienoje operacinėje sistemoje, kuri šiuo atveju yra „Snapchat“ programa. Labai stengiausi pateikti jums aukšto lygio „Snapchat“ sistemos dizaino apžvalgą. Tikiuosi, kad tai buvo naudinga.
Palikti atsakymą