Архитектура инстаграм: Архитектура Instagram
Архитектура Instagram
Instagram — всего лишь iOS, а теперь и Android, приложение для обмена фотографиями с друзьями. Последнее время находится на слуху благодаря новости о покупке проекта Facebook’ом за кругленькую сумму. Недавно один из основателей проекта, Mike Krieger, выступил на конференции с докладом о техническом аспекте проекта, который я и хотел бы вкратце пересказать.
Начало:
- 1 сервер слабее Macbook Pro
- 25к регистраций в первый день
- 2 разработчика
Сегодня:
- 40+ миллионов пользователей
- 100+ виртуальных серверов в EC2, в том числе:
- Проект куплен Facebook за 1 млрд. долл
- 1 миллион регистраций за 12 часов после запуска Android-версии
- 5 разработчиков
Технологии
- UbuntuLinux 11.04 — основная операционная система
- Python — основной язык программирования серверной части
- Django — фреймворк
- Amazon:
- EC2 — хостинг
- ELB — балансировка входящих HTTP-запросов
- Route53 — DNS
- S3 — хранение фотографий
- CloudFront — CDN
- nginx — второй уровень балансировки входящихHTTP-запросов
- gunicorn — WSGI-сервер
- HAProxy — балансировка нагрузки внутри системы
- PostgreSQL — основное хранилище данных
- postgis — поддержка гео-запросов
- pgfouine — отчеты на основе логов
- pgbouncer — создание пула соединений
- Redis — дополнительное хранилище данных
- Memcached — кэширование
- Gearman — очередь задач
- Solr — гео-поиск
- munin, statsd, pingdom — мониторинг
- Fabric — управление кластером
- xfs — файловая система
Философия
- Простота
- Минимизация операционных издержек
- Использование подходящих инструментов
История
- Забыли сделать favicon.
ico до запуска — в первый же день логи пестрили ошибками 404
- Для хранения данных использовали просто Django ORM и PostgreSQL (из-за postgis)
- Начали с одного слабого сервера, после успешного запуска решили переехать на EC2
- Довольно быстро пришлось вынести СУБД на отдельный сервер (виртуальный, естественно)
- Количество фотографий продолжало расти и расти, даже самый большой инстанс EC2 не справлялся
- Решили вертикально разделить данные на несколько баз, с использованием механизма routers из ORM, параллельно избавившись от внешних ключей
- Через несколько месяцев суммарный размер базы данных перевалил за 60Гб и перестало справляться и это решение
- Следующим шагом стало горизонтальное разбиение данных (sharding):
- Создали несколько тысяч логических баз данных.
- Распределили их по существенно меньшему количеству физических серверов (читай: виртуальных машин).
- Написали свой механизм определения где искать какую базу данных, с поддержкой миграции (вероятно тоже на основе routers).
- По последним данным под PostgreSQL используется 12+12 виртуальных машин с максимальной оперативной памятью (68.4Гб), а также сетевые диски EBS, объединенные в программный RAID посредством mdadm. Это необходимо, чтобы весь массив данных помещался в памяти, EBS не в состоянии обеспечить достаточную производительность.
- С некоторыми задачами лучше справляется Redis:
- Для каждого пользователя в Redis есть список идентификаторов новых фотографий от других пользователей, на которых он подписан.
- При отображении потока новых для пользователя фотографий делается выборка части такого списка, после чего посредством multiget достается подробная о них информация из memcached.
- Пробовали возложить на него задачу хранения списков подписчиков, но в итоге вернулись к решению на PostgreSQL с небольшим кэшированием.
- В Redis также хранится информация о сессиях.
- Несколько фактов о Redis:
- Так как все находится в памяти — очень быстрые операции записи и работы с множествами.
- Является не заменой, а дополнением к основному хранилищу данных.
- Redis хорош для структур данных, которые относительно ограничены.
- Отлично подходит для кэширования комплексных структур данных, где нужно большее, чем просто получить значение по ключу (например — счетчики, подмножества, проверка вхождения в множества).
- Механизм репликации (посредством slaveof) позволяет легко масштабировать операции чтения.
- Пользователи синхронно загружают фотографии на медиа-сервер с (опциональными) заголовком и месте на карте, все остальное происходит асинхронно посредством очередей, например:
- Сохраняются гео-метки, обновляется Solr (который впоследствии заменил postgis).
- Идентификатор нового фото добавляется в обсуждавшиеся выше списки для всех подписчиков автора.
- Поначалу использовали Apache +
mod_wsgi
для запуска Django, впоследствии перешли к gunicorn из-за меньшего потребления ресурсов и простоты настройки. - С недавних пор начали использовать Amazon ELB вместо DNS round-robin для первичной балансировки входяших HTTP-запросов, что позволило:
- избежать необходимости дешифровки SSL посредством nginx;
- ускорить исключение из балансировки проблемных серверов.
- Благодаря использованию xfs есть возможность «замораживать» и «размораживать» дисковые массивы при резервном копировании.
Подводим итоги
- Многие проблемы с масштабируемостью — результат банальных человеческих ошибок.
- Масштабирование = замена всех деталей в машине на скорости 150 км/ч.
- Заранее сложно узнать как в основном будут обращаться к данным, без реального использования.
- В первую очередь попытайтесь адаптировать известные Вам технологии и инструменты для создания простого и понятного решения, прежде чем бросаться на поиски чего-то нетривиального.
- Дополните свое основное хранилище более гибким компонентом, вроде Redis.
- Постарайтесь не использовать два инструмента для решения одной и той же задачи.
- Оставайтесь гибкими и ловкими = напоминайте себе о том, что на самом деле имеет значение.
- Разрабатывайте решения, к которым не придется постоянно возвращаться из-за их сбоев.
- Активное юнит- и функциональное тестирование стоят потраченного на них времени.
- DRY: не делайте одну и ту же работу несколько раз.
- Слабая связанность посредством уведомлений или сигналов позволяет легко менять структуру проекта.
- Дисковый ввод-вывод часто оказывается узким местом, особенно на EC2.
- Спускаться до C нужно только при необходимости, большую часть работы лучше делать в Python.
- Короткий цикл разработки — залог быстрого развития.
- Частые совместные рассмотрения кода нужны, чтобы все были в курсе происходящего.
- Не изобретайте велосипед.
- Окружите себя с толковыми консультантами.
- Культура открытости вокруг разработки.
- Делитесь с opensource сообществом.
- Фокусируйтесь на том, что вы делаете лучше всего.
- Вашим пользователям абсолютно без разницы, написали ли Вы собственную СУБД или нет.
- Не переоптимизируйте и не предполагайте заранее как сайт будет расти.
- Не рассчитывайте, что «кто-то еще присоединится к команде и разберется с этим».
- Для социальных стартапов очень мало, или даже совсем нет, нерешимых вопросов, связанных с масштабируемостью.
Упоминавшаяся во вступлении неприлично длинная презентация из 185 слайдов:
На видео, к сожалению, это выступление не записывалось.
Часть информации взята из технического блога Instagram.
13 апреля 2012 | Иван Блинков | Высокие нагрузки
Amazon Android CloudFront django EC2 ELB Fabric Facebook gearman gunicorn HAProxy Intagram iOS Linux Memcached Munin nginx ORM pgbouncer pgFouine Pingdom postgis PostgreSQL Python Redis Route53 S3 Solr statsd Ubuntu WSGI xfs Архитектура Instagram
10 лучших архитектурных Instagram аккаунтов
News
В 2012 году Facebook раскошелился на $1 млрд. в пользу маленькой компании под названием Instagram. Сегодня это сильный и глобальный инструмент в мире социальных медиа, площадка, где каждый день миллионы пользователей выражают себя через потрясающие фотографии.
Архитекторы, дизайнеры и фотографы не стали исключением. Предлагаем 10 лучших представителей данной области, на которых стоит подписаться. Если вы заинтересованы в развитие современной архитектуры, хотите быть в курсе последних тенденций или просто ищите вдохновение, подписывайтесь и наслаждайтесь снимками, демонстрирующими архитектуру и дизайн.
Alan Durnwirth @adurnwirth
Мобильный фотограф, дизайнер и просто энтузиаст из Сиэтла, любит обновлять Instagram снимками архитектуры родного города.
#frankgehry #architecture
Публикация от Alan Durnwirth (@adurnwirth)
Frederik Liisberg @frederikliisberg
Instagram принадлежит жителю Дании, который искусно демонстрирует богатство родного Копенгагена и любой другой архитектуры мира.
Gardens by the Bay/Singapore
Публикация от Frederik Liisberg (@frederikliisberg)
Christina @cm.images
Фотограф Кристина выгружает ошеломляющие снимки, подписка на нее обязательна.
shadowplay . #paris #architecturelovers
Публикация от christina (@cm.images)
Cieran Murphy @cieranmurphy
Сиаран Мерфи является независимым фотографом, живущим в Брисбене (Австралия). Он публикует фото, связанные с архитектурой, приключениями и стилем минимализм.
Death Valley View pt.2 Zabriskie Point Sunrise ———————— #deathvalley #zabriskiepoint #california #ourplanetdaily #sunrise @deathvalleynps @deathvalleycamp @death_valley_national_park_ @california
Публикация от C I E R A N — M U R P H Y (@cieranmurphy)
@institute_architects_aus
Австралийский институт архитекторов вдохновляет новичков и призывает всех познавать азы архитектурного мастерства.
Praxis International speaker Rahul Mehrotra is a prolific writer, practising architect, urban designer and educator. Mehrotra is the founder of RMA Architects in Mumbai which has designed projects for government and non-government agencies, corporate, individuals and institutions along with several unsolicited projects driven by the firm’s commitment to advocacy in the city of Mumbai. To purchase tickets and learn more about Praxis, click the link in the bio. #praxis2017 Photo credit: #RajeshVohra #CarlosChen
Публикация от @institute_architects_aus
Miruna Grec @arch_vortex
Молодой румынский студент-архитектор делится с миром своим вдохновением и не устает демонстрировать отменный вкус в дизайне и архитектуре.
Casa Brutale by OPA #concept #architecture #archilovers #architecturelovers #arquitetura #architectureporn #cliff #house #modern #design
Публикация от Arch Vortex (@arch_vortex)
@archifound
Профайл посвящен демонстрации лучшей архитектуры и дизайну интерьеров со всего мира.
The International Museum of the Baroque (Museo Internacional del Barroco) is a museum of Baroque art designed by Japanese architect Toyoo Itō located in Puebla, Mexico. It opened on February 4, 2016. #TheInternationalMuseumOfTheBaroque #Puebla #Mexico #Awesome #Photo | Ph. @josepascual94 #Archifound #architecture #building #architexture #city #buildings #skyscraper #urban #design #minimal #cities #town #street #art #архитектура #architecturelovers #lovesdomus #lines #love #beautiful #archilovers #architectureporn #建築
Публикация от Archifound © (@archifound)
@herzogdemeuron
Швейцарское архитектурное бюро Herzog & de Meuron было основано в 1978 и по сегодняшний день два основателя Жак Херцогом и Пьер де Мёроном продолжают трудиться над проектами по всей Европе, Северной и Южной Америке, и Азии.
A shared library and conference room on the top floor of the newly complete Fondazione Feltrinelli. Image © Mario Carrieri.
Публикация от Herzog & de Meuron (@herzogdemeuron)
Sebastian Weiss @le_blanc
Впечатляющий Instagram жителя Германии Себастьяна Вайсса. Он увлечен эстетикой и красотой городских форм. Кроме популярного профайла, Вайсс является фотографом и фото обозревателем Architectural Digest Germany.
Playing with lines and lights
Публикация от Sebastian Weiss (@le_blanc)
@superb_suburbs
Профайл дизайнера прольет свет на лучшие здания Великобритании и Ирландии.
Tags: архитектура, дизайн, Instagram, инстаграм, архитектор, проекты архитекторов, какой архитектор, Instagram аккаунт, instagram, архитектура 2017, Instagram аккаунты, Инстаграм, instagram, instagram, instagram, дизайн 2017 тенденции, Alan Durnwirth @adurnwirth, @superb_suburbs, Frederik Liisberg @frederikliisberg, Christina @cm.images, Cieran Murphy @cieranmurphy, @institute_architects_aus, Miruna Grec @arch_vortex, @archifound, Профайл, Miruna Grec — instagram, Christina — instagram, Frederik Liisberg — instagram, Alan Durnwirth, Alan Durnwirth — instagram, инстаграм, инстаграм аккаунты про архитектуру, архитектура инстаграм, архитекторы, дом архитектора, архитектор проекты домов, интерьер дизайнер, архитектурный бюро, современный дом проект, инстаграм архитекторов, стили архитектуры, современная архитектура, архитектура домов, интерьер дизайн, архитектурный проектирование, архитектура фото, фото футуристической архитектуры, архитектура здание, архитектура город, интерьер фотография, фото дизайн архитектура, инстагра фото, instagram аккаунт, instagram аккаунт, instagram аккаунт, здание, жилые здания, строительство зданий
Архитектура и база данных Instagram — как он хранит и ищет миллиарды изображений
Сегодня Instagram — самая популярная фото-ориентированная социальная сеть на планете. С более чем миллиардом пользователей он стал первым выбором для компаний, на котором можно проводить свои маркетинговые кампании.
В этой статье подробно рассматривается архитектура платформы и рассматриваются такие вопросы, как, например, какие технологии используются на сервере? Какие базы данных использует платформа? Как он хранит миллиарды фотографий, обрабатывая миллионы QPS (запросов в секунду)? Как он ищет контент в массиве данных, которые у него есть? Давайте узнаем.
Распределенные системы
Полный список похожих статей о распределенных системах и реальных архитектурах здесь.
Серверный код работает на Django Python. Все веб-серверы и асинхронные серверы работают в распределенной среде и не имеют состояния.
На приведенной ниже диаграмме показана архитектура Instagram:
Источник изображения: Instagram Серверная часть использует различные технологии хранения, такие как Cassandra, PostgreSQL, Memcache и Redis, для предоставления персонализированного контента пользователям.
Если вы хотите освоить базы данных и проектирование распределенных систем, ознакомьтесь с учебным курсом «От нуля до архитектора программного обеспечения», состоящим из трех курсов, которые помогут вам понять проектирование распределенных систем благодаря подробному обсуждению различных компонентов и концепций системы, начиная с нуля.
Асинхронное поведениеRabbitMQ и Celery выполняют асинхронные задачи, такие как отправка уведомлений пользователям и другие системные фоновые процессы.
Celery — это асинхронная очередь задач, основанная на распределенной передаче сообщений, ориентированная на операции в реальном времени. Он также поддерживает планирование. Рекомендуемый брокер сообщений для celery — RabbitMQ.
RabbitMQ, с другой стороны, является популярным брокером сообщений с открытым исходным кодом, написанным с использованием протокола AMQP Advanced Messaging Queuing Protocol.
Gearman используется для распределения задач между несколькими узлами в системе и для асинхронной обработки задач, таких как загрузка мультимедиа и т. д. Это платформа приложений для распределения задач на другие машины или процессы, которые больше подходят для выполнения этих конкретных задач. Он имеет широкий спектр приложений, начиная от высокодоступных веб-сайтов и заканчивая передачей событий резервного копирования базы данных.
Вычисление трендовых хэштегов на платформе
Базовая часть трендов — это приложение для обработки потоков, которое содержит четыре узла/компонента, соединенных линейно.
Источник изображения: InstagramРоль узлов состоит в том, чтобы потреблять поток журналов событий и создавать ранжированный список трендового контента, т.
Узел препроцессораУзел препроцессора прикрепляет необходимые данные, необходимые для применения фильтров на исходном носителе, к которому прикреплены метаданные.
Узел анализатора
Узел анализатора извлекает все хэштеги, прикрепленные к изображению, и применяет к нему фильтры.
Узел счетчика Узел счетчика отслеживает счетчики для каждого хэштега в зависимости от времени. Все данные счетчика хранятся в кеше, а также сохраняются для долговечности.
Узел ранжирования
Роль узла ранжирования заключается в вычислении рейтинга трендов хэштегов. Тенденции обслуживаются из кэша чтения, который представляет собой Memcache, а база данных — Postgres 9.0046 .
Используемые базы данных @InstagramPostgreSQL является основной базой данных приложения, в ней хранится большая часть данных платформы, таких как пользовательские данные, фотографии, теги, мета-теги и т. д.
По мере роста платформы Популярность и объем данных со временем становились огромными, команда инженеров Insta размышляла над различными решениями NoSQL для масштабирования и, наконец, решила разделить существующую базу данных PostgreSQL так, чтобы она лучше всего соответствовала их требованиям.
Чтобы получить более глубокое представление о распределенных базах данных, например о том, как они обрабатывают параллельный трафик, рост данных и т. д., ознакомьтесь с моим курсом по проектированию распределенных систем — Проектирование современных распределенных веб-приложений как профессионал
Говоря о масштабировании базы данных с помощью сегментирования и других средств, эта статья База данных YouTube — как она хранит так много видео без нехватки места? — интересное чтение.
Кластер основной базы данных Instagram содержит 12 реплик в разных зонах и включает 12 экземпляров Quadruple Extra Large Memory.
Hive используется для архивирования данных. Это программное обеспечение для хранения данных, созданное на основе Apache Hadoop для запросов данных и возможностей аналитики. Запланированный пакетный процесс запускается через равные промежутки времени для архивирования данных из базы данных PostgreSQL в Hive.
Vmtouch, инструмент для изучения и управления кешем файловой системы Unix и Unix-подобных серверов, используется для управления данными в памяти при перемещении с одной машины на другую.
Использование Pgbouncer для объединения соединений PostgreSQL при подключении к внутреннему веб-серверу привело к значительному повышению производительности.
База данных Redis в памяти используется для хранения ленты активности, сеансов и других данных приложения в реальном времени.
Memcache — система кэширования в распределенной памяти с открытым исходным кодом, используемая для кэширования во всей службе.
Управление данными в кластереДанные в кластере в конечном счете согласуются, уровни кэша совмещены с веб-серверами в одном центре обработки данных, чтобы избежать задержек.
Данные подразделяются на глобальные и локальные, что помогает команде масштабироваться. Глобальные данные реплицируются в разных центрах обработки данных в разных географических зонах. С другой стороны, локальные данные ограничиваются определенными центрами обработки данных.
Если вы хотите понять, как облако развертывает рабочие нагрузки глобально в зонах доступности и центрах обработки данных, как работают кластеры и многое другое. Ознакомьтесь с моим курсом по облачным вычислениям, не зависящим от платформы.
Первоначально серверная часть приложения размещалась на AWS, но позже была перенесена в центры обработки данных Facebook. Это упростило интеграцию Instagram с другими сервисами Facebook, сократило задержку и позволило им использовать фреймворки, инструменты для крупномасштабного развертывания, созданные командой инженеров Facebook.
Серверный код Instagram работает на #Django #Python. #PostgreSQL является основной #базой данных приложения. Узнайте больше здесь #distributedsystems #softwarearchitecture
Нажмите, чтобы написать твит
МониторингПри таком большом количестве экземпляров службы мониторинг играет ключевую роль в обеспечении работоспособности и доступности службы.
Munin — это инструмент мониторинга ресурсов, сети и инфраструктуры с открытым исходным кодом, который Instagram использует для отслеживания показателей службы и получения уведомлений о любых аномалиях.
StatsD сетевой демон используется для отслеживания статистики, такой как счетчики и таймеры. Счетчики в Instagram используются для отслеживания таких событий, как регистрация пользователей, количество лайков и т. д. Таймеры используются для определения времени создания каналов и других событий, которые выполняются пользователями в приложении. Эти статистические данные почти в реальном времени и позволяют разработчикам немедленно оценивать изменения системы и кода.
Dogslow Промежуточное программное обеспечение Django используется для наблюдения за запущенными процессами, и делается снимок любого процесса, занимающего больше времени, чем указано промежуточным программным обеспечением, и файл записывается на диск.
Pingdom используется для внешнего мониторинга веб-сайта, обеспечивая ожидаемую производительность и доступность. PagerDuty используется для уведомлений и реагирования на инциденты.
Теперь давайте перейдем к архитектуре поиска.
Instagram изначально использовал Elasticsearch для своей функции поиска, но позже перешел на Unicorn, социальную поисковую систему, созданную Facebook собственными силами.
Unicorn поддерживает поиск в Facebook и масштабируется до индексов, содержащих триллионы документов. Это позволяет приложению сохранять местоположения, пользователей, хэштеги и т. д., а также отношения между этими объектами.
Говоря о поисковой инфраструктуре Insta, она имеет денормализованные хранилища данных для пользователей, местоположений, хэштегов, медиа и т. д.
Эти хранилища данных также можно назвать документами, которые сгруппированы в наборы для обработки с помощью эффективных операций с наборами, таких как И-ИЛИ и НЕ.
Инфраструктура поиска имеет систему под названием Slipstream, которая разбивает загруженные пользователем данные, передает их через Firehose и добавляет в поисковые индексы.
Данные, хранящиеся в этих поисковых индексах, больше ориентированы на поиск, в отличие от обычного сохранения загруженных данных в БД PostgreSQL.
Ниже приведена схема архитектуры поиска
Источник изображения: InstagramЕсли вы не знаете о Hive, Thrift, Scribe. Прочитайте эту статью, какую базу данных использует Facebook? Это даст вам представление о том, как Facebook хранит пользовательские данные.
Instagram изначально использовал #Elasticsearch для своей функции поиска, но позже перешел на #Unicorn, поисковую систему с поддержкой социальных графов, созданную Facebook собственными силами. #distributedsystems #softwarearchitecture
Нажмите, чтобы твитнуть
Ссылки:
Поисковая архитектура Instagram
Популярное в Instagram
Шардинг в Instagram
Ребята, вот и все. Статья будет постоянно обновляться по мере развития архитектуры Instagram. Я Шиванг. Вы можете поймать меня на LinkedIn здесь. Если вы нашли контент полезным, поделитесь им со своей сетью для лучшего охвата. До следующей записи в блоге. Ваше здоровье!
Архитектура системы Instagram. Пожалуйста, хлопайте и делитесь, если вам это нравится… | от JIN
Пожалуйста, хлопайте и делитесь, если вам понравилась эта статья.
Я считаю, что Instagram — это приложение, в котором большинство людей делятся своими ежедневными историями и записывают свои живые воспоминания, потому что это бесплатный сервис для обмена фотографиями и видео и социальных сетей.
Функциональные требования
- Пользователи загружают фотографии или видео
- Пользователи могут просматривать фотографии и видео
- Пользователи могут искать по названиям фотографий строка поиска
- Создать новостную ленту для каждого пользователя, на которого он подписан
- Может архивировать альбом фотографий
- Может делиться своими историями в чате
- Может блокировать/ограничивать других пользователей
- Может лайкать и комментировать публикации других пользователей
- Пользователи могут создавать post
Нефункциональные требования
- Высокая масштабируемость
- Высокая согласованность
- Высокая доступность
- Высокая надежность
- Пользовательские данные никогда не должны быть потеряны)0174
- Максимальная задержка для создания ленты новостей составляет 150 мс.
Теперь проведем некоторые математические расчеты для . Расчет размера данных. запросы на чтение = 100* количество запросов на загрузку (запись) Активные пользователи: Знаменитости Запросов в секунду (QPS) *60)) = 6,6 к/с 3. 2/(24*60*60))= 3,5 тыс./с 5. Размер данных Оценка емкости Дизайн системных компонентов 4 одновременных подключений будет занят записью, а запись (загрузка) будет держать соединение открытым долгое время Итак, лучше иметь 2 БД для записи и чтения соответственно. Кроме того, разделение запросов на чтение и запись фотографий позволит нам независимо масштабировать и оптимизировать каждый процесс. Следующая диаграмма может работать для процесса чтения-записи. 2. Обслуживание новостной ленты 3. Балансировка нагрузки Data Architecture Database Design 2. 3. Данные, относящиеся к подписчикам и подписчикам пользователей UserId всех людей, следующих за пользователями Итак, нам нужно 2 разных варианта баз данных: Модель данных Интерфейс/API Архитектура системы Пост Лента Пост Подача Дополнительные ресурсы medium.com www.educative.io techtakshila.com www.codercrunch.com Комментарий
д.) этих фотографий и передать их алгоритму ранжирования, чтобы определить, какие фотографии должны быть размещены в ленте новостей на основе метаданных.
Данные, относящиеся к фотографиям (AWS S3) photo
1) реляционные базы данных (MySQL)
2) базы данных NoSQL (Cassandra) Instagram Engineering — Medium
Instagram гордится своим бережливым приложением.
Но по мере того, как количество инженеров и функций растет, растут и проблемы…
Проектирование Instagram — Grokking the System Design Interview
Давайте разработаем сервис обмена фотографиями, такой как Instagram, где пользователи могут загружать фотографии в поделиться ими с другими пользователями…
Design Photo Sharing Platform — Instagram
Отказ от ответственности: _**Это наш подход к разработке системы обмена фотографиями, такой как Instagram, для загрузки и обмена пользователями…
интервьюер задает вопрос о системном дизайне во время интервью: «Дизайн Instagram». Прежде чем мы приступим к работе над…
Instagram Engineering — Medium
Прочтите письмо от Instagram Engineering на Medium. Каждый день Instagram Engineering и тысячи других голосов читают…
medium.com
Проектирование архитектуры Instagram — Дизайн системы — Nlogn
Предпосылкой для изучения дизайна архитектуры Instagram является то, как спроектировать службу сокращения URL-адресов в виде крошечного…
nlogn. in
Дизайн системы Анализ Instagram
Как вы разрабатываете сервис для обмена фотографиями, такой как Instagram?
в направлении datascience.com
Если вы нашли какую-либо из моих статей полезной или полезной, пожалуйста, рассмотрите возможность бросить мне кофе, чтобы помочь поддержать мою работу или оказать мне покровительство😊, используя
Patreon
Ko-fi.com
buymeacoffee
И последнее, но не менее важное, если вы не планируете стать одним из участников Medium используя следующую ссылку. Я получу часть вашего членского взноса без каких-либо дополнительных затрат для вас.
Присоединяйтесь к Medium по моей реферальной ссылке — JIN
Как участник Medium, часть вашего членского взноса идет авторам, которых вы читаете, и вы получаете полный доступ к каждой истории…
jinlow.medium.com
Получайте электронные письма каждый раз, когда JIN KANG LOW публикует.
![](/800/600/http/i.pinimg.com/736x/f5/45/ba/f545ba1746bf027087aae59c20d97e29.jpg)