Snapchat je dobře známý mezi dorostenci a teenagery. Pravděpodobně je vám více než 25 let, pokud nemůžete přijít na to, jak to funguje. Snapchat, jedna z nejpopulárnějších aplikací sociálních médií, poskytuje dětem a dospívajícím přesně to, co chtějí: snadnou metodu, jak sdílet běžné události a zároveň je působit cool.
Na rozdíl od Facebooku a Twitteru, které zaznamenávají a publikují vše, co děláte, Snapchat využívá zprávy, které mají zmizet (podívejte se, jak ne).
O Snapchatu je toho hodně, a pokud jste vývojáři, je to ještě víc. Tento příspěvek vám tedy poskytne pohled na Snapchat na vysoké úrovni návrh systému a mnohem více poznatků.
Úvod
Snapchat má sídlo v USA social networking aplikace, která uživatelům umožňuje okamžitě se připojit, sdílet obrázky a další.
- Zprávy a obrázky (nebo snímky) mají časový limit 24 hodin. Povzbuzuje lidi, aby sdíleli své příběhy ve skupinách.
- Snap Map umožňuje uživatelům vidět na mapě, kde jsou jejich kamarádi.
- Vzpomínky připomínají uživatelům fotografie, které si uložili nebo sdíleli o rok později.
- Snapchat je mimořádně oblíbený u mladších generací, zejména u dospívajících. Aplikace má 319 milionů aktivních uživatelů a každý den se odešle 5.4 miliardy snímků.
Důležité podmínky designu
Monolitická architektura – Jednovrstvá aplikace, která funguje nezávisle na jiných aplikacích, se nazývá monolit (monolitická architektura). Monolit je navržen tak, aby vykonával a zvládal všechny činnosti potřebné k dokončení úkolu. Aplikace provádí všechny funkce od začátku do konce.
Mikroslužby – Je polárním opakem monolitů. Mikroslužby je architektonický přístup, který organizuje aplikaci jako kolekci služeb. Tyto služby se používají k ovládání mnoha aspektů aplikace. Zákazník zadá objednávku, číšník ji převezme a doručí a kuchař ji připraví. V tomto příkladu každá součást funguje nezávisle a odděleně od ostatních; nikdo přesně neví, co dělají ostatní, a nikdo nemá přístup ke stejným informacím.
JSON: Jedná se o textový formát, který lze použít k zobrazení objektů JavaScriptu, literálů, polí a dat. Tento textový formát je zamýšlen tak, aby se dal snadno číst a zapisovat a také aby byl stravitelný pro software. JSON se běžně používá k přenosu dat a informací mezi servery a online aplikacemi.
Orchestrace: Technika automatizace mnoha operací je známá jako orchestrace. Tyto práce zahrnují konfiguraci počítačového systému a softwaru, koordinaci a správu.
Zástupce: Proxy funguje jako prostředník mezi klientem hledajícím zdroj a serverem, který jej poskytuje.
Pletivo: Síť služeb je vzor softwarové architektury, který přidává vrstvu k vrstvě infrastruktury a umožňuje regulovanou, pozorovatelnou a zabezpečenou komunikaci mezi službami prostřednictvím proxy.
Design na vysoké úrovni
Monolitické problémy
Snapchat vznikl jako cloudový monolit založený na Google App Engine. Nicméně, jak program rostl v popularitě a získal více uživatelů a dat, škálovatelnost se stala problémem.
Navíc, s obrovským poloměrem výbuchu uvnitř monolitu, byly poruchy v celém systému více možné. Jeden z problémů Snapchatu byl definován jako „tragédie Commons“, ve které funkce soupeřily o přístup ke zdrojům; funkce se načítaly při spuštění aplikace, což umožnilo, aby se některé funkce načítaly rychleji, ale ostatní se načítaly pomaleji.
Inženýři také usilovali o jasnou viditelnost, oddělení a vlastnictví svých komponent z hlediska vývoje, aby služba mohla být flexibilní a efektivní.
Proměna
Jak se Snapchat rozšiřoval, firma si uvědomila, že potřebuje rozdělit svou monolitickou infrastrukturu na menší, efektivnější části. Za účelem snížení latence se organizace rozhodla vyvinout design založený na mikroslužbách.
Pro splnění těchto cílů se Snapchat rozhodl aktualizovat svůj software pomocí Amazon DynamoDB, škálovatelné databázové služby NoSQL. Firmě se díky jejímu úsilí podařilo snížit střední latenci o 20 %.
Tato aplikace byla společností přepsána do mnoha menších aplikací. Snapchat začal s mnoha aplikacemi, včetně fotoaparátu, chatu, vzpomínek, úprav obrázků, spotřeby obsahu a mapy. Ačkoli integrace těchto programů do jednoho monolitu byla pro spotřebitele pohodlná, představovala vážný technický problém z hlediska zachování dobrého výkonu.
Pro přepsání společnost stanovila mnoho základních pravidel. Nepředbíhat; každá funkce by měla být vlastní aplikací a měla by být rychlá. Snapchat zastavil úpravy na několika místech, aby umožnil přepis, což z něj učinilo čistě technický úkol.
Integrace dalších funkcí
Aplikace fotoaparátu Snapchat má mimo jiné čočky, filtry, bitmoji a možnost přidávat animace rozšířené reality. Chatovací aplikace Snapchat také umožňuje uživatelům ukládat fotografie, ukládat rozhovory, přidávat emotikony a další.
Mapa Snapchatu vám mimo jiné umožňuje sledovat kamarády, pokud chtějí. Vzpomínky, úpravy fotografií a spotřeba obsahu jsou samostatné aplikace Snapchat se svými jedinečnými schopnostmi.
Paměti vám umožňují ukládat nebo upravovat fotografie nebo videa pro pozdější použití a také je nahrávat nebo odesílat. Uživatelé mohou také využít úpravy obrázků pro stříhání filmů, přidávání textu, přidávání nálepek a další.
Spotřeba externího obsahu Snapchatu odkazuje na to, co ukazuje uživatelům na základě řady parametrů.
Mikroslužby
Program v té době do značné míry závisel na JSON při provádění síťových dotazů. Analýza JSON však byla časově náročná a neefektivní. Snapchat použil centralizované rozhraní API pro správu sítě k maskování použití JSON jako detailu implementace k řešení tohoto problému.
Mikroslužby představují výzvy pro správu stavu aplikací, komunikaci služeb a správu poruch. Snapchat použil open-source technologie, jako je Temporal, k překonání potíží s orchestrací, aby vytvořil silný a spolehlivý systém.
V důsledku toho se organizace rozhodla použít návrhový vzor servisní sítě. Snapchat k dosažení tohoto vzoru použil Envoy, další open-source nástroj, který funguje jako proxy. Envoy řídil tok servisního provozu přes infrastrukturu, což vývojářům poskytlo přehled o možných potížích.
Snapchat vytvořil interní aplikaci s názvem Switchboard v rámci servisní sítě. Ústředna sloužila jako ovládací panel pro služby Snapu a umožňovala uživatelům přesouvat provoz, spravovat závislosti služeb (funkce, která umožňuje spravovat jednu službu v závislosti na stavu ostatních) a odvodňovat regiony.
Pro zjednodušení složitosti potenciálních konfigurací v rámci služeb byl místo odhalení celého Envoy API použit Switchboard. Snap má společnou interní a regionální síť pro své mikroslužby díky servisní síti.
Služby ve stejné oblasti se mohly vzájemně propojovat bez použití veřejného internetu a žádný externí síťový provoz nemohl komunikovat s vnitřními částmi sítě.
Pouze brány by byly oprávněny vystavovat se internetu z bezpečnostních důvodů. Brány API mohou například snadno sloužit jako vstupní dveře, zpracovávat požadavky klientů/uživatelů a směrovat je spolu se sítí.
Síť a brána API
Všechny dotazy z klienta Snapchat přicházejí přes API Gateway. Používá stejný obraz Envoy a připojuje se ke stejné řídicí rovině jako naše interní mikroslužby. Naše řídicí rovina nám umožňuje povolit vlastní filtry Envoy.
Ověřovací systémy Snapchat, stejně jako naše technologie omezování rychlosti a snižování zátěže, jsou spravovány těmito filtry. Envoy používá Service Mesh ke směrování požadavků na příslušnou mikroslužbu po dokončení řetězce filtrů.
Proč investovat do čističky vzduchu?
Snapchatova API brána směruje externí provoz do mnoha funkcí aplikace. Požadavky uživatelů na úpravu stavů konfigurace jsou spravovány servery, které pak poskytnout data a informace zpět k četným službám aplikace.
Celkově lze současný design Snapchatu přirovnat k několika programům běžícím na jednom operačním systému, kterým je v tomto případě aplikace Snapchat. Velmi jsem se snažil poskytnout vám přehled o návrhu systému Snapchat na vysoké úrovni. Doufám, že vám to bylo užitečné.
Napsat komentář