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 есть линзы, фильтры, битмоджи и возможность добавлять анимацию дополненной реальности, среди прочего. Приложение чата Snapchat также позволяет пользователям хранить фотографии, сохранять разговоры, добавлять смайлики и многое другое.
Карта Snapchat, среди прочего, позволяет вам следить за друзьями, если они этого хотят. Воспоминания, редактирование фотографий и потребление контента — все это отдельные приложения Snapchat со своими уникальными возможностями.
Воспоминания позволяют хранить или изменять фотографии или видео для последующего использования, а также загружать или отправлять их. Пользователи также могут использовать редактирование изображений для вырезания фильмов, добавления текста, наклеек и т. д.
Потребление внешнего контента Snapchat относится к тому, что он показывает пользователям на основе ряда параметров.
Microservices
В то время программа сильно зависела от JSON для выполнения сетевых запросов. Однако синтаксический анализ JSON был трудоемким и неэффективным. Snapchat использовал API централизованного управления сетью, чтобы замаскировать использование JSON в качестве детали реализации для решения этой проблемы.
Микросервисы создают проблемы управления состоянием приложений, связи между службами и управления сбоями. Snapchat использовал технологии с открытым исходным кодом, такие как Temporal, чтобы преодолеть трудности с оркестровкой и создать сильную и надежную систему.
В результате организация решила использовать шаблон проектирования сервисной сетки. Snapchat использовал Envoy, еще один инструмент с открытым исходным кодом, который действует как прокси, для достижения этого шаблона. Envoy управлял потоком служебного трафика через инфраструктуру, давая разработчикам представление о потенциальных трудностях.
Snapchat создал внутреннее приложение под названием Switchboard в сервисной сетке. Коммутатор служил панелью управления службами Snap, позволяя пользователям переключать трафик, управлять зависимостями служб (функция, которая позволяет управлять одной службой в зависимости от состояния других) и сливать регионы.
Чтобы упростить сложность потенциальных конфигураций в сервисах, вместо раскрытия всего API Envoy был использован Switchboard. Snap имеет общую внутреннюю и региональную сеть для своих микросервисов благодаря сервисной сетке.
Службы внутри одного региона могли соединяться друг с другом без использования общедоступного Интернета, и никакой внешний сетевой трафик не мог связываться с частями внутренней сети.
Только шлюзы будут иметь право открывать себя в Интернете по соображениям безопасности. Шлюзы API, например, могут легко служить входными дверями, обрабатывая запросы от клиентов/пользователей и направляя их по сети.
Сеть и API-шлюз
Все запросы от клиента Snapchat проходят через шлюз API. Он использует тот же образ Envoy и подключается к той же плоскости управления, что и наши внутренние микросервисы. Наша плоскость управления позволяет нам включать пользовательские фильтры посланников.
Эти фильтры обрабатывают системы аутентификации Snapchat, а также наши технологии ограничения скорости и сброса нагрузки. Envoy использует Service Mesh для маршрутизации запросов к соответствующему микросервису после завершения цепочки фильтров.
Заключение
Шлюз API Snapchat направляет внешний трафик на многие функции приложения. Запросы пользователей на изменение состояний конфигурации обрабатываются серверами, которые затем предоставить данные и информацию обратно в многочисленные службы приложения.
В целом, нынешний дизайн Snapchat можно сравнить с несколькими программами, работающими в одной операционной системе, которой в данном случае является приложение Snapchat. Я очень старался предоставить вам общий обзор дизайна системы Snapchat. Я надеюсь, что вы сочли полезным.
Оставьте комментарий