Snapchat жаштар жана өспүрүмдөр арасында белгилүү. Эгер анын кантип иштээрин түшүнө албасаңыз, балким 25тен ашкандырсыз. Эң популярдуу социалдык медиа тиркемелеринин бири болгон Snapchat балдарга жана өспүрүмдөргө алар каалаганын так камсыздайт: кадимки окуяларды бөлүшүүнүн оңой ыкмасы, ошол эле учурда аларды сонун кылып көрсөтүү.
Сиз жасаган бардык нерсени жазып жана жарыялаган Facebook жана Twitterден айырмаланып, Snapchat жок болуп кетиши керек болгон билдирүүлөрдү колдонот (алардын кантип жок экенин караңыз).
Snapchat жөнүндө көп нерсе бар, эгер сиз иштеп чыгуучу болсоңуз, андан да көп. Ошентип, бул пост сизге Snapchatтын жогорку деңгээлдеги көрүнүшүн берет системалык дизайн жана башка көптөгөн түшүнүктөр.
тааныштыруу
Snapchat АКШда жайгашкан коомдук тармакташуу колдонуучуларга дароо байланышууга, сүрөттөрдү бөлүшүүгө жана башкаларга мүмкүнчүлүк берген колдонмо.
- Кабарлар жана сүрөттөр (же сүрөттөр) 24 сааттык убакыт чегине ээ. Адамдарды өз окуяларын топтордо бөлүшүүгө үндөйт.
- Snap Map колдонуучуларга достору кайда экенин картадан көрүүгө мүмкүнчүлүк берет.
- Эскерүүлөр колдонуучуларга бир жылдан кийин сактаган же бөлүшкөн сүрөттөрүн эске салат.
- Snapchat жаш муундар, өзгөчө өспүрүмдөр арасында абдан популярдуу. Колдонмодо 319 миллион активдүү колдонуучу бар жана күн сайын 5.4 миллиард сүрөт жөнөтүлөт.
Маанилүү дизайн шарттары
Монолиттик архитектура – Башка тиркемелерден көз карандысыз иштеген бир баскычтуу тиркеме монолит (монолиттик архитектура) деп аталат. Монолит тапшырманы аткаруу үчүн зарыл болгон бардык иш-аракеттерди аткарууга жана башкарууга арналган. Тиркеме башынан аягына чейин бардык функцияларды аткарат.
микрокаржылоо кызмат – Бул монолиттерге карама-каршы. микрокаржылоо кызмат кызматтардын жыйындысы катары тиркемени уюштурган архитектуралык ыкма. Бул кызматтар колдонмонун көптөгөн аспектилерин көзөмөлдөө үчүн колдонулат. Кардар буйрутма берет, официант аны алып жеткирет, ашпозчу даярдайт. Бул мисалда ар бир компонент өз алдынча жана башкалардан өзүнчө иштейт; башкалардын эмне кылып жатканын эч ким так билбейт жана эч ким бирдей маалыматка жете албайт.
JSON: Бул JavaScript объекттерин, литералдарын, массивдерин жана берилиштерин көрсөтүү үчүн колдонула турган текстке негизделген формат. Бул текстке негизделген формат окууга жана жазууга жөнөкөй, ошондой эле программалык камсыздоо менен сиңирүү үчүн арналган. JSON адатта серверлер менен онлайн тиркемелеринин ортосунда маалыматтарды жана маалыматтарды өткөрүү үчүн колдонулат.
айкалыштыруу: Көптөгөн операцияларды автоматташтыруу ыкмасы оркестрлөө деп аталат. Бул жумуштарга компьютер системасын жана программалык камсыздоону конфигурациялоо, координациялоо жана башкаруу кирет.
Proxy: Прокси ресурсту издеп жаткан кардар менен аны камсыз кылган сервердин ортосунда ортомчу катары иштейт.
сетка: Кызмат торчосу - прокси аркылуу кызматтардын ортосунда жөнгө салынуучу, байкоого боло турган жана коопсуз байланышты камсыз кылуу үчүн инфраструктура катмарына катмар кошкон программалык архитектура үлгүсү.
Жогорку деңгээлдеги дизайн
Монолиттик көйгөйлөр
Snapchat Google App Engine негизиндеги булуттагы монолит катары пайда болгон. Бирок, программа популярдуулукка ээ болуп, колдонуучулардын жана маалыматтардын көбөйүшүнө байланыштуу масштабдуулук көйгөйгө айланган.
Кошумчалай кетсек, монолиттин ичиндеги жарылуунун чоң радиусу менен жалпы системанын бузулушу мүмкүн болгон. Snapchat'тын көйгөйлөрүнүн бири "жалпылардын трагедиясы" катары аныкталган, мында функциялар ресурстарга жетүү үчүн атаандашкан; өзгөчөлүктөр колдонмону ишке киргизүү убагында жүктөлүп, кээ бир функциялардын тезирээк жүктөлүшүнө, ал эми башкаларынын жайыраак жүктөлүшүнө мүмкүнчүлүк түзүлдү.
Инженерлер ошондой эле кызмат ийкемдүү жана эффективдүү болушу үчүн өнүгүү позициясынан алардын компоненттеринин так көрүнүүсүн, бөлүнүшүн жана ээлик кылуусун издешти.
кайра
Snapchat кеңейген сайын, фирма өзүнүн монолиттүү инфраструктурасын майдараак, натыйжалуураак бөлүктөргө бөлүү керектигин түшүндү. Төмөнкү кечиктирүүнү камсыз кылуу үчүн уюм микросервистерге негизделген дизайнды иштеп чыгууну чечти.
Бул максаттарды ишке ашыруу үчүн, Snapchat Amazon DynamoDB, масштабдуу NoSQL маалымат базасы кызматы аркылуу өзүнүн программасын жаңыртууну чечти. Фирма өз аракеттеринин натыйжасында медианалык кечиктирүүнү 20% кыскарта алды.
Колдонмо корпорация тарабынан көптөгөн майда тиркемелерге кайра жазылган. Snapchat көптөгөн тиркемелерден баштады, анын ичинде камера, чат, эскерүүлөр, сүрөттөрдү түзөтүү, мазмунду керектөө жана карта. Бул программаларды бирдиктүү монолитке интеграциялоо керектөөчүлөр үчүн ыңгайлуу болгонуна карабастан, жакшы иштешин камсыз кылуу жагынан олуттуу техникалык көйгөйдү жаратты.
Кайра жазуу үчүн корпорация көптөгөн негизги эрежелерди белгилеген. Алдын ала жүктөө; ар бир өзгөчөлүк өзүнүн колдонмосу болушу керек жана ал тез болушу керек. Snapchat кайра жазууну иштетүү үчүн бир нече жерлерде өзгөртүүлөрдү токтотуп, аны техникалык тапшырмага айлантты.
Кошумча функцияларды интеграциялоо
Snapchat'тын камера колдонмосунда линзалар, чыпкалар, битможилер жана башка нерселер менен катар кошумчаланган реалдуулук анимацияларын кошуу мүмкүнчүлүгү бар. Snapchat'тын чат колдонмосу да колдонуучуларга сүрөттөрдү сактоого, сүйлөшүүлөрдү сактоого, эмотикондорду кошууга жана башкаларга мүмкүнчүлүк берет.
Snapchat картасы, башка нерселер менен катар, досторуңузду кааласаңыз, көзөмөлдөөгө мүмкүнчүлүк берет. Эстеликтер, сүрөттөрдү түзөтүү жана мазмунду керектөө - бул өзгөчө мүмкүнчүлүктөрү бар өзүнчө Snapchat колдонмолору.
Эстеликтер сүрөттөрдү же видеолорду кийинчерээк колдонуу үчүн сактоого же өзгөртүүгө, ошондой эле аларды жүктөп же жөнөтүүгө мүмкүндүк берет. Колдонуучулар тасмаларды кесүү, текст кошуу, стикерлерди кошуу жана башкалар үчүн сүрөттү түзөтүүнү колдоно алышат.
Snapchat'тын тышкы мазмунду керектөө ал колдонуучуларга бир катар параметрлердин негизинде көрсөткөн нерсени билдирет.
микрокаржылоо кызмат
Программа ошол учурда тармактык суроо-талаптарды аткаруу үчүн JSONге көп көз каранды болчу. Бирок, JSON талдоо убакытты талап кылган жана натыйжасыз болгон. Snapchat бул көйгөйдү чечүү үчүн ишке ашыруу чоо-жайы катары JSON колдонууну маска үчүн борборлоштурулган тармак башкаруу API колдонгон.
Микросервистер колдонмонун абалын башкаруу, кызматтык байланыш жана каталарды башкаруу көйгөйлөрүн киргизет. Snapchat күчтүү жана ишенимдүү системаны куруу үчүн оркестрдин кыйынчылыктарын жеңүү үчүн Temporal сыяктуу ачык булактуу технологияларды колдонгон.
Натыйжада, уюм кызмат сетка дизайн үлгүсүн колдонууну чечти. Snapchat бул үлгүгө жетүү үчүн прокси катары иштеген дагы бир ачык булактуу курал болгон Envoy колдонду. Элчи инфраструктура аркылуу тейлөө трафигинин агымын башкарып, иштеп чыгуучуларга мүмкүн болуучу кыйынчылыктарды көрүүгө мүмкүнчүлүк берди.
Snapchat кызмат тармагында Switchboard деп аталган ички колдонмону түздү. Коммутатор Snap кызматтары үчүн башкаруу панели катары кызмат кылып, колдонуучуларга трафикти которууга, кызматтык көз карандылыктарды башкарууга (бир кызматты башкалардын абалына жараша башкарууга мүмкүндүк берген функция) жана аймактарды агызууга мүмкүндүк берген.
Кызматтардын ичиндеги потенциалдуу конфигурациялардын татаалдыгын жөнөкөйлөтүү үчүн, Switchboard бүт Envoy APIди ачуунун ордуна колдонулган. Snap кызмат торунун аркасында өзүнүн микросервистери үчүн жалпы ички жана аймактык тармакка ээ.
Бир эле аймактын ичиндеги кызматтар коомдук Интернетти колдонбостон бири-бири менен байланыша алат жана эч кандай тышкы тармак трафиги ички тармактын бөлүктөрү менен байланыша албайт.
Коопсуздук максатында интернетке чыгууга шлюздарга гана уруксат берилет. Мисалы, API шлюздары оңой эле алдыңкы эшиктер катары кызмат кыла алат, кардарлардын/колдонуучулардын суроо-талаптарын иштеп чыгуу жана аларды тармак менен бирге багыттоо.
Network & API Gateway
Snapchat кардарынын бардык суроолору API Gateway аркылуу келет. Ал бир эле Элчи сүрөтүн колдонот жана ички микросервистерибиз менен бир эле Control Plane менен туташат. Биздин Control Plane ыңгайлаштырылган Элчи чыпкаларын иштетүүгө мүмкүнчүлүк берет.
Snapchat'тын аутентификация системалары, ошондой эле биздин ылдамдыкты чектөө жана жүктү төгүү технологияларыбыз ушул чыпкалар тарабынан иштетилет. Элчи чыпка тизмеги аяктагандан кийин тиешелүү микросервиске суроо-талаптарды багыттоо үчүн Service Mesh колдонот.
жыйынтыктоо
Snapchat'тын API шлюзи тышкы трафикти колдонмонун көптөгөн функцияларына багыттайт. Колдонуучулардын конфигурация абалын өзгөртүү өтүнүчү серверлер тарабынан башкарылат, алар андан кийин маалыматтарды берүү жана колдонмонун көптөгөн кызматтарына маалымат.
Жалпысынан, Snapchatтын азыркы дизайнын бир операциялык тутумда иштеген бир нече программаларга салыштырууга болот, бул учурда Snapchat колдонмосу. Мен сизге Snapchat тутумунун дизайнын жогорку деңгээлдеги сереп менен камсыз кылуу үчүн абдан аракет кылдым. Бул сизге жардам берди деген үмүттөмүн.
Таштап Жооп