Snapchat ir labi pazīstams starp tweens un pusaudžiem. Jums, iespējams, ir vairāk nekā 25, ja nevarat saprast, kā tas darbojas. Snapchat, viena no populārākajām sociālo mediju lietojumprogrammām, nodrošina bērniem un pusaudžiem tieši to, ko viņi vēlas: vienkāršu veidu, kā kopīgot parastos notikumus, vienlaikus liekot tiem izskatīties forši.
Atšķirībā no Facebook un Twitter, kas ieraksta un publicē visu, ko jūs darāt, Snapchat izmanto ziņojumus, kuriem vajadzētu pazust (skatiet, kā tie nepazūd).
Par Snapchat ir daudz informācijas, un, ja esat izstrādātājs, tas ir vēl vairāk. Tātad, šī ziņa sniegs jums augsta līmeņa skatījumu uz Snapchat sistēmas projektēšana un vēl daudz vairāk ieskatu.
Ievads
Snapchat ir ASV sociālo tīklu lietotne, kas lietotājiem ļauj nekavējoties izveidot savienojumu, kopīgot attēlus un veikt citas darbības.
- Ziņojumiem un attēliem (vai momentuzņēmumiem) ir 24 stundu laika ierobežojums. Mudina cilvēkus dalīties savos stāstos grupās.
- Snap Map ļauj lietotājiem kartē redzēt, kur atrodas viņu draugi.
- Atmiņas atgādina lietotājiem par fotoattēliem, ko viņi saglabājuši vai kopīgojuši gadu vēlāk.
- Snapchat ir ārkārtīgi populārs jaunāko paaudžu, īpaši pusaudžu, vidū. Lietotnē ir 319 miljoni aktīvo lietotāju, un katru dienu tiek nosūtīti 5.4 miljardi momentuzņēmumu.
Svarīgi dizaina noteikumi
Monolītā arhitektūra – Viena līmeņa lietojumprogramma, kas darbojas neatkarīgi no citām lietojumprogrammām, ir pazīstama kā monolīts (monolīta arhitektūra). Monolīts ir paredzēts, lai veiktu un apstrādātu visas darbības, kas nepieciešamas uzdevuma veikšanai. Lietojumprogramma veic visas funkcijas no sākuma līdz beigām.
Microservices - Tas ir polārs pretstats monolītiem. Microservices ir arhitektūras pieeja, kas organizē lietojumprogrammu kā pakalpojumu kolekciju. Šie pakalpojumi tiek izmantoti, lai kontrolētu daudzus lietojumprogrammas aspektus. Klients veic pasūtījumu, viesmīlis to paņem un piegādā, un šefpavārs sagatavo. Šajā piemērā katrs komponents darbojas neatkarīgi un atsevišķi no pārējiem; neviens precīzi nezina, ko dara pārējie, un nevienam nav piekļuves tai pašai informācijai.
JSON: tas ir uz tekstu balstīts formāts, ko var izmantot, lai parādītu JavaScript objektus, literāļus, masīvus un datus. Šis uz tekstu balstīts formāts ir paredzēts tā, lai to būtu viegli lasīt un rakstīt, kā arī to varētu viegli uztvert ar programmatūru. JSON parasti izmanto datu un informācijas pārsūtīšanai starp serveriem un tiešsaistes lietojumprogrammām.
Orķestrācija: Daudzu darbību automatizācijas paņēmiens ir pazīstams kā orķestrēšana. Šie darbi ietver datorsistēmu un programmatūras konfigurēšanu, koordinēšanu un administrēšanu.
Pilnvara: starpniekserveris darbojas kā starpnieks starp klientu, kas meklē resursu, un serveri, kas to nodrošina.
Acs: pakalpojumu tīkls ir programmatūras arhitektūras modelis, kas infrastruktūras slānim pievieno slāni, lai nodrošinātu regulētu, novērojamu un drošu saziņu starp pakalpojumiem, izmantojot starpniekserveri.
Augsta līmeņa dizains
Monolītās problēmas
Snapchat radās kā uz mākoņiem balstīts monolīts, kura pamatā ir Google App Engine. Tomēr, pieaugot programmas popularitātei un iegūstot vairāk lietotāju un datu, mērogojamība kļuva par problēmu.
Turklāt ar milzīgu sprādziena rādiusu monolītā bija iespējami sistēmas mēroga traucējumi. Viena no Snapchat problēmām tika definēta kā "kopējo lietu traģēdija", kurā funkcijas sacentās par piekļuvi resursiem; funkcijas tika ielādētas lietotnes palaišanas laikā, ļaujot dažām funkcijām ielādēt ātrāk, bet citām lēnāk.
Inženieri arī meklēja skaidru redzamību, nošķiršanu un to komponentu īpašumtiesības no attīstības viedokļa, lai pakalpojums būtu elastīgs un efektīvs.
transformācija
Paplašinoties Snapchat, uzņēmums saprata, ka tā monolītā infrastruktūra ir jāsadala mazākos, efektīvākos gabalos. Lai nodrošinātu samazinātu latentumu, organizācija nolēma izstrādāt uz mikropakalpojumiem balstītu dizainu.
Lai sasniegtu šos mērķus, Snapchat izvēlējās atjaunināt savu programmatūru, izmantojot Amazon DynamoDB, mērogojamu NoSQL datu bāzes pakalpojumu. Uzņēmuma centienu rezultātā izdevās samazināt vidējo latentumu par 20%.
Korporācija lietotni pārrakstīja daudzās mazākās lietojumprogrammās. Snapchat sākās ar daudzām lietojumprogrammām, tostarp kameru, tērzēšanu, atmiņām, attēlu rediģēšanu, satura patēriņu un karti. Lai gan šo programmu integrēšana vienā monolītā patērētājiem bija ērta, tā radīja nopietnu tehnisku problēmu labas veiktspējas uzturēšanai.
Pārrakstīšanai korporācija noteica daudzus pamatnoteikumus. Neielādējiet iepriekš; katrai funkcijai ir jābūt savai lietotnei, un tai ir jābūt ātrai. Snapchat apturēja modifikācijas vairākās vietās, lai nodrošinātu pārrakstīšanu, padarot to par tehnisku uzdevumu.
Papildu funkciju integrācija
Snapchat kameras lietotnei cita starpā ir objektīvi, filtri, bitmojis un iespēja pievienot paplašinātās realitātes animācijas. Snapchat tērzēšanas lietotne arī ļauj lietotājiem saglabāt fotogrāfijas, saglabāt sarunas, pievienot emocijzīmes un daudz ko citu.
Snapchat karte, cita starpā, ļauj uzraudzīt draugus, ja viņi to vēlas. Atmiņas, fotoattēlu rediģēšana un satura patēriņš ir atsevišķas Snapchat lietotnes ar savām unikālajām iespējām.
Atmiņas ļauj saglabāt vai modificēt fotogrāfijas vai video vēlākai lietošanai, kā arī augšupielādēt vai nosūtīt tos. Lietotāji var arī izmantot attēlu rediģēšanu, lai izgrieztu filmas, pievienotu tekstu, pievienotu uzlīmes un daudz ko citu.
Snapchat ārējā satura patēriņš attiecas uz to, ko tas parāda lietotājiem, pamatojoties uz virkni parametru.
Microservices
Programma lielā mērā bija atkarīga no JSON, lai tajā laikā veiktu tīkla vaicājumus. Tomēr JSON parsēšana bija laikietilpīga un neefektīva. Snapchat izmantoja centralizētu tīkla pārvaldības API, lai maskētu JSON izmantošanu kā ieviešanas detaļu šīs problēmas risināšanai.
Mikropakalpojumi iepazīstina ar lietojumprogrammu stāvokļa pārvaldības, pakalpojumu komunikācijas un kļūmju pārvaldības izaicinājumiem. Snapchat izmantoja atvērtā pirmkoda tehnoloģijas, piemēram, Temporal, lai pārvarētu orķestrēšanas grūtības, lai izveidotu spēcīgu un uzticamu sistēmu.
Rezultātā organizācija nolēma izmantot pakalpojumu tīkla dizaina modeli. Lai sasniegtu šo modeli, Snapchat izmantoja Envoy, citu atvērtā koda rīku, kas darbojas kā starpniekserveris. Envoy pārvaldīja pakalpojumu plūsmas plūsmu caur infrastruktūru, sniedzot izstrādātājiem redzamību par iespējamām grūtībām.
Snapchat pakalpojumu tīklā izveidoja iekšējo lietotni, ko sauc par komutācijas paneli. Sadales panelis kalpoja kā Snap pakalpojumu vadības panelis, ļaujot lietotājiem pārvietot trafiku, pārvaldīt pakalpojumu atkarības (funkcija, kas ļauj pārvaldīt vienu pakalpojumu atkarībā no citu stāvokļa) un iztukšot reģionus.
Lai vienkāršotu iespējamo pakalpojumu konfigurāciju sarežģītību, tika izmantots komutācijas panelis, nevis tika atklāta visa Envoy API. Pateicoties pakalpojumu tīklam, Snap mikropakalpojumiem ir kopīgs iekšējais un reģionālais tīkls.
Pakalpojumi vienā un tajā pašā reģionā varētu savienoties savā starpā, neizmantojot publisko internetu, un ārējā tīkla trafika nevarēja sazināties ar iekšējām tīkla daļām.
Tikai vārti būtu pilnvaroti pakļauties internetam drošības apsvērumu dēļ. Piemēram, API vārtejas var viegli kalpot kā ieejas durvis, apstrādājot klientu/lietotāju pieprasījumus un maršrutējot tos kopā ar tīklu.
Tīkla un API vārteja
Visi Snapchat klienta vaicājumi tiek saņemti, izmantojot API vārteju. Tas izmanto to pašu Envoy attēlu un savienojas ar to pašu vadības plakni kā mūsu iekšējie mikropakalpojumi. Mūsu vadības plakne ļauj mums iespējot pielāgotus sūtņa filtrus.
Šie filtri apstrādā Snapchat autentifikācijas sistēmas, kā arī mūsu ātruma ierobežošanas un slodzes samazināšanas tehnoloģijas. Sūtnis izmanto pakalpojumu tīklu, lai pēc filtra ķēdes pabeigšanas novirzītu pieprasījumus uz attiecīgo mikropakalpojumu.
Secinājumi
Snapchat API vārteja novirza ārējo trafiku uz daudzām lietotnes funkcijām. Lietotāju pieprasījumus mainīt konfigurācijas stāvokļus pārvalda serveri, kas pēc tam sniegt datus un informāciju atpakaļ uz lietotnes daudzajiem pakalpojumiem.
Kopumā Snapchat pašreizējo dizainu var salīdzināt ar vairākām programmām, kas darbojas vienā operētājsistēmā, kas šajā gadījumā ir Snapchat lietotne. Es ļoti centos sniegt jums augsta līmeņa pārskatu par Snapchat sistēmas dizainu. Ceru, ka noderēja.
Atstāj atbildi