Snapchat добра вядомы сярод падлеткаў і падлеткаў. Вам напэўна больш за 25, калі вы не можаце зразумець, як гэта працуе. Snapchat, адно з самых папулярных прыкладанняў у сацыяльных сетках, дае дзецям і падлеткам менавіта тое, што яны жадаюць: просты спосаб падзяліцца звычайнымі падзеямі, а таксама зрабіць іх крутымі.
У адрозненне ад Facebook і Twitter, якія запісваюць і публікуюць усё, што вы робіце, Snapchat выкарыстоўвае паведамленні, якія павінны знікаць (паглядзіце, як гэтага не адбываецца).
Пра Snapchat ёсць шмат, а калі вы распрацоўшчык, то яшчэ больш. Такім чынам, гэты пост дасць вам уяўленне пра Snapchat на высокім узроўні дызайн сістэмы і многае іншае.
Увядзенне
Кампанія Snapchat знаходзіцца ў ЗША сацыяльныя сеткі прыкладанне, якое дазваляе карыстальнікам імгненна падключацца, абменьвацца выявамі і г.д.
- Паведамленні і выявы (або здымкі) маюць 24-гадзінны абмежаванне па часе. Заахвочвае людзей дзяліцца сваімі гісторыямі ў групах.
- Snap Map дазваляе карыстальнікам бачыць на карце, дзе знаходзяцца іх сябры.
- Успаміны нагадваюць карыстальнікам фатаграфіі, якія яны захавалі або падзяліліся праз год.
- Snapchat надзвычай папулярны сярод маладых пакаленняў, асабліва падлеткаў. У дадатку 319 мільёнаў актыўных карыстальнікаў, кожны дзень адпраўляецца 5.4 мільярда здымкаў.
Важныя ўмовы дызайну
Маналітная архітэктура – Аднаузроўневае прыкладанне, якое працуе незалежна ад іншых прыкладанняў, вядома як маналіт (маналітная архітэктура). Маналіт прызначаны для выканання і апрацоўкі ўсіх дзеянняў, неабходных для выканання задачы. Дадатак выконвае ўсе функцыі ад пачатку да канца.
Microservices – Гэта поўная супрацьлегласць маналітам. Microservices гэта архітэктурны падыход, які арганізуе прыкладанне як сукупнасць сэрвісаў. Гэтыя сэрвісы выкарыстоўваюцца для кантролю многіх аспектаў прыкладання. Кліент робіць заказ, афіцыянт прымае і разносіць, а кухар рыхтуе. У гэтым прыкладзе кожны кампанент функцыянуе незалежна і асобна ад іншых; ніхто дакладна не ведае, што робяць іншыя, і ніхто не мае доступу да той жа інфармацыі.
JSON: Гэта тэкставы фармат, які можна выкарыстоўваць для адлюстравання аб'ектаў JavaScript, літэралаў, масіваў і даных. Гэты тэкставы фармат прызначаны для простага чытання і запісу, а таксама для засваення праграмным забеспячэннем. JSON звычайна выкарыстоўваецца для перадачы дадзеных і інфармацыі паміж серверамі і інтэрнэт-праграмамі.
Аркестроўка: Тэхніка аўтаматызацыі многіх аперацый вядомая як аркестроўка. Гэтыя працоўныя месцы ўключаюць канфігурацыю камп'ютэрнай сістэмы і праграмнага забеспячэння, каардынацыю і адміністраванне.
Даверанасць: Проксі дзейнічае як пасярэднік паміж кліентам, які шукае рэсурс, і серверам, які яго прадастаўляе.
меш: Сервісная сетка - гэта шаблон архітэктуры праграмнага забеспячэння, які дадае ўзровень да ўзроўню інфраструктуры, каб дазволіць рэгуляваную, назіральную і бяспечную сувязь паміж службамі праз проксі.
Дызайн высокага ўзроўню
Маналітныя праблемы
Snapchat паўстаў як воблачны маналіт на аснове Google App Engine. Аднак з ростам папулярнасці праграмы і павелічэннем колькасці карыстальнікаў і даных маштабаванасць стала праблемай.
Акрамя таго, з вялізным радыусам выбуху ўнутры маналіту, узрушэнні ўсёй сістэмы былі больш магчымыя. Адна з праблем Snapchat была вызначана як «трагедыя агульнага карыстання», у якой функцыі змагаліся за доступ да рэсурсаў; функцыі загружаліся падчас запуску прыкладання, што дазваляла некаторым функцыям загружацца хутчэй, а іншым - павольней.
Інжынеры таксама шукалі яснай бачнасці, падзелу і валодання сваімі кампанентамі з пункту гледжання распрацоўкі, каб сэрвіс мог быць гнуткім і эфектыўным.
Пераўтварэнне
Па меры пашырэння Snapchat фірма зразумела, што ёй трэба разбіць сваю маналітную інфраструктуру на больш дробныя і больш эфектыўныя часткі. Каб забяспечыць меншую затрымку, арганізацыя вырашыла распрацаваць дызайн на аснове мікрасэрвісаў.
Каб выканаць гэтыя мэты, Snapchat вырашыў абнавіць сваё праграмнае забеспячэнне з дапамогай Amazon DynamoDB, маштабаванай службы базы дадзеных NoSQL. У выніку сваіх намаганняў фірма змагла скараціць сярэднюю затрымку на 20%.
Прыкладанне было перапісана карпарацыяй у мноства меншых прыкладанняў. Snapchat пачаўся са шматлікіх прыкладанняў, уключаючы камеру, чат, успаміны, рэдагаванне малюнкаў, спажыванне кантэнту і карту. Нягледзячы на тое, што інтэграцыя гэтых праграм у адзіны маналіт была зручнай для спажыўцоў, яна выклікала сур'ёзную тэхнічную праблему з пункту гледжання падтрымання добрай прадукцыйнасці.
Для перапісвання карпарацыя ўстанавіла мноства асноўных правілаў. Не загружайце папярэдне; кожная функцыя павінна быць асобным дадаткам, і яно павінна быць хуткім. Snapchat спыніў мадыфікацыі ў некалькіх месцах, каб уключыць перапісванне, што зрабіла гэта выключна тэхнічнай задачай.
Інтэграцыя дадатковых функцый
Дадатак камеры Snapchat мае лінзы, фільтры, bitmojis і магчымасць дадаваць анімацыю дапоўненай рэальнасці, сярод іншага. Прыкладанне для чата Snapchat таксама дазваляе карыстальнікам захоўваць фатаграфіі, захоўваць размовы, дадаваць смайлікі і многае іншае.
Карта Snapchat, сярод іншага, дазваляе сачыць за сябрамі, калі яны гэтага хочуць. Успаміны, рэдагаванне фатаграфій і спажыванне кантэнту - гэта асобныя прыкладанні Snapchat са сваімі унікальнымі магчымасцямі.
Успаміны дазваляюць захоўваць або змяняць фатаграфіі або відэа для наступнага выкарыстання, а таксама загружаць або адпраўляць іх. Карыстальнікі таксама могуць выкарыстоўваць рэдагаванне малюнкаў, каб выразаць фільмы, дадаваць тэкст, дадаваць налепкі і многае іншае.
Спажыванне знешняга кантэнту Snapchat адносіцца да таго, што ён паказвае карыстальнікам на аснове шэрагу параметраў.
Microservices
У той час праграма для выканання сеткавых запытаў у значнай ступені залежала ад JSON. Аднак разбор JSON заняў шмат часу і быў неэфектыўным. Snapchat выкарыстаў цэнтралізаваны API кіравання сеткай, каб замаскіраваць выкарыстанне JSON у якасці дэталі рэалізацыі для вырашэння гэтай праблемы.
Мікрасэрвісы прадстаўляюць праблемы кіравання станам прыкладанняў, камунікацыі сэрвісаў і кіравання збоямі. Snapchat выкарыстаў тэхналогіі з адкрытым зыходным кодам, такія як Temporal, каб пераадолець цяжкасці аркестроўкі і пабудаваць моцную і надзейную сістэму.
У выніку арганізацыя вырашыла выкарыстаць шаблон дызайну сэрвіснай сеткі. Snapchat выкарыстаў Envoy, яшчэ адзін інструмент з адкрытым зыходным кодам, які дзейнічае як проксі, каб дасягнуць гэтай мадэлі. Envoy кіраваў патокам службовага трафіку праз інфраструктуру, дазваляючы распрацоўнікам бачыць патэнцыйныя цяжкасці.
Snapchat стварыў унутраную праграму пад назвай Switchboard у сэрвіснай сетцы. Камутатар служыў панэллю кіравання службамі Snap, дазваляючы карыстальнікам перамяшчаць трафік, кіраваць залежнасцямі паслуг (функцыя, якая дазваляе кіраваць адной службай у залежнасці ад стану іншых) і зліваць рэгіёны.
Каб спрасціць складанасць патэнцыйных канфігурацый у службах, Switchboard быў выкарыстаны замест раскрыцця ўсяго API Envoy. Snap мае агульную ўнутраную і рэгіянальную сетку для сваіх мікрасэрвісаў дзякуючы сэрвіснай сеткі.
Сэрвісы ў адным рэгіёне маглі падключацца адзін да аднаго без выкарыстання публічнага Інтэрнэту, і знешні сеткавы трафік не мог звязвацца з часткамі ўнутранай сеткі.
Толькі шлюзы будуць мець права выстаўляць сябе ў Інтэрнэт з меркаванняў бяспекі. Шлюзы API, напрыклад, могуць лёгка служыць уваходнымі дзвярыма, апрацоўваючы запыты ад кліентаў/карыстальнікаў і накіроўваючы іх разам з сеткай.
Шлюз сеткі і API
Усе запыты ад кліента Snapchat паступаюць праз API Gateway. Ён выкарыстоўвае той жа вобраз Envoy і падключаецца да той жа плоскасці кіравання, што і нашы ўнутраныя мікрасэрвісы. Наша плоскасць кіравання дазваляе нам уключыць карыстальніцкія фільтры Envoy.
Сістэмы аўтэнтыфікацыі Snapchat, а таксама нашы тэхналогіі абмежавання хуткасці і зняцця нагрузкі апрацоўваюцца гэтымі фільтрамі. Envoy выкарыстоўвае Service Mesh для маршрутызацыі запытаў у адпаведны мікрасэрвіс пасля завяршэння ланцужка фільтраў.
заключэнне
Шлюз API Snapchat накіроўвае знешні трафік да шматлікіх функцый прыкладання. Запыты карыстальнікаў на змяненне стану канфігурацыі кіруюцца серверамі, якія затым даць дадзеныя і інфармацыю назад у шматлікія сэрвісы прыкладання.
У цэлым, цяперашні дызайн Snapchat можна параўнаць з некалькімі праграмамі, якія працуюць у адной аперацыйнай сістэме, якой у дадзеным выпадку з'яўляецца дадатак Snapchat. Я вельмі стараўся даць вам агульны агляд дызайну сістэмы Snapchat. Я спадзяюся, што вы знайшлі гэта карысным.
Пакінуць каментар