Snapchat on noorte ja teismeliste seas hästi tuntud. Olete tõenäoliselt üle 25-aastane, kui te ei saa aru, kuidas see töötab. Snapchat, üks populaarsemaid sotsiaalmeediarakendusi, pakub lastele ja noorukitele täpselt seda, mida nad tahavad: lihtsa meetodi tavaliste sündmuste jagamiseks, muutes need samas lahedaks.
Erinevalt Facebookist ja Twitterist, mis salvestavad ja avaldavad kõike, mida teete, kasutab Snapchat sõnumeid, mis peaksid kaduma (vaadake, kuidas nad ei kao).
Snapchati kohta on palju ja kui olete arendaja, on see veelgi enam. Niisiis, see postitus annab teile kõrgetasemelise ülevaate Snapchatist süsteemi disain ja palju muud teavet.
Sissejuhatus
Snapchat asub USA-s sotsiaalsete võrgustike rakendus, mis võimaldab kasutajatel kohe ühenduse luua, pilte jagada ja palju muud.
- Sõnumitel ja piltidel (või piltidel) on 24-tunnine ajalimiit. Julgustab inimesi jagama oma lugusid rühmades.
- Snap Map võimaldab kasutajatel kaardil näha, kus nende sõbrad on.
- Mälestused tuletavad kasutajatele meelde fotosid, mille nad aasta hiljem salvestasid või jagasid.
- Snapchat on väga populaarne nooremate põlvkondade, eriti teismeliste seas. Rakendusel on 319 miljonit aktiivset kasutajat ja iga päev saadetakse 5.4 miljardit klõpsatust.
Olulised disainitingimused
Monoliitne arhitektuur – Ühetasandilist rakendust, mis töötab teistest rakendustest sõltumatult, tuntakse monoliidina (monoliitne arhitektuur). Monoliit on mõeldud kõigi ülesande täitmiseks vajalike tegevuste sooritamiseks ja haldamiseks. Rakendus täidab kõiki funktsioone algusest lõpuni.
Microservices - See on monoliitide polaarne vastand. Microservices on arhitektuurne lähenemine, mis korraldab rakenduse teenuste kogumina. Neid teenuseid kasutatakse rakenduse paljude aspektide juhtimiseks. Klient esitab tellimuse, kelner võtab selle ja toob kohale ning kokk valmistab selle ette. Selles näites toimib iga komponent iseseisvalt ja teistest eraldi; keegi ei tea täpselt, mida teised teevad, ja kellelgi pole juurdepääsu samale teabele.
JSON: see on tekstipõhine vorming, mida saab kasutada JavaScripti objektide, literaalide, massiivide ja andmete kuvamiseks. See tekstipõhine vorming on mõeldud lihtsaks lugemiseks ja kirjutamiseks ning tarkvara abil seeditavaks. JSON-i kasutatakse tavaliselt andmete ja teabe edastamiseks serverite ja võrgurakenduste vahel.
Orkestreerimine: Paljude toimingute automatiseerimise tehnikat nimetatakse orkestreerimiseks. Need tööd hõlmavad arvutisüsteemide ja tarkvara seadistamist, koordineerimist ja administreerimist.
Volikiri: Puhverserver toimib vahelülina ressurssi otsiva kliendi ja seda pakkuva serveri vahel.
Mesh: teenusevõrk on tarkvaraarhitektuuri muster, mis lisab infrastruktuurikihile kihi, et võimaldada puhverserveri kaudu reguleeritud, jälgitavat ja turvalist suhtlust teenuste vahel.
Kõrgetasemeline disain
Monoliitsed probleemid
Snapchat sai alguse pilvepõhise monoliidina, mis põhineb Google App Engineil. Kuna aga programmi populaarsus kasvas ning kasutajaid ja andmeid juurde tuli, muutus skaleeritavus probleemiks.
Lisaks olid suure plahvatusraadiusega monoliidis võimalikud kogu süsteemi hõlmavad häired. Ühte Snapchati probleemi määratleti kui "ühisvara tragöödiat", kus funktsioonid võistlesid ressurssidele juurdepääsu pärast; funktsioonid laaditi rakenduse käivitamise ajal, võimaldades teatud funktsioonide laadimist kiiremini, kuid teistel aeglasemalt.
Insenerid otsisid ka oma komponentide selget nähtavust, eraldamist ja omandiõigust arenduse seisukohast, et teenus oleks paindlik ja tõhus.
Transformation
Snapchati laienedes mõistis ettevõte, et peab oma monoliitset infrastruktuuri väiksemateks ja tõhusamateks tükkideks jagama. Latentsuse vähendamiseks otsustas organisatsioon välja töötada mikroteenustel põhineva disaini.
Nende eesmärkide saavutamiseks otsustas Snapchat värskendada oma tarkvara, kasutades skaleeritavat NoSQL-i andmebaasiteenust Amazon DynamoDB. Ettevõte suutis oma jõupingutuste tulemusel vähendada latentsusaega 20% võrra.
Ettevõte kirjutas rakenduse ümber arvukateks väiksemateks rakendusteks. Snapchat sai alguse paljudest rakendustest, sealhulgas kaamera, vestlus, mälestused, piltide redigeerimine, sisu tarbimine ja kaart. Kuigi nende programmide integreerimine üheks monoliidiks oli tarbijate jaoks mugav, tekitas see hea jõudluse säilitamisel tõsise tehnilise probleemi.
Ümberkirjutamiseks kehtestas ettevõte palju põhireegleid. Ärge eellaadige; iga funktsioon peaks olema oma rakendus ja see peaks olema kiire. Snapchat peatas ümberkirjutamise võimaldamiseks muudatused mitmes kohas, muutes selle rangelt tehniliseks ülesandeks.
Lisafunktsioonide integreerimine
Snapchati kaamerarakendusel on muuhulgas objektiivid, filtrid, bitmojisid ja võimalus lisada liitreaalsuse animatsioone. Snapchati vestlusrakendus võimaldab kasutajatel salvestada ka fotosid, salvestada kõnesid, lisada emotikone ja palju muud.
Snapchati kaart võimaldab muuhulgas jälgida sõpru, kui nad seda soovivad. Mälestused, fototöötlus ja sisu tarbimine on kõik eraldiseisvad Snapchati rakendused oma ainulaadsete võimalustega.
Mälestused võimaldavad salvestada või muuta fotosid või videoid hilisemaks kasutamiseks, samuti neid üles laadida või saata. Kasutajad saavad kasutada ka pilditöötlust, et lõigata filme, lisada teksti, lisada kleebiseid ja palju muud.
Snapchati väline sisu tarbimine viitab sellele, mida see paljude parameetrite alusel kasutajatele näitab.
Microservices
Programm sõltus sel ajal võrgupäringute sooritamisel suuresti JSON-ist. JSON-i sõelumine oli aga aeganõudev ja ebatõhus. Snapchat kasutas tsentraliseeritud võrguhalduse API-d, et varjata JSON-i kasutamist selle probleemi lahendamiseks rakenduse üksikasjana.
Mikroteenused tutvustavad rakenduse olekuhalduse, teenusesuhtluse ja tõrkehalduse väljakutseid. Snapchat kasutas avatud lähtekoodiga tehnoloogiaid, nagu Temporal, orkestreerimisraskuste ületamiseks, et luua tugev ja töökindel süsteem.
Selle tulemusena otsustas organisatsioon kasutada teenindusvõrgu kujundusmustrit. Snapchat kasutas selle mustri saavutamiseks teist avatud lähtekoodiga tööriista Envoy, mis toimib puhverserverina. Envoy haldas teenuseliikluse voogu läbi infrastruktuuri, andes arendajatele nähtavuse võimalike raskuste kohta.
Snapchat lõi teenindusvõrgus sisemise rakenduse nimega Switchboard. Jaotuskilp toimis Snapi teenuste juhtpaneelina, võimaldades kasutajatel liiklust nihutada, hallata teenuse sõltuvusi (funktsioon, mis võimaldab hallata ühte teenust sõltuvalt teiste seisundist) ja tühjendada piirkondi.
Teenuste võimalike konfiguratsioonide keerukuse lihtsustamiseks kasutati kogu Envoy API paljastamise asemel Switchboardi. Tänu teenindusvõrgule on Snapil oma mikroteenuste jaoks ühine sise- ja piirkondlik võrk.
Samas piirkonnas asuvad teenused saaksid omavahel ühenduse luua ilma avalikku Internetti kasutamata ja ükski väline võrguliiklus ei saaks suhelda sisemiste võrguosadega.
Turvakaalutlustel lubatakse end Internetiga kokku puutuda ainult lüüsidel. Näiteks API lüüsid võivad hõlpsasti toimida välisustena, mis töötlevad klientide/kasutajate päringuid ja suunavad need koos võrguga.
Võrgu ja API lüüs
Kõik Snapchati kliendi päringud tulevad API Gateway kaudu. See kasutab sama Envoy pilti ja ühendub sama juhtimistasandiga nagu meie sisemised mikroteenused. Meie juhtimistasand võimaldab meil lubada kohandatud Envoy filtreid.
Need filtrid käitlevad Snapchati autentimissüsteeme, aga ka meie kiiruse piiramise ja koormuse vähendamise tehnoloogiaid. Envoy kasutab Service Meshi päringute suunamiseks vastavasse mikroteenusesse pärast filtriahela lõppemist.
Järeldus
Snapchati API lüüs suunab välise liikluse rakenduse paljudele funktsioonidele. Kasutajate konfiguratsiooniolekute muutmise taotlusi haldavad serverid, mis seejärel anda andmeid ja teave tagasi rakenduse arvukatesse teenustesse.
Üldiselt võib Snapchati praegust disaini võrrelda mitme programmiga, mis töötavad ühes operatsioonisüsteemis, milleks antud juhul on rakendus Snapchat. Püüdsin väga kõvasti anda teile Snapchati süsteemi disainist kõrgetasemelist ülevaadet. Loodan, et see oli teile kasulik.
Jäta vastus