Snapchat е добре познат сред младежите и тийнейджърите. Вероятно сте над 25, ако не можете да разберете как работи. Snapchat, едно от най-популярните приложения за социални медии, предоставя на децата и юношите точно това, което искат: лесен метод за споделяне на обикновени събития, като същевременно ги кара да изглеждат готини.
За разлика от Facebook и Twitter, които записват и публикуват всичко, което правите, Snapchat използва съобщения, които трябва да изчезнат (вижте как не го правят).
Има много за Snapchat, а ако сте разработчик, това е още повече. И така, тази публикация ще ви даде представа за Snapchat от високо ниво дизайн на системата и много повече прозрения.
Въведение
Snapchat е базиран в САЩ социални мрежи приложение, което позволява на потребителите да се свързват незабавно, да споделят изображения и др.
- Съобщенията и изображенията (или снимките) имат ограничение от 24 часа. Насърчава хората да споделят своите истории в групи.
- Snap Map позволява на потребителите да видят на картата къде са техните приятели.
- Спомените напомнят на потребителите за снимки, които са запазили или споделили година по-късно.
- Snapchat е изключително популярен сред по-младите поколения, особено сред тийнейджърите. Има 319 милиона активни потребители на приложението и 5.4 милиарда снимки се изпращат всеки ден.
Важни условия за проектиране
Монолитна архитектура – Еднослойно приложение, което работи независимо от други приложения, е известно като монолит (монолитна архитектура). Монолитът е проектиран да изпълнява и управлява всички дейности, необходими за изпълнение на задача. Приложението изпълнява всички функции от началото до края.
микро Услуги – Това е полярна противоположност на монолитите. микро Услуги е архитектурен подход, който организира приложение като колекция от услуги. Тези услуги се използват за контролиране на много аспекти на приложението. Клиент прави поръчка, сервитьор я взема и я доставя, а готвач я приготвя. В този пример всеки компонент функционира независимо и отделно от останалите; никой не знае какво точно правят другите и никой няма достъп до същата информация.
JSON: Това е текстов формат, който може да се използва за показване на JavaScript обекти, литерали, масиви и данни. Този текстово базиран формат е предназначен да бъде лесен за четене и писане, както и да бъде смилаем от софтуера. JSON обикновено се използва за прехвърляне на данни и информация между сървъри и онлайн приложения.
Оркестровка: Техниката за автоматизиране на много операции е известна като оркестрация. Тези работни места включват конфигурация на компютърна система и софтуер, координация и администрация.
пълномощник: Проксито действа като посредник между клиент, който търси ресурс, и сървъра, който го предоставя.
Mesh: Service mesh е модел на софтуерна архитектура, който добавя слой към инфраструктурен слой, за да позволи регулирана, видима и сигурна комуникация между услуги чрез прокси.
Дизайн на високо ниво
Монолитни проблеми
Snapchat възникна като облачен монолит, базиран на Google App Engine. Въпреки това, тъй като програмата нарасна в популярност и спечели повече потребители и данни, мащабируемостта се превърна в проблем.
Освен това, с огромен радиус на експлозия в рамките на монолита, смущенията в цялата система бяха по-възможни. Един от проблемите на Snapchat беше определен като „трагедия на общите блага“, в която функциите се състезаваха за достъп до ресурси; функциите се зареждаха по време на стартиране на приложението, позволявайки на определени функции да се зареждат по-бързо, но другите да се зареждат по-бавно.
Инженерите също се стремят към ясна видимост, разделяне и собственост върху техните компоненти от гледна точка на разработката, така че услугата да може да бъде гъвкава и ефективна.
Трансформация
С разширяването на Snapchat фирмата осъзна, че трябва да разбие своята монолитна инфраструктура на по-малки, по-ефективни части. За да осигури намалено забавяне, организацията реши да разработи дизайн, базиран на микроуслуги.
За да изпълни тези цели, Snapchat избра да актуализира софтуера си с помощта на Amazon DynamoDB, мащабируема услуга за база данни NoSQL. Фирмата успя да намали средната латентност с 20% в резултат на своите усилия.
Приложението беше пренаписано в множество по-малки приложения от корпорацията. Snapchat започна с множество приложения, включително камера, чат, спомени, редактиране на снимки, използване на съдържание и карта. Въпреки че интегрирането на тези програми в един монолит беше удобно за потребителите, то представляваше сериозен технически проблем по отношение на поддържането на добра производителност.
За пренаписване корпорацията установи много основни правила. Не зареждайте предварително; всяка функция трябва да бъде собствено приложение и трябва да е бързо. Snapchat спря модификациите на няколко места, за да позволи пренаписването, което го прави чисто техническа задача.
Интегриране на допълнителни функции
Приложението за камера на Snapchat има лещи, филтри, bitmojis и възможност за добавяне на анимации с добавена реалност, наред с други неща. Приложението за чат на Snapchat също така позволява на потребителите да съхраняват снимки, да записват разговори, да добавят емотикони и др.
Картата на Snapchat, наред с други неща, ви позволява да наблюдавате приятели, ако искат от вас. Спомените, редактирането на снимки и консумацията на съдържание са отделни приложения на Snapchat с техните уникални възможности.
Спомените ви позволяват да съхранявате или променяте снимки или видеоклипове за по-късна употреба, както и да ги качвате или изпращате. Потребителите могат също така да използват редактиране на снимки, за да изрязват филми, да добавят текст, да добавят стикери и др.
Консумацията на външно съдържание на Snapchat се отнася до това, което показва на потребителите въз основа на набор от параметри.
микро Услуги
Програмата зависеше до голяма степен от JSON за извършване на мрежови заявки по това време. Разборът на JSON обаче отнема много време и е неефективен. Snapchat използва API за централизирано управление на мрежата, за да маскира използването на JSON като детайл за внедряване, за да се справи с този проблем.
Микроуслугите въвеждат предизвикателствата на управлението на състоянието на приложението, комуникацията на услугата и управлението на отказите. Snapchat използва технологии с отворен код като Temporal, за да преодолее трудностите при оркестрацията, за да изгради силна и надеждна система.
В резултат на това организацията реши да използва модел на мрежест дизайн на услугата. Snapchat използва Envoy, друг инструмент с отворен код, който действа като прокси, за да постигне този модел. Envoy управлява потока на трафика на услугата през инфраструктурата, като дава на разработчиците видимост за потенциални затруднения.
Snapchat създаде вътрешно приложение, наречено Switchboard в мрежата на услугата. Switchboard служи като контролен панел за услугите на Snap, позволявайки на потребителите да пренасочват трафика, да управляват зависимостите на услугата (функция, която позволява една услуга да бъде управлявана в зависимост от състоянието на други) и да източват региони.
За да се опрости сложността на потенциалните конфигурации в рамките на услугите, Switchboard беше използван вместо излагане на целия API на Envoy. Snap има обща вътрешна и регионална мрежа за своите микроуслуги благодарение на мрежата на услугата.
Услугите в рамките на един и същи регион могат да се свързват помежду си, без да използват публичния интернет, и никакъв външен мрежов трафик не може да комуникира с части от вътрешната мрежа.
Само шлюзовете ще бъдат упълномощени да се излагат на интернет от съображения за сигурност. API шлюзовете, например, могат лесно да служат като входни врати, обработвайки заявки от клиенти/потребители и маршрутизирайки ги заедно с мрежата.
Мрежа и API Gateway
Всички заявки от клиента на Snapchat идват през API Gateway. Той използва същото изображение на Envoy и се свързва със същата контролна равнина като нашите вътрешни микроуслуги. Нашата контролна равнина ни позволява да активираме персонализирани филтри Envoy.
Системите за удостоверяване на Snapchat, както и нашите технологии за ограничаване на скоростта и намаляване на натоварването, се управляват от тези филтри. Envoy използва Service Mesh, за да насочва заявки към съответната микроуслуга, след като филтърната верига е завършена.
Заключение
API шлюзът на Snapchat насочва външния трафик към множеството функции на приложението. Заявките на потребителите за промяна на конфигурационните състояния се управляват от сървъри, които след това предоставят данни и информация обратно към многобройните услуги на приложението.
Като цяло, настоящият дизайн на Snapchat може да се сравни с няколко програми, работещи на една операционна система, която в този случай е приложението Snapchat. Опитах се много да ви предоставя преглед на високо ниво на дизайна на системата Snapchat. Надявам се да ви е било полезно.
Оставете коментар