Snapchat estas konata inter junuloj kaj adoleskantoj. Vi verŝajne superas 25 se vi ne povas kompreni kiel ĝi funkcias. Snapchat, unu el la plej popularaj sociaj amaskomunikiloj, provizas infanojn kaj adoleskantoj precize tion, kion ili volas: facila metodo por kunhavi ordinarajn okazojn samtempe igante ilin aspekti mojosa.
Male al Facebook kaj Twitter, kiuj registras kaj publikigas ĉion, kion vi faras, Snapchat utiligas mesaĝojn kiuj supozeble malaperas (vidu kiel ili ne).
Estas multe pri Snapchat, kaj se vi estas programisto, ĝi estas eĉ pli. Do, ĉi tiu afiŝo donos al vi altnivelan vidon de Snapchat sistema dezajno kaj multe pli da komprenoj.
Enkonduko
Snapchat estas usona bazita sociaj retoj aplikaĵo, kiu ebligas al uzantoj konektiĝi tuj, kunhavi bildojn kaj pli.
- Mesaĝoj kaj bildoj (aŭ klakoj) havas 24-horan tempolimon. Instigas homojn dividi siajn rakontojn en grupoj.
- Snap Map permesas al uzantoj vidi sur mapo kie estas iliaj amikoj.
- Memoroj memorigas uzantojn pri fotoj, kiujn ili konservis aŭ dividis jaron poste.
- Snapchat estas ege populara ĉe pli junaj generacioj, precipe adoleskantoj. Estas 319 milionoj da aktivaj uzantoj en la programo, kaj 5.4 miliardoj da klakoj estas senditaj ĉiutage.
Gravaj Dezajnaj Kondiĉoj
Monolita Arkitekturo – Ununivela aplikaĵo, kiu funkcias sendepende de aliaj aplikoj, estas konata kiel monolito (monolita arkitekturo). Monolito estas dizajnita por plenumi kaj trakti ĉiujn agadojn necesajn por plenumi taskon. La aplikaĵo plenumas ĉiujn funkciojn de komenco ĝis fino.
Mikroservoj – Ĝi polusa malo de monolitoj. Mikroservoj estas arkitektura aliro, kiu organizas aplikaĵon kiel kolekton de servoj. Ĉi tiuj servoj estas uzataj por kontroli multajn aspektojn de aplikaĵo. Kliento faras mendon, kelnero prenas ĝin kaj liveras ĝin, kaj kuiristo preparas ĝin. En ĉi tiu ekzemplo, ĉiu komponanto funkcias sendepende kaj aparte de la aliaj; neniu scias precize kion la aliaj faras, kaj neniu havas aliron al la samaj informoj.
JSON: Ĝi estas tekst-bazita formato kiu povas esti uzata por montri JavaScript objektojn, literalojn, tabelojn kaj datumojn. Ĉi tiu tekst-bazita formato intencas esti simple legebla kaj skribi, kaj ankaŭ esti digestebla per programaro. JSON estas ofte uzata por transdoni datumojn kaj informojn inter serviloj kaj interretaj aplikaĵoj.
Orkestrado: La tekniko de aŭtomatigo de multaj operacioj estas konata kiel instrumentado. Ĉi tiuj laborpostenoj inkluzivas komputilan sistemon kaj programaron agordon, kunordigon kaj administradon.
prokurilo: Prokurilo agas kiel peranto inter kliento serĉanta rimedon kaj la servilo kiu provizas ĝin.
mesh: Serva maŝo estas programara arkitekturo, kiu aldonas tavolon al infrastruktura tavolo por permesi reguligitan, observeblan kaj sekuran komunikadon inter servoj per prokurilo.
Altnivela Dezajno
Monolitaj Problemoj
Snapchat originis kiel nub-bazita monolito bazita sur la Google App Engine. Tamen, ĉar la programo kreskis en populareco kaj akiris pli da uzantoj kaj datumoj, skaleblo iĝis problemo.
Plie, kun enorma eksplodradiuso ene de la monolito, tutsistemaj tumultoj estis pli eblaj. Unu el la problemoj de Snapchat estis difinita kiel "tragedio de la komunaĵo", en kiu funkcioj konkuris por aliro al rimedoj; funkcioj estis ŝargitaj en la tempo de lanĉo de la aplikaĵo, permesante al iuj funkcioj ŝargi pli rapide sed la aliaj ŝargi pli malrapide.
Inĝenieroj ankaŭ serĉis klaran videblecon, apartigon kaj proprieton de siaj komponentoj de evolua vidpunkto, tiel ke la servo povus esti fleksebla kaj efika.
transformo
Dum Snapchat disetendiĝis, la firmao rimarkis, ke ĝi bezonas malkonstrui sian monolitan infrastrukturon en pli malgrandajn, pli efikajn pecojn. Por disponigi malpliigitan latentecon, la organizo decidis evoluigi mikroserv-bazitan dezajnon.
Por plenumi tiujn celojn, Snapchat elektis ĝisdatigi sian programaron uzante Amazon DynamoDB, skalebla datumbaza servo NoSQL. La firmao povis redukti mezan latentecon je 20% kiel rezulto de siaj klopodoj.
La programo estis reverkita en multajn pli malgrandajn aplikojn fare de la korporacio. Snapchat komenciĝis per multaj aplikoj, inkluzive de fotilo, babilejo, memoroj, bildredaktado, enhavkonsumo kaj mapo. Kvankam integri tiujn programojn en ununuran monoliton estis oportuna por konsumantoj, ĝi prezentis severan teknikan problemon laŭ konservado de bona efikeco.
Por reverko, la korporacio establis multajn bazajn regulojn. Ne antaŭŝarĝu; ĉiu funkcio devus esti sia propra programo, kaj ĝi devus esti rapida. Snapchat haltigis modifojn en pluraj lokoj por ebligi la reverkon, igante ĝin strikte teknika tasko.
Pliaj funkcioj integriĝo
La fotila aplikaĵo de Snapchat havas lensojn, filtrilojn, bitmojis kaj la kapablon aldoni animaciojn de pliigita realeco, interalie. La babilejo de Snapchat ankaŭ permesas al uzantoj stoki fotojn, konservi babiladojn, aldoni miensimbolojn kaj pli.
La mapo de Snapchat, interalie, permesas vin kontroli amikojn, se ili volas, ke vi. Memoroj, fotoredaktado kaj konsumado de enhavo estas ĉiuj apartaj Snapchat-aplikoj kun siaj unikaj kapabloj.
Memoroj permesas konservi aŭ modifi fotojn aŭ filmetojn por posta uzo, kaj ankaŭ alŝuti aŭ sendi ilin. Uzantoj ankaŭ povas uzi bildoredaktadon por tranĉi filmojn, aldoni tekston, aldoni glumarkojn kaj pli.
La ekstera enhavo-konsumo de Snapchat rilatas al tio, kion ĝi montras al uzantoj surbaze de gamo da parametroj.
Mikroservoj
La programo dependis grandskale de JSON por plenumi retdemandojn tiutempe. Tamen, analizi JSON estis tempopostula kaj malefika. Snapchat uzis centralizitan retan administradon API por maski la uzon de JSON kiel efektiviga detalo por trakti ĉi tiun problemon.
Mikroservoj enkondukas la defiojn de aplikaĵa ŝtatadministrado, servokomunikado kaj fiaskoadministrado. Snapchat uzis malfermfontajn teknologiojn kiel Temporal por venki orkestrajn malfacilaĵojn por konstrui fortan kaj fidindan sistemon.
Kiel rezulto, la organizo decidis uzi servomaŝdezajnpadronon. Snapchat uzis Envoy, alian malfermfontan ilon, kiu funkcias kiel prokurilo, por atingi ĉi tiun ŝablonon. Sendito administris la fluon de servotrafiko per la infrastrukturo, donante al programistoj videblecon en eblajn malfacilaĵojn.
Snapchat kreis internan apon nomatan la Ŝalttabulo ene de la servo-maŝo. Switchboard funkciis kiel kontrolpanelo por la servoj de Snap, permesante al uzantoj ŝanĝi trafikon, administri servodependecojn (trajto kiu permesas al unu servo esti administrita dependa de la kondiĉo de aliaj), kaj dreni regionojn.
Por simpligi la kompleksecon de eblaj agordoj ene de servoj, Switchboard estis utiligita anstataŭe de elmontrado de la tuta Envoy API. Snap havas komunan internan kaj regionan reton por siaj mikroservoj danke al la servomaŝo.
Servoj ene de la sama regiono povus ligi unu kun la alia sen uzi la publikan Interreton, kaj neniu ekstera rettrafiko povus komuniki kun internaj retpartoj.
Nur la Enirejoj estus rajtigitaj elmontri sin al la interreto pro sekurecaj kialoj. La API-enirejoj, ekzemple, povus facile funkcii kiel antaŭpordoj, prilaborante petojn de klientoj/uzantoj kaj direktante ilin kune kun la reto.
Reto kaj API-Enirejo
Ĉiuj demandoj de la Snapchat-kliento venas per API Gateway. Ĝi uzas la saman Envoy-bildon kaj konektas al la sama Kontrolaviadilo kiel niaj internaj mikroservoj. Nia Kontrolaviadilo permesas al ni ebligi kutimajn Envoy-filtrilojn.
La aŭtentikigsistemoj de Snapchat, same kiel niaj tarifoj limigaj kaj ŝarĝaj teknologioj, estas pritraktitaj de ĉi tiuj filtriloj. Envoy uzas la Servan Reton por direkti petojn al la koncerna mikroservo post kiam la filtrila ĉeno estas kompleta.
konkludo
La API-enirejo de Snapchat direktas eksteran trafikon al la multaj funkcioj de la programo. La petoj de uzantoj modifi agordajn statojn estas administritaj de serviloj, kiuj tiam provizi datumojn kaj informoj reen al la multaj servoj de la app.
Ĝenerale, la nuna dezajno de Snapchat povas esti komparita kun pluraj programoj kurantaj sur ununura operaciumo, kiu ĉi-kaze estas la Snapchat-aplikaĵo. Mi tre klopodis provizi al vi altnivelan superrigardon pri la dezajno de Snapchat-sistemo. Mi esperas, ke vi trovis ĝin utila.
Lasi Respondon