Snapchat je dobro znan med najstniki in najstniki. Verjetno ste starejši od 25, če ne morete ugotoviti, kako deluje. Snapchat, ena izmed najbolj priljubljenih aplikacij družbenih medijev, otrokom in mladostnikom nudi točno to, kar si želijo: enostaven način za izmenjavo običajnih dogodkov, hkrati pa jih naredi kul.
Za razliko od Facebooka in Twitterja, ki snemata in objavljata vse, kar počnete, Snapchat uporablja sporočila, ki naj bi izginila (poglejte, kako ne).
O Snapchatu je veliko, če ste razvijalec, pa še več. Torej, ta objava vam bo dala pogled na Snapchat na visoki ravni načrtovanje sistema in še veliko več spoznanj.
Predstavitev
Snapchat ima sedež v ZDA socialne mreže aplikacija, ki uporabnikom omogoča takojšnjo povezavo, skupno rabo slik in še več.
- Sporočila in slike (ali posnetki) imajo 24-urno časovno omejitev. Spodbuja ljudi, da svoje zgodbe delijo v skupinah.
- Snap Map omogoča uporabnikom, da na zemljevidu vidijo, kje so njihovi prijatelji.
- Spomini opomnijo uporabnike na fotografije, ki so jih shranili ali dali v skupno rabo leto pozneje.
- Snapchat je izjemno priljubljen pri mlajših generacijah, zlasti pri najstnikih. V aplikaciji je 319 milijonov aktivnih uporabnikov, vsak dan pa je poslanih 5.4 milijarde posnetkov.
Pomembni pogoji oblikovanja
Monolitna arhitektura – Enostopenjska aplikacija, ki deluje neodvisno od drugih aplikacij, je znana kot monolit (monolitna arhitektura). Monolit je zasnovan za izvajanje in obvladovanje vseh dejavnosti, potrebnih za dokončanje naloge. Aplikacija izvaja vse funkcije od začetka do konca.
Mikro storitve – Je polno nasprotje monolitov. Mikro storitve je arhitekturni pristop, ki organizira aplikacijo kot zbirko storitev. Te storitve se uporabljajo za nadzor številnih vidikov aplikacije. Stranka odda naročilo, natakar ga prevzame in dostavi, kuhar pa pripravi. V tem primeru vsaka komponenta deluje neodvisno in ločeno od drugih; nihče ne ve natančno, kaj počnejo drugi, in nihče nima dostopa do istih informacij.
JSON: je besedilna oblika, ki se lahko uporablja za prikaz predmetov, literalov, nizov in podatkov JavaScript. Ta besedilna oblika naj bi bila enostavna za branje in pisanje ter prebavljiva s programsko opremo. JSON se običajno uporablja za prenos podatkov in informacij med strežniki in spletnimi aplikacijami.
Orkestracija: Tehnika avtomatizacije številnih operacij je znana kot orkestracija. Ta delovna mesta vključujejo konfiguracijo računalniškega sistema in programske opreme, koordinacijo in administracijo.
Proxy: Proxy deluje kot posrednik med odjemalcem, ki išče vir, in strežnikom, ki ga zagotavlja.
Mreža: Servisna mreža je vzorec programske arhitekture, ki doda plast infrastrukturnemu sloju, da omogoči regulirano, opazno in varno komunikacijo med storitvami prek proxyja.
Oblikovanje na visoki ravni
Monolitne težave
Snapchat je nastal kot monolit v oblaku, ki temelji na Google App Engine. Vendar, ko je program postajal vse bolj priljubljen in pridobil več uporabnikov in podatkov, je razširljivost postala težava.
Poleg tega so bile zaradi velikega polmera eksplozije znotraj monolita možne motnje v celotnem sistemu. Ena od težav Snapchata je bila opredeljena kot »tragedija skupnega«, v kateri so se funkcije potegovale za dostop do virov; funkcije so se nalagale ob zagonu aplikacije, kar je omogočalo, da so se nekatere funkcije nalagale hitreje, druge pa počasneje.
Inženirji so tudi z razvojnega vidika iskali jasno vidnost, ločitev in lastništvo nad njihovimi komponentami, da bi bila storitev prilagodljiva in učinkovita.
Preoblikovanje
Ko se je Snapchat širil, je podjetje spoznalo, da mora svojo monolitno infrastrukturo razbiti na manjše in učinkovitejše dele. Da bi zagotovili zmanjšano zamudo, se je organizacija odločila razviti zasnovo, ki temelji na mikro storitvah.
Da bi dosegel te cilje, se je Snapchat odločil posodobiti svojo programsko opremo z uporabo Amazon DynamoDB, razširljive storitve baze podatkov NoSQL. Podjetje je lahko zaradi svojih prizadevanj zmanjšalo povprečno zamudo za 20 %.
Korporacija je aplikacijo prepisala v številne manjše aplikacije. Snapchat se je začel s številnimi aplikacijami, vključno s kamero, klepetom, spomini, urejanjem slik, porabo vsebine in zemljevidom. Čeprav je bila integracija teh programov v en sam monolit priročna za potrošnike, je predstavljala resno tehnično težavo v smislu ohranjanja dobrega delovanja.
Za prenovo je korporacija vzpostavila številna osnovna pravila. Ne nalagajte vnaprej; vsaka funkcija mora biti lastna aplikacija in mora biti hitra. Snapchat je ustavil spremembe na več mestih, da bi omogočil ponovno pisanje, zaradi česar je bila to izključno tehnična naloga.
Integracija dodatnih funkcij
Snapchatova aplikacija za kamero ima med drugim leče, filtre, bitmoji in možnost dodajanja animacij razširjene resničnosti. Aplikacija za klepet Snapchat uporabnikom omogoča tudi shranjevanje fotografij, shranjevanje pogovorov, dodajanje čustvenih simbolov in še več.
Snapchatov zemljevid med drugim omogoča spremljanje prijateljev, če to želijo. Spomini, urejanje fotografij in poraba vsebine so ločene aplikacije Snapchat s svojimi edinstvenimi zmogljivostmi.
Spomini vam omogočajo shranjevanje ali spreminjanje fotografij ali videoposnetkov za kasnejšo uporabo, pa tudi nalaganje ali pošiljanje. Uporabniki lahko uporabljajo tudi urejanje slik za rezanje filmov, dodajanje besedila, dodajanje nalepk in še več.
Snapchatova zunanja poraba vsebine se nanaša na to, kar prikazuje uporabnikom na podlagi vrste parametrov.
Mikro storitve
Program je bil takrat močno odvisen od JSON za izvajanje omrežnih poizvedb. Vendar je bilo razčlenjevanje JSON zamudno in neučinkovito. Snapchat je uporabil centraliziran API za upravljanje omrežja, da bi prikril uporabo JSON kot podrobnosti izvedbe za reševanje te težave.
Mikrostoritve predstavljajo izzive upravljanja stanja aplikacije, storitvene komunikacije in upravljanja napak. Snapchat je uporabljal odprtokodne tehnologije, kot je Temporal, za premagovanje težav pri orkestraciji, da bi zgradil močan in zanesljiv sistem.
Kot rezultat, se je organizacija odločila uporabiti vzorec zasnove storitvene mreže. Snapchat je za dosego tega vzorca uporabil Envoy, drugo odprtokodno orodje, ki deluje kot proxy. Envoy je upravljal tok storitvenega prometa prek infrastrukture, kar je razvijalcem omogočilo vpogled v morebitne težave.
Snapchat je znotraj storitvene mreže ustvaril notranjo aplikacijo, imenovano Switchboard. Stikalna plošča je služila kot nadzorna plošča za Snapove storitve in uporabnikom omogočala preusmerjanje prometa, upravljanje odvisnosti storitev (funkcija, ki omogoča upravljanje ene storitve glede na stanje drugih) in črpanje regij.
Za poenostavitev zapletenosti potencialnih konfiguracij znotraj storitev je bila uporabljena Switchboard, namesto da bi razkrili celoten Envoy API. Snap ima skupno notranjo in regionalno mrežo za svoje mikrostoritve zahvaljujoč servisni mreži.
Storitve znotraj iste regije bi se lahko povezovale med seboj brez uporabe javnega interneta in noben zunanji omrežni promet ne bi mogel komunicirati z notranjimi deli omrežja.
Samo prehodi bi bili pooblaščeni, da se iz varnostnih razlogov izpostavijo internetu. Prehodi API lahko na primer zlahka služijo kot vhodna vrata, obdelujejo zahteve odjemalcev/uporabnikov in jih usmerjajo skupaj z omrežjem.
Omrežje in prehod API
Vse poizvedbe odjemalca Snapchat prihajajo skozi API Gateway. Uporablja isto sliko Envoyja in se povezuje z isto nadzorno ravnino kot naše notranje mikrostoritve. Naša nadzorna ravnina nam omogoča, da omogočimo filtre po meri Envoy.
Ti filtri upravljajo Snapchatove sisteme za preverjanje pristnosti, pa tudi naše tehnologije za omejevanje hitrosti in zmanjševanje obremenitve. Envoy uporablja Service Mesh za usmerjanje zahtev do ustrezne mikrostoritve po končani verigi filtrov.
zaključek
Snapchatov API prehod usmerja zunanji promet na številne funkcije aplikacije. Zahteve uporabnikov za spreminjanje konfiguracijskih stanj upravljajo strežniki, ki nato zagotoviti podatke in informacije nazaj v številne storitve aplikacije.
Na splošno lahko sedanjo zasnovo Snapchata primerjamo z več programi, ki se izvajajo v enem operacijskem sistemu, kar je v tem primeru aplikacija Snapchat. Zelo sem se potrudil, da vam zagotovim pregled na visoki ravni nad zasnovo sistema Snapchat. Upam, da se vam je zdelo koristno.
Pustite Odgovori