Успех Instagram, у которого даже нет базы данных

Успех Instagram, у которого даже нет базы данных

Один вопрос, который все инженеры Instagram слышат, куда бы они ни пошли:«Какой твой стек?»

Их ответ всегда одинаков и невероятно прост: у них нет базы данных!

Их база данных — это среда многих технологий, их собственные взгляды на популярные системы управления реляционными базами данных, которые в настоящее время поддерживают крупнейшую в мире социальную сеть на основе изображений. Он достаточно мощный, чтобы управлять более 14 миллионами пользователей и более 40 миллиардами фотографий (до сегодняшнего дня).

По словам инженеров Instagram, их основные принципы при выборе базы данных были довольно просты. Список включает в себя:

  • Сохранить это простым
  • Использование доступных ресурсов
  • Выбор проверенных и популярных решений

Эти критерии сделали процесс создания и управления базой данных намного проще, чем думали многие. Если вы нам не верите, проверьте их выбор ОС и серверов приложений в следующем разделе нашей статьи.

Выбор ОС в Instagram сохранил их надолго

Инстаграм работал на вечно всемогущем Ubuntu Linux 11.04 (Natty Narwhal) на Amazon EC2 еще в 11 году. Достаточно невероятно, что весь коллектив инженеров Instagram изначально состоял всего из трех инженеров.

Natty Narwhal был достаточно надежным, чтобы беспрепятственно работать на EC2. По состоянию на 2015 год Instagram насчитывает 20 членов команды, которые занимаются поиском, анализом тенденций, исследованием и инфраструктурой данных.

Благодаря наличию всего трех инженеров и постоянно меняющимся потребностям со стороны пользовательского интерфейса, сам хостинг никогда не был вариантом для Instagram до тех пор, пока не вмешался Facebook. Большинство его частей размещаются в частных частных облаках для обеспечения безопасности и защиты всей частной информации. Большая часть потребностей Instagram в хостинге позаботилась о Facebook с момента его большой покупки в 2012 году.

Когда в 2013 году начались мысли о создании команды Data-грамм, над мобильными приложениями, управлением базами данных и бэкэнд-процессами работало всего 35 инженеров.

Именно тогда несколько инженеров в Facebook преодолели разрыв между процессами управления данными в Instagram и Facebook. Они разработали новую инфраструктуру данных, которая обеспечит сквозное воздействие для небольшой команды и которая будет соответствовать структуре инженера Instagram.

instagram  фото
instagram фото

Выбор базы данных Instagram никогда не подводил пользователей

Еще в то время, когда Instagram работал один в большом плохом мире, инженеры и специалисты по обработке данных выбрали смесь серверов NoSQL и SQL для поддержки массового роста. Instagram сегодня насчитывает около 250 миллионов активных пользователей, и тем не менее база данных достаточно пластична, чтобы вместить постоянный приток огромных массивов данных.

В 2011 году Instagram, несомненно, использовал сервисы Amazon и многие программные решения с открытым исходным кодом для решения своих проблем с данными. От сбора данных до защиты данных, команда использовала сторонние решения, а не создавала свои собственные СУБД. Они в значительной степени полагались на внешние сервисы, которым не нужно было создавать и управлять собранными данными из разных часовых поясов.

Instagram фото
instagram фото

Мы еще не нашли удаленных администраторов баз данных в истории Instagram, но многие другие сайты и приложения социальных сетей использовали удаленных администраторов баз данных в свои первые годы для сбора, сопоставления и курирования данных миллионов пользователей по всему миру.

Серверы приложений: простота — это всегда красота

Согласно недавнему сообщению от команды разработчиков Instagram, их серверы приложений работают под управлением Django с PostgreSQL. Их серверные стеки также включают Cassandra, которая, как мы все знаем, является плинтусом для всех продуктов Facebook.

После интеграции в Instagram Stories команда разработчиков работала с IG Disk Cache, IG JSON Parser, IGListKitUICollectionView, структурой привязки данных для iOSx и библиотекой Rebound Animation для устройств Android. Они также используют FLEX для устройств iOS, чтобы сделать свои приложения и новые интеграции более кросс-платформенными.

Они используют Redis для питания своего основного канала. Он также регулярно питает систему своего сеанса и системы приложений. Поскольку данные Redis должны помещаться в доступную память, группа запускает для них несколько четырехкратных очень больших экземпляров памяти.

Обычно они запускают Redis в настройке главной реплики, чтобы сэкономить память и время. Это намного быстрее и экономит сервер тоже. Для кэширования Instagram по-прежнему использует Memcached, как и большинство других популярных веб-сервисов и приложений. Поскольку количество пользователей и объем данных со временем растут, их экземпляры Memcached также улучшаются.

Регулярные службы мониторинга поддерживают команду впереди

Мониторинг является частью задачи команды.

Еще в 2011 году они начали с Munin для составления графика всех показателей конечных пользователей в системе. То же самое предупредило команду, если что-то пошло не так.

С 2015 года команда больше полагается на Python и Python-Munin для написания пользовательских плагинов для своего веб-сервиса. Эти плагины могут эффективно предоставлять показатели, которые не являются частью системного уровня. В список входят фотографии, загружаемые пользователями за минуту, количество входов в минуту и ​​комментарии к сообщению влиятельного лица. Sentry всегда был надежным приложением Django с открытым исходным кодом для сообщения об ошибках, связанных с Python, в системе.

Их успех в плавной интеграции новых функций заключается в процессе тестирования кроссплатформенной совместимости со времен концепции. Они тщательно проверяют свои новые фильтры, функции видео и галереи на нескольких устройствах до последнего срока. Они также используют множество инструментов из Facebook и сервисов. Это помогает нам плавно запускать эти новые функции Instagram практически на всех устройствах, например видео в хорошем качестве

Instagram видео

Сама потребность в приложении, которое может работать на нескольких платформах, приводит к необходимости простых, но мощных стеков СУБД и простых серверов. Минимализм всей установки, включая инфраструктуру данных в бэкэнде Instagram, делает его отличным приложением для каждого устройства и любой операционной системы.