Snapchat este binecunoscut printre adolescenți și adolescenți. Probabil că ai peste 25 de ani dacă nu-ți dai seama cum funcționează. Snapchat, una dintre cele mai populare aplicații de socializare, oferă copiilor și adolescenților exact ceea ce își doresc: o metodă ușoară de a împărtăși întâmplări obișnuite, făcându-le, de asemenea, să pară cool.
Spre deosebire de Facebook și Twitter, care înregistrează și publică tot ceea ce faci, Snapchat folosește mesaje care ar trebui să dispară (vedeți cum nu).
Există multe despre Snapchat, iar dacă ești dezvoltator, este chiar mai mult. Deci, această postare vă va oferi o vedere la nivel înalt a Snapchat proiectarea sistemului și mult mai multe perspective.
Introducere
Snapchat are sediul în SUA reţele sociale aplicație care permite utilizatorilor să se conecteze imediat, să partajeze imagini și multe altele.
- Mesajele și imaginile (sau instantaneele) au o limită de timp de 24 de ore. Încurajează oamenii să-și împărtășească poveștile în grupuri.
- Snap Map permite utilizatorilor să vadă pe o hartă unde se află prietenii lor.
- Amintirile le reamintesc utilizatorilor fotografiile salvate sau distribuite un an mai târziu.
- Snapchat este extrem de popular în rândul generațiilor mai tinere, în special al adolescenților. Există 319 milioane de utilizatori activi în aplicație și 5.4 miliarde de instantanee sunt trimise în fiecare zi.
Termeni importanți de design
Arhitectură monolitică – O aplicație cu un singur nivel care funcționează independent de alte aplicații este cunoscută ca monolit (arhitectură monolitică). Un monolit este conceput pentru a efectua și gestiona toate activitățile necesare pentru a finaliza o sarcină. Aplicația îndeplinește toate funcțiile de la început până la sfârșit.
Servicii micro – Este polar opus monoliților. Servicii micro este o abordare arhitecturală care organizează o aplicație ca o colecție de servicii. Aceste servicii sunt folosite pentru a controla multe aspecte ale unei aplicații. Un client plasează o comandă, un chelner o ia și o livrează, iar un bucătar o pregătește. În acest exemplu, fiecare componentă funcționează independent și separat de celelalte; nimeni nu știe exact ce fac ceilalți și nimeni nu are acces la aceleași informații.
JSON: este un format bazat pe text care poate fi folosit pentru a afișa obiecte JavaScript, literale, matrice și date. Acest format bazat pe text este conceput să fie simplu de citit și scris, precum și să fie digerabil de software. JSON este folosit în mod obișnuit pentru a transfera date și informații între servere și aplicații online.
Orchestrarea: Tehnica de automatizare a multor operațiuni este cunoscută sub numele de orchestrare. Aceste locuri de muncă includ configurarea, coordonarea și administrarea sistemelor informatice și a software-ului.
Împuternicire: Un proxy acționează ca un intermediar între un client care caută o resursă și serverul care o furnizează.
Plasă: O rețea de servicii este un model de arhitectură software care adaugă un strat unui strat de infrastructură pentru a permite o comunicare reglementată, observabilă și sigură între servicii prin proxy.
Design la nivel înalt
Probleme monolitice
Snapchat a apărut ca un monolit bazat pe cloud, bazat pe Google App Engine. Cu toate acestea, pe măsură ce programul a crescut în popularitate și a câștigat mai mulți utilizatori și date, scalabilitatea a devenit o problemă.
În plus, cu o rază uriașă de explozie în interiorul monolitului, au fost mai posibile perturbări la nivelul întregului sistem. Una dintre problemele Snapchat a fost definită ca o „tragedie a comunului”, în care funcțiile concurau pentru accesul la resurse; caracteristicile se încărcau la momentul lansării aplicației, permițând anumitor funcții să se încarce mai repede, dar celorlalte să se încarce mai lent.
Inginerii au căutat, de asemenea, vizibilitate clară, separare și proprietate asupra componentelor lor din punct de vedere al dezvoltării, astfel încât serviciul să fie flexibil și eficient.
Transformare
Pe măsură ce Snapchat s-a extins, firma și-a dat seama că trebuie să-și descompună infrastructura monolitică în bucăți mai mici și mai eficiente. Pentru a oferi o latență redusă, organizația a decis să dezvolte un design bazat pe microservicii.
Pentru a îndeplini aceste obiective, Snapchat a optat să-și actualizeze software-ul folosind Amazon DynamoDB, un serviciu de baze de date NoSQL scalabil. Firma a reușit să reducă latența medie cu 20% ca urmare a eforturilor sale.
Aplicația a fost rescrisă în numeroase aplicații mai mici de către corporație. Snapchat a început cu numeroase aplicații, inclusiv o cameră, chat, amintiri, editare de imagini, consum de conținut și o hartă. Deși integrarea acestor programe într-un singur monolit a fost convenabilă pentru consumatori, a reprezentat o problemă tehnică gravă în ceea ce privește menținerea performanței bune.
Pentru o rescriere, corporația a stabilit multe reguli de bază. Nu preîncărcați; fiecare caracteristică ar trebui să fie propria sa aplicație și ar trebui să fie rapidă. Snapchat a oprit modificările în mai multe locuri pentru a permite rescrierea, făcând-o strict o sarcină tehnică.
Integrare de caracteristici suplimentare
Aplicația de cameră a Snapchat are lentile, filtre, bitmoji și capacitatea de a adăuga animații de realitate augmentată, printre altele. Aplicația de chat Snapchat le permite utilizatorilor să stocheze fotografii, să salveze discuții, să adauge emoticoane și multe altele.
Harta Snapchat, printre altele, vă permite să monitorizați prietenii dacă doresc. Amintirile, editarea fotografiilor și consumul de conținut sunt toate aplicații Snapchat separate, cu capabilitățile lor unice.
Amintirile vă permit să stocați sau să modificați fotografii sau videoclipuri pentru utilizare ulterioară, precum și să le încărcați sau să le trimiteți. Utilizatorii pot utiliza, de asemenea, editarea imaginilor pentru a tăia filme, adăuga text, adăuga autocolante și multe altele.
Consumul de conținut extern al Snapchat se referă la ceea ce arată utilizatorilor pe baza unei game de parametri.
Servicii micro
Programul depindea în mare măsură de JSON pentru a efectua interogări de rețea la momentul respectiv. Cu toate acestea, analizarea JSON a fost consumatoare de timp și ineficientă. Snapchat a folosit un API centralizat de gestionare a rețelei pentru a masca utilizarea JSON ca detaliu de implementare pentru a rezolva această problemă.
Microserviciile introduc provocările legate de gestionarea stării aplicației, comunicarea serviciului și managementul erorilor. Snapchat a folosit tehnologii open-source precum Temporal pentru a depăși dificultățile de orchestrare pentru a construi un sistem puternic și de încredere.
Ca urmare, organizația a decis să utilizeze un model de design de plasă de serviciu. Snapchat a folosit Envoy, un alt instrument open-source care acționează ca un proxy, pentru a realiza acest model. Envoy a gestionat fluxul de trafic de servicii prin infrastructură, oferind dezvoltatorilor vizibilitate asupra potențialelor dificultăți.
Snapchat a creat o aplicație internă numită Switchboard în cadrul rețelei de servicii. Switchboard a servit drept panou de control pentru serviciile Snap, permițând utilizatorilor să schimbe traficul, să gestioneze dependențele de servicii (o caracteristică care permite ca un serviciu să fie gestionat în funcție de starea altora) și să scurgă regiunile.
Pentru a simplifica complexitatea configurațiilor potențiale în cadrul serviciilor, a fost utilizat Switchboard în loc să expună întregul API Envoy. Snap are o rețea comună internă și regională pentru microserviciile sale datorită rețelei de servicii.
Serviciile din interiorul aceleiași regiuni s-ar putea conecta între ele fără a utiliza internetul public și niciun trafic de rețea extern nu ar putea comunica cu părțile rețelei interne.
Numai Gateway-urile ar fi autorizate să se expună la internet din motive de securitate. Gateway-urile API, de exemplu, ar putea servi cu ușurință drept uși de intrare, procesând cererile de la clienți/utilizatori și direcționându-le împreună cu rețeaua.
Gateway de rețea și API
Toate interogările de la clientul Snapchat vin prin API Gateway. Folosește aceeași imagine Envoy și se conectează la același plan de control ca și microserviciile noastre interne. Planul nostru de control ne permite să activăm filtre personalizate Envoy.
Sistemele de autentificare Snapchat, precum și tehnologiile noastre de limitare a ratei și de reducere a sarcinii, sunt gestionate de aceste filtre. Envoy folosește Service Mesh pentru a direcționa cererile către microserviciul relevant după ce lanțul de filtrare este finalizat.
Concluzie
Gateway-ul API al Snapchat direcționează traficul extern către numeroasele funcționalități ale aplicației. Solicitările utilizatorilor de modificare a stărilor de configurare sunt gestionate de servere, care apoi furniza date și informații înapoi la numeroasele servicii ale aplicației.
În general, designul actual al Snapchat poate fi comparat cu mai multe programe care rulează pe un singur sistem de operare, care în acest caz este aplicația Snapchat. Am încercat foarte mult să vă ofer o imagine de ansamblu la nivel înalt asupra designului sistemului Snapchat. Sper că l-ai găsit util.
Lasă un comentariu