Snapchat ass bekannt ënner Tweens an Teenager. Dir sidd wahrscheinlech iwwer 25 wann Dir net erausfanne kënnt wéi et funktionnéiert. Snapchat, eng vun de populäersten sozialen Medienapplikatiounen, bitt Kanner a Jugendlecher genau dat wat se wëllen: eng einfach Method fir gewéinlech Optriede ze deelen an och cool ze maachen.
Am Géigesaz zu Facebook an Twitter, déi alles ophuelen a publizéieren wat Dir maacht, benotzt Snapchat Messagen déi solle verschwannen (kuckt wéi se net maachen).
Et gëtt vill iwwer Snapchat, a wann Dir en Entwéckler sidd ass et nach méi. Also, dëse Post gëtt Iech en héijen Niveau vu Snapchat System Design a vill méi Abléck.
Aféierung
Snapchat ass en US-baséiert sozialen Netzwierker App déi d'Benotzer erlaabt direkt ze verbannen, Biller ze deelen, a méi.
- Messagen a Biller (oder Schnappschëss) hunn eng 24-Stonn Zäitlimit. Encouragéiert d'Leit hir Geschichten a Gruppen ze deelen.
- Snap Map erlaabt d'Benotzer op enger Kaart ze gesinn wou hir Frënn sinn.
- Erënnerungen erënneren d'Benotzer u Fotoen déi se e Joer méi spéit gespäichert oder gedeelt hunn.
- Snapchat ass extrem populär bei jonke Generatiounen, besonnesch Teenager. Et gi 319 Milliounen aktive Benotzer op der App, a 5.4 Milliarden Schnapps ginn all Dag geschéckt.
Wichteg Design Konditioune
Monolithesch Architektur - Eng eenzeg-tiered Applikatioun déi onofhängeg vun aneren Uwendungen operéiert ass bekannt als Monolith (monolithesch Architektur). E Monolith ass entwéckelt fir all Aktivitéiten auszeféieren an ze handhaben déi néideg sinn fir eng Aufgab ze kompletéieren. D'Applikatioun mécht all Funktiounen vun Ufank bis Enn.
Microservices - Et polare Géigendeel vun monoliths. Microservices ass eng architektonesch Approche déi eng Applikatioun als eng Sammlung vu Servicer organiséiert. Dës Servicer gi benotzt fir vill Aspekter vun enger Applikatioun ze kontrolléieren. E Client mécht eng Bestellung, e Kelner hëlt et a liwwert et, an e Kach preparéiert et. An dësem Beispill funktionéiert all Komponent onofhängeg an getrennt vun deenen aneren; keen weess genee wat déi aner maachen, a keen huet Zougang zu déiselwecht Informatioun.
Language: Et ass en Text-baséiert Format dat benotzt ka ginn fir JavaScript Objekter, Literatur, Arrays an Daten ze weisen. Dëst textbaséiert Format ass geduecht fir einfach ze liesen a schreiwen, souwéi verdaubar vu Software. JSON gëtt allgemeng benotzt fir Daten an Informatioun tëscht Serveren an Online Uwendungen ze transferéieren.
Orchestratioun: D'Technik fir vill Operatiounen ze automatiséieren ass bekannt als Orchestratioun. Dës Aarbechtsplazen enthalen Computersystem a Software Konfiguratioun, Koordinatioun an Administratioun.
Proxy: E Proxy handelt als Go-Tëscht tëscht engem Client deen no enger Ressource sicht an dem Server deen et ubitt.
Mesh gemaach: E Service Mesh ass e Softwarearchitekturmuster deen eng Schicht un eng Infrastrukturschicht bäidréit fir reglementéiert, beobachtbar a sécher Kommunikatioun tëscht Servicer duerch Proxy z'erméiglechen.
Héich-Niveau Design
Monolithesch Problemer
Snapchat entstanen als Cloud-baséiert Monolith baséiert op der Google App Engine. Wéi och ëmmer, wéi de Programm a Popularitéit gewuess ass a méi Benotzer an Daten gewonnen huet, ass Skalierbarkeet en Thema ginn.
Zousätzlech, mat engem risege Explosiounsradius am Monolith, ware systembreet Stéierunge méi méiglech. Ee vun de Problemer vun Snapchat war definéiert als "Tragedie vun de Commons", an deem Fonctiounen fir Zougang zu Ressourcen konkurréiert; Fonctiounen goufen beim App-Startzäit gelueden, wat erlaabt datt verschidde Funktiounen méi séier lueden, awer déi aner méi lues lueden.
D'Ingenieure gesicht och kloer Visibilitéit, Trennung a Besëtz vun hire Komponenten aus engem Entwécklungssiicht, sou datt de Service flexibel an effizient ka sinn.
Transformatioun
Wéi Snapchat erweidert huet, huet d'Firma gemierkt datt et seng monolithesch Infrastruktur a méi kleng, méi effizient Stécker muss opbriechen. Fir eng reduzéiert Latenz ze bidden, huet d'Organisatioun decidéiert e Mikroservicer-baséiert Design z'entwéckelen.
Fir dës Ziler z'erfëllen, huet Snapchat gewielt seng Software ze aktualiséieren mat Amazon DynamoDB, e skalierbare NoSQL Datebank Service. D'Firma konnt d'Medianlatenz ëm 20% reduzéieren als Resultat vun hiren Efforten.
D'App gouf vun der Corporation a vill méi kleng Uwendungen ëmgeschriwwen. Snapchat huet ugefaang mat villen Uwendungen, dorënner eng Kamera, Chat, Erënnerungen, Bildbeaarbechtung, Inhaltsverbrauch an eng Kaart. Och wann d'Integratioun vun dëse Programmer an engem eenzege Monolith praktesch fir d'Konsumenten war, huet et e schwéiert technescht Thema gestallt wat d'Erhalen vun enger gudder Leeschtung ugeet.
Fir e Rewrite huet d'Firma vill Grondregelen etabléiert. Preload net; all Fonktioun soll seng eege App ginn, an et soll séier ginn. Snapchat huet Ännerungen op e puer Plazen gestoppt fir d'Rewrite z'erméiglechen, sou datt et strikt eng technesch Aufgab ass.
Zousätzlech Funktiounen Integratioun
D'Snapchat Kamera App huet Lënsen, Filteren, Bitmojis, an d'Fäegkeet fir augmentéiert Realitéit Animatiounen ze addéieren, ënner anerem. Snapchat's Chat App erlaabt d'Benotzer och Fotoen ze späicheren, Gespréicher ze späicheren, Emotiounen derbäi, a méi.
Snapchat Kaart, ënner anerem, erlaabt Iech Frënn ze iwwerwaachen wa se Iech wëllen. Erënnerungen, Fotoredaktioun an Inhaltsverbrauch sinn all separat Snapchat Apps mat hiren eenzegaartege Fäegkeeten.
Erënnerungen erlaaben Iech Fotoen oder Videoen ze späicheren oder z'änneren fir spéider ze benotzen, souwéi eropzelueden oder ze schécken. D'Benotzer kënnen och d'Bildbeaarbechtung benotze fir Filmer ze schneiden, Text derbäizefügen, Stickeren derbäi, a méi.
Den externen Inhaltsverbrauch vu Snapchat bezitt sech op wat et de Benotzer weist op Basis vun enger Rei vu Parameteren.
Microservices
De Programm huet extensiv vum JSON ofhänkt fir Netzwierkufroen zu där Zäit auszeféieren. Wéi och ëmmer, d'Parséiere vum JSON war Zäitopwänneg an ineffizient. Snapchat huet eng zentraliséiert Netzwierkmanagement API benotzt fir d'Benotzung vu JSON als Implementatiounsdetail ze maskéieren fir dëse Problem unzegoen.
Mikroservicer stellen d'Erausfuerderunge vun der Applikatiounsstaatmanagement, Servicekommunikatioun a Feelermanagement vir. Snapchat huet Open-Source Technologien wéi Temporal benotzt fir Orchesterschwieregkeeten ze iwwerwannen fir e staarken an zouverléissege System ze bauen.
Als Resultat huet d'Organisatioun decidéiert e Service Mesh Design Muster ze benotzen. Snapchat huet Envoy benotzt, en anert Open-Source Tool dat als Proxy wierkt, fir dëst Muster z'erreechen. Envoy huet de Flux vum Serviceverkéier iwwer d'Infrastruktur geréiert, fir Entwéckler Visibilitéit a potenziell Schwieregkeeten ze ginn.
Snapchat erstallt eng intern App genannt Switchboard am Service Mesh. Switchboard huet als Kontrollpanel fir Snap Servicer gedéngt, wat d'Benotzer erlaabt de Traffic ze verschwannen, Serviceabhängegkeeten ze managen (eng Feature déi et erlaabt datt ee Service ofhängeg vum Zoustand vun aneren verwaltet) an d'Regiounen drainéieren.
Fir d'Komplexitéit vu potenziellen Konfiguratiounen bannent Servicer ze vereinfachen, gouf Switchboard benotzt anstatt de ganzen Envoy API auszesetzen. Snap huet e gemeinsame internen a regionalen Netzwierk fir seng Mikroservicer dank dem Service Mesh.
Servicer an der selwechter Regioun kéinte matenee verbannen ouni den ëffentlechen Internet ze benotzen, a keen externen Netzwierkverkéier konnt mat internen Netzwierkdeeler kommunizéieren.
Nëmmen d'Gateways wieren autoriséiert fir sech um Internet aus Sécherheetsgrënn ze exposéieren. D'API-Gateways, zum Beispill, kënnen einfach als Frontdieren déngen, Ufroe vu Clienten / Benotzer veraarbecht a se mam Netz routéieren.
Netzwierk & API Gateway
All Ufroe vum Snapchat Client kommen duerch API Gateway. Et benotzt datselwecht Envoy Bild a verbënnt mat deemselwechte Kontrollplane wéi eis intern Mikroservicer. Eis Kontrollplane erlaabt eis personaliséiert Envoy Filteren z'aktivéieren.
D'Authentifikatiounssystemer vun Snapchat, souwéi eis Ratebegrenzung a Belaaschtungstechnologien, gi vun dëse Filtere gehandhabt. Envoy benotzt de Service Mesh fir Ufroen un de relevante Mikroservice ze routen nodeems d'Filterkette fäerdeg ass.
Konklusioun
Snapchat's API Gateway router externen Traffic op déi vill Funktionalitéiten vun der App. D'Ufroe vun de Benotzer fir d'Konfiguratiounszoustand z'änneren gi vu Servere geréiert, déi dann Donnéeën ubidden an Informatioun zréck op déi vill Servicer vun der App.
Insgesamt kann den aktuelle Snapchat Design mat verschiddene Programmer vergläicht ginn, déi op engem eenzegen Betribssystem lafen, wat an dësem Fall d'Snapchat App ass. Ech hu ganz schwéier probéiert Iech en héijen Iwwerbléck vum Snapchat System Design ze ginn. Ech hoffen Dir hutt et nëtzlech fonnt.
Hannerlooss eng Äntwert