Snapchat is bekend ûnder tweens en teenagers. Jo binne wierskynlik boppe 25 as jo net kinne útfine hoe't it wurket. Snapchat, ien fan 'e populêrste sosjale media-applikaasjes, biedt bern en adolesinten krekt wat se wolle: in maklike metoade om gewoane foarfallen te dielen, wylst se ek cool meitsje.
Oars as Facebook en Twitter, dy't alles opnimme en publisearje wat jo dogge, brûkt Snapchat berjochten dy't moatte ferdwine (sjoch hoe't se dat net dogge).
D'r is in protte oer Snapchat, en as jo in ûntwikkelder binne, is it noch mear. Dat, dizze post sil jo in werjefte fan Snapchat op hege nivo jaan systeem ûntwerp en folle mear ynsjoch.
Ynlieding
Snapchat is in US-basearre sosjaal netwurkje app wêrmei brûkers fuortendaliks ferbine kinne, ôfbyldings diele, en mear.
- Berjochten en ôfbyldings (as snaps) hawwe in 24-oere tiidlimyt. Moedigje minsken oan om har ferhalen yn groepen te dielen.
- Snap Map lit brûkers sjen op in kaart wêr't har freonen binne.
- Oantinkens herinnerje brûkers oan foto's dy't se in jier letter hawwe bewarre of dield.
- Snapchat is ekstreem populêr by jongere generaasjes, benammen teeners. D'r binne 319 miljoen aktive brûkers op 'e app, en 5.4 miljard snaps wurde elke dei ferstjoerd.
Wichtige Design Terms
Monolityske arsjitektuer - In single-tiered applikaasje dy't ûnôfhinklik wurket fan oare applikaasjes stiet bekend as in monolith (monolityske arsjitektuer). In monolyt is ûntworpen om alle aktiviteiten út te fieren en te behanneljen dy't nedich binne om in taak te foltôgjen. De applikaasje fiert alle funksjes fan begjin oant ein.
Microservices - It polar tsjinoerstelde fan monolyten. Microservices is in arsjitektoanyske oanpak dy't in applikaasje organisearret as in samling tsjinsten. Dizze tsjinsten wurde brûkt om in protte aspekten fan in applikaasje te kontrolearjen. In klant pleatst in bestelling, in ober nimt it en leveret it, en in chef makket it ta. Yn dit foarbyld funksjonearret elke komponint ûnôfhinklik en apart fan 'e oaren; gjinien wit krekt wat de oaren dogge, en gjinien hat tagong ta deselde ynformaasje.
JSON: It is in tekst-basearre opmaak dat brûkt wurde kin om JavaScript-objekten, letterliken, arrays en gegevens wer te jaan. Dit tekst-basearre formaat is bedoeld om ienfâldich te lêzen en te skriuwen, en ek fertearber te wêzen troch software. JSON wurdt faak brûkt om gegevens en ynformaasje oer te bringen tusken servers en online applikaasjes.
Orkestraasje: De technyk fan it automatisearjen fan in protte operaasjes is bekend as orkestraasje. Dizze banen omfetsje komputersysteem en softwarekonfiguraasje, koördinaasje en administraasje.
Proxy: In proxy fungearret as in go-tusken tusken in kliïnt op syk nei in boarne en de tsjinner dy't it leveret.
mesh: In tsjinst mesh is in software arsjitektuer patroan dat foeget in laach ta oan in ynfrastruktuer laach te tastean regulearre, observable, en feilige kommunikaasje tusken tsjinsten fia proxy.
Untwerp op hege nivo
Monolityske problemen
Snapchat ûntstie as in wolk-basearre monolith basearre op de Google App Engine. Doe't it programma lykwols yn populariteit groeide en mear brûkers en gegevens krige, waard skalberens in probleem.
Derneist, mei in enoarme eksploazjeradius binnen de monolit, wiene systeembrede fersteuringen mear mooglik. Ien fan 'e problemen fan Snapchat waard definiearre as in "trageedzje fan 'e commons", wêryn funksjes konkurrearje foar tagong ta middels; funksjes waarden laden op 'e tiid fan' e app-lansearring, wêrtroch bepaalde funksjes rapper laden, mar de oaren trager laden.
Yngenieurs sochten ek dúdlike sichtberens, skieding en eigendom fan har komponinten út in ûntwikkelingspunt, sadat de tsjinst fleksibel en effisjint koe wêze.
transformation
Doe't Snapchat útwreide, realisearre it bedriuw dat it syn monolityske ynfrastruktuer moast opbrekke yn lytsere, effisjinter stikken. Om fermindere latency te leverjen, besleat de organisaasje in ûntwerp basearre op mikrotsjinsten te ûntwikkeljen.
Om dizze doelen te ferfoljen, keas Snapchat foar har software te aktualisearjen mei Amazon DynamoDB, in skalberbere NoSQL-databasetsjinst. It bedriuw koe de mediaan latency mei 20% ferminderje as gefolch fan har ynspanningen.
De app waard troch de korporaasje herskreaun yn tal fan lytsere applikaasjes. Snapchat begon mei in protte applikaasjes, ynklusyf in kamera, petear, oantinkens, ôfbylding bewurkje, ynhâld konsumpsje, en in kaart. Hoewol it yntegrearjen fan dizze programma's yn ien monolith handich wie foar konsuminten, posearre it in swier technysk probleem yn termen fan it behâld fan goede prestaasjes.
Foar in herskriuwen fêstige de korporaasje in protte grûnregels. Net preload; elke funksje moat in eigen app wêze, en it moat fluch wêze. Snapchat stoppe oanpassingen op ferskate plakken om it herskriuwen mooglik te meitsjen, wêrtroch it strikt in technyske taak is.
Oanfoljende funksjes yntegraasje
De kamera-app fan Snapchat hat ûnder oare linzen, filters, bitmojis, en de mooglikheid om augmented reality-animaasjes ta te foegjen. De chat-app fan Snapchat lit brûkers ek foto's opslaan, petearen opslaan, emoticons tafoegje, en mear.
De kaart fan Snapchat lit jo ûnder oare freonen kontrolearje as se dat wolle. Oantinkens, foto-bewurking en ynhâldferbrûk binne allegear aparte Snapchat-apps mei har unike mooglikheden.
Memories kinne jo foto's of fideo's opslaan of wizigje foar letter gebrûk, en ek uploade of ferstjoere. Brûkers kinne ek foto-bewurking brûke om films te knippen, tekst ta te foegjen, stickers ta te foegjen, en mear.
It eksterne ynhâldferbrûk fan Snapchat ferwiist nei wat it brûkers toant op basis fan in ferskaat oan parameters.
Microservices
It programma wie wiidweidich ôfhinklik fan JSON om destiids netwurkfragen út te fieren. It parsearjen fan JSON wie lykwols tiidslinend en net effisjint. Snapchat brûkte in sintralisearre netwurkbehear API om it gebrûk fan JSON as ymplemintaasjedetail te maskeren om dit probleem oan te pakken.
Microservices yntrodusearje de útdagings fan tapassing tastân behear, tsjinst kommunikaasje, en mislearring behear. Snapchat brûkte iepenboarne-technologyen lykas Temporal om orkestraasjeproblemen te oerwinnen om in sterk en betrouber systeem te bouwen.
As gefolch, de organisaasje besleat om in patroan fan it ûntwerp fan in servicemesh te brûken. Snapchat brûkte Envoy, in oar iepen boarne-ark dat fungearret as proxy, om dit patroan te berikken. Envoy behearde de stream fan tsjinstferkear fia de ynfrastruktuer, wêrtroch ûntwikkelders sichtberens yn potinsjele swierrichheden jaan.
Snapchat makke in ynterne app neamd de Switchboard binnen it tsjinstmesh. Switchboard tsjinne as in kontrôle paniel foar Snap syn tsjinsten, wêrtroch brûkers te ferskowen ferkear, beheare tsjinst ôfhinklikens (in funksje wêrmei ien tsjinst wurde beheard ôfhinklik fan de tastân fan oaren), en drain regio.
Om de kompleksiteit fan potinsjele konfiguraasjes binnen tsjinsten te ferienfâldigjen, waard Switchboard brûkt ynstee fan 'e hiele Envoy API te eksposearjen. Snap hat in mienskiplik ynterne en regionaal netwurk foar har mikrotsjinsten troch it tsjinstmesh.
Tsjinsten yn deselde regio koene mei-inoar ferbine sûnder it iepenbiere ynternet te brûken, en gjin ekstern netwurkferkear koe kommunisearje mei ynterne netwurkdielen.
Allinich de Gateways soene autorisearre wêze om harsels oan it ynternet bleat te lizzen om feiligensredenen. De API-poarten kinne bygelyks maklik tsjinje as foardoarren, ferwurkjen fan oanfragen fan kliïnten / brûkers en routing se tegearre mei it netwurk.
Netwurk & API Gateway
Alle fragen fan 'e Snapchat-kliïnt komme fia API Gateway. It brûkt deselde Envoy-ôfbylding en ferbynt mei itselde Control Plane as ús ynterne mikrotsjinsten. Us Control Plane lit ús oanpaste Envoy-filters ynskeakelje.
De autentikaasjesystemen fan Snapchat, lykas ús technologyen foar taryfbeheining en load shedding, wurde behannele troch dizze filters. Envoy brûkt de Service Mesh om fersiken nei de oanbelangjende mikrotsjinst te stjoeren neidat de filterketen foltôge is.
Konklúzje
De API-gateway fan Snapchat bringt ekstern ferkear nei de protte funksjes fan 'e app. Oanfragen fan brûkers om konfiguraasjetastân te feroarjen wurde beheard troch servers, dy't dan jouwe gegevens en ynformaasje werom nei de ferskate tsjinsten fan 'e app.
Oer it algemien kin it hjoeddeistige ûntwerp fan Snapchat wurde fergelike mei ferskate programma's dy't rinne op ien bestjoeringssysteem, wat yn dit gefal de Snapchat-app is. Ik besocht heul hurd om jo in oersjoch op heech nivo te jaan fan it Snapchat-systeemûntwerp. Ik hoopje dat jo it nuttich fûn hawwe.
Leave a Reply