Snapchat je dobre známy medzi tínedžermi a tínedžermi. Pravdepodobne máte viac ako 25 rokov, ak neviete, ako to funguje. Snapchat, jedna z najpopulárnejších aplikácií sociálnych médií, poskytuje deťom a dospievajúcim presne to, čo chcú: jednoduchý spôsob zdieľania bežných udalostí a zároveň ich robí cool.
Na rozdiel od Facebooku a Twitteru, ktoré zaznamenávajú a zverejňujú všetko, čo robíte, Snapchat využíva správy, ktoré by mali zmiznúť (pozrite sa, ako nezmiznú).
O Snapchate je toho veľa a ak ste vývojár, je to ešte viac. Tento príspevok vám teda poskytne pohľad na Snapchat na vysokej úrovni návrh systému a oveľa viac poznatkov.
úvod
Snapchat má sídlo v USA sociálne siete aplikácia, ktorá umožňuje používateľom okamžite sa pripojiť, zdieľať obrázky a ďalšie.
- Správy a obrázky (alebo snímky) majú 24-hodinový časový limit. Povzbudzuje ľudí, aby zdieľali svoje príbehy v skupinách.
- Snap Map umožňuje používateľom vidieť na mape, kde sú ich kamaráti.
- Spomienky pripomínajú používateľom fotografie, ktoré si uložili alebo zdieľali o rok neskôr.
- Snapchat je mimoriadne obľúbený u mladších generácií, najmä u tínedžerov. Aplikácia má 319 miliónov aktívnych používateľov a každý deň sa odošle 5.4 miliardy snímok.
Dôležité podmienky dizajnu
Monolitická architektúra – Jednovrstvová aplikácia, ktorá funguje nezávisle od iných aplikácií, je známa ako monolit (monolitická architektúra). Monolit je navrhnutý tak, aby vykonával a zvládal všetky činnosti potrebné na dokončenie úlohy. Aplikácia vykonáva všetky funkcie od začiatku do konca.
Microservices – Je to protipól monolitov. Microservices je architektonický prístup, ktorý organizuje aplikáciu ako kolekciu služieb. Tieto služby sa používajú na ovládanie mnohých aspektov aplikácie. Zákazník zadá objednávku, čašník ju prevezme a doručí a šéfkuchár ju pripraví. V tomto príklade každý komponent funguje nezávisle a oddelene od ostatných; nikto presne nevie, čo robia ostatní, a nikto nemá prístup k rovnakým informáciám.
JSON: Ide o textový formát, ktorý možno použiť na zobrazenie objektov JavaScript, literálov, polí a údajov. Tento textový formát má byť jednoduchý na čítanie a písanie, ako aj na stráviteľnosť softvérom. JSON sa bežne používa na prenos údajov a informácií medzi servermi a online aplikáciami.
Orchestration: Technika automatizácie mnohých operácií je známa ako orchestrácia. Tieto úlohy zahŕňajú konfiguráciu počítačového systému a softvéru, koordináciu a správu.
Zástupca: Proxy funguje ako prostredník medzi klientom, ktorý hľadá zdroj, a serverom, ktorý ho poskytuje.
Ok: Sieť služieb je vzor softvérovej architektúry, ktorý pridáva vrstvu k vrstve infraštruktúry, aby umožnil regulovanú, pozorovateľnú a zabezpečenú komunikáciu medzi službami prostredníctvom proxy.
Dizajn na vysokej úrovni
Monolitické problémy
Snapchat vznikol ako cloudový monolit založený na Google App Engine. S rastúcou popularitou programu a získavaním ďalších používateľov a údajov sa však škálovateľnosť stala problémom.
Navyše, s obrovským polomerom výbuchu v rámci monolitu boli možné poruchy v celom systéme. Jeden z problémov Snapchatu bol definovaný ako „tragédia spoločného majetku“, v ktorej funkcie súťažili o prístup k zdrojom; funkcie sa načítavali v čase spustenia aplikácie, čo umožnilo, aby sa niektoré funkcie načítali rýchlejšie, ale ostatné sa načítali pomalšie.
Inžinieri sa tiež snažili o jasnú viditeľnosť, oddelenie a vlastníctvo svojich komponentov z hľadiska vývoja, aby služba mohla byť flexibilná a efektívna.
Premena
Ako sa Snapchat rozširoval, firma si uvedomila, že potrebuje rozdeliť svoju monolitickú infraštruktúru na menšie, efektívnejšie kúsky. S cieľom zabezpečiť zníženú latenciu sa organizácia rozhodla vyvinúť dizajn založený na mikroslužbách.
Na splnenie týchto cieľov sa Snapchat rozhodol aktualizovať svoj softvér pomocou Amazon DynamoDB, škálovateľnej databázovej služby NoSQL. Spoločnosť bola schopná znížiť strednú latenciu o 20% ako výsledok svojho úsilia.
Aplikáciu spoločnosť prepísala do mnohých menších aplikácií. Snapchat začal s mnohými aplikáciami vrátane fotoaparátu, chatu, spomienok, úpravy obrázkov, spotreby obsahu a mapy. Hoci integrácia týchto programov do jedného monolitu bola pre spotrebiteľov pohodlná, predstavovala vážny technický problém z hľadiska zachovania dobrého výkonu.
Na prepísanie spoločnosť stanovila mnoho základných pravidiel. Nepredpínajte; každá funkcia by mala byť vlastnou aplikáciou a mala by byť rýchla. Snapchat zastavil úpravy na niekoľkých miestach, aby umožnil prepísanie, čím sa z neho stala výlučne technická úloha.
Integrácia ďalších funkcií
Aplikácia fotoaparátu Snapchat má okrem iného šošovky, filtre, bitmoji a možnosť pridávať animácie rozšírenej reality. Chatovacia aplikácia Snapchat tiež umožňuje používateľom ukladať fotografie, ukladať rozhovory, pridávať emotikony a ďalšie.
Mapa Snapchat vám okrem iného umožňuje sledovať kamarátov, ak to chcú. Spomienky, úprava fotografií a spotreba obsahu sú samostatné aplikácie Snapchat s ich jedinečnými schopnosťami.
Spomienky vám umožňujú ukladať alebo upravovať fotografie alebo videá na neskoršie použitie, ako aj nahrávať alebo odosielať. Používatelia môžu tiež využiť úpravu obrázkov na strihanie filmov, pridávanie textu, pridávanie nálepiek a podobne.
Spotreba externého obsahu Snapchatu sa týka toho, čo ukazuje používateľom na základe rôznych parametrov.
Microservices
Program v tom čase vo veľkej miere závisel od JSON pri vykonávaní sieťových dotazov. Analýza JSON však bola časovo náročná a neefektívna. Snapchat použil centralizované rozhranie API na správu siete na maskovanie použitia JSON ako detailu implementácie na riešenie tohto problému.
Mikroslužby predstavujú výzvy riadenia stavu aplikácií, servisnej komunikácie a správy porúch. Snapchat použil open source technológie ako Temporal na prekonanie ťažkostí s orchestráciou s cieľom vybudovať silný a spoľahlivý systém.
V dôsledku toho sa organizácia rozhodla použiť návrhový vzor servisnej siete. Snapchat na dosiahnutie tohto vzoru použil Envoy, ďalší open-source nástroj, ktorý funguje ako proxy. Envoy riadil tok prevádzky služieb cez infraštruktúru, čo vývojárom umožnilo vidieť potenciálne problémy.
Snapchat vytvoril internú aplikáciu s názvom Switchboard v rámci servisnej siete. Ústredňa slúžila ako ovládací panel pre služby Snapu, čo používateľom umožňovalo presúvať prevádzku, spravovať závislosti služieb (funkcia, ktorá umožňuje spravovať jednu službu v závislosti od stavu ostatných) a odčerpávať regióny.
Na zjednodušenie zložitosti potenciálnych konfigurácií v rámci služieb sa namiesto odhalenia celého Envoy API použil Switchboard. Snap má vďaka servisnej sieti spoločnú internú a regionálnu sieť pre svoje mikroslužby.
Služby v tej istej oblasti sa mohli navzájom prepojiť bez použitia verejného internetu a žiadna externá sieťová prevádzka nemohla komunikovať s internými časťami siete.
Iba brány by boli oprávnené vystavovať sa internetu z bezpečnostných dôvodov. Napríklad brány API môžu jednoducho slúžiť ako predné dvere, spracovávať požiadavky klientov/používateľov a smerovať ich spolu so sieťou.
Sieť a brána API
Všetky dotazy z klienta Snapchat prichádzajú cez API Gateway. Používa rovnaký obraz Envoy a pripája sa k rovnakej riadiacej rovine ako naše interné mikroslužby. Naša kontrolná rovina nám umožňuje povoliť vlastné filtre Envoy.
Autentizačné systémy Snapchat, ako aj naše technológie na obmedzenie rýchlosti a zníženie záťaže, sú spravované týmito filtrami. Envoy používa Service Mesh na smerovanie požiadaviek do príslušnej mikroslužby po dokončení reťazca filtrov.
záver
Brána API Snapchat smeruje externú prevádzku k mnohým funkciám aplikácie. Požiadavky používateľov na úpravu stavov konfigurácie sú riadené servermi, ktoré potom poskytnúť údaje a informácie späť k početným službám aplikácie.
Celkovo možno súčasný dizajn Snapchatu prirovnať k niekoľkým programom bežiacim na jednom operačnom systéme, ktorým je v tomto prípade aplikácia Snapchat. Veľmi som sa snažil poskytnúť vám prehľad o dizajne systému Snapchat na vysokej úrovni. Dúfam, že to bolo pre vás užitočné.
Nechaj odpoveď