powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / На чем написан Instagram
25 сообщений из 49, страница 1 из 2
На чем написан Instagram
    #37753795
Небольшое описание технологий и некоторые факты из истории развития Instagram, который в последнее время на слуху из-за продажи его фейсбуку за миллиард баксов. http://www.insight-it.ru/masshtabiruemost/arkhitektura-instagram/
Собственно, сервис как оказалось написан на Django :)

Недавно один из основателей проекта, Mike Krieger, выступил на конференции с докладом о техническом аспекте проекта, который я и хотел бы вкратце пересказать.


Статистика

Начало:
1 сервер слабее Macbook Pro
25к регистраций в первый день
2 разработчика
Сегодня:
40+ миллионов пользователей
100+ виртуальных серверов в EC2, в том числе:
Проект куплен Facebook за 1 млрд. долл
1 миллион регистраций за 12 часов после запуска Android-версии
5 разработчиков
Технологии

Ubuntu Linux 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 сообществом.
Фокусируйтесь на том, что вы делаете лучше всего.
Вашим пользователям абсолютно без разницы, написали ли Вы собственную СУБД или нет.
Не переоптимизируйте и не предполагайте заранее как сайт будет расти.
Не рассчитывайте, что «кто-то еще присоединится к команде и разберется с этим».
Для социальных стартапов очень мало, или даже совсем нет, нерешимых вопросов, связанных с масштабируемостью.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37753822
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторS3 — хранение фотографий
Я чего-то не понимаю? Но почему s3 считается дешевым?
Дешевый сервер можно купить за 80$ в месяц (1.5ТБ, или если не использовать дисковый массив, то можно взядть 2 сервера и иметь 3ТБ, разница лишь в том, что во втором случае будем иметь большую производительность за те же деньги). Путем не сложных вычислений можно посчитать сколько будет стоить 1ГБ/мес и эти цифры будут на много дешевле, чем хранилище в амазоне.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37753834
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И кстати, что сегодня за высер этой статьи в инет? На всех известных мне it форумах создано по теме.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37754193
Hett,
Инстаграмм сделал недавно доклад о технологиях которые они используют - видимо людям это интересно, поэтому много где размещено, наверно.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37754355
blinkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HettИ кстати, что сегодня за высер этой статьи в инет? На всех известных мне it форумах создано по теме.Да, мои статьи часто расходятся по всей IT части рунета.

Подборка статей о других успешных интернет-проектах .
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37754400
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, я вижу как они распространяются
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37754852
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А давайте его зобаним.
Этот человек лично виноват в том, что все современные разработчики проблемы решают кешированием в мемкеше.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37754854
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть ВСЕ ПРОБЛЕМЫ кешированием
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37754972
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да енто реклама амаозна
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37754998
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettавторS3 — хранение фотографий
Я чего-то не понимаю? Но почему s3 считается дешевым?
Дешевый сервер можно купить за 80$ в месяц (1.5ТБ, или если не использовать дисковый массив, то можно взядть 2 сервера и иметь 3ТБ, разница лишь в том, что во втором случае будем иметь большую производительность за те же деньги). Путем не сложных вычислений можно посчитать сколько будет стоить 1ГБ/мес и эти цифры будут на много дешевле, чем хранилище в амазоне.
а теперь еще посчитайте сколько нужно потратить на специалистов обслуживающих это(вы же не будете работать в крупном проекте за гроши, а захотите от 3 и более килобаксов в месяц, минимум), предусмотреть масшабирование, высокую нагрузку, бекапирование информации, высокая доступность данных, простота работы с хранилищем....
и сразу можно понять что дешевле именно сервисы типа амазона.

быстрый старт проекта, платишь за само хранение информации а не за всю инфраструктуру поддерживающую проект, готовый АПИ для работы с сервисом + все вышеперечисленные плюшки.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755035
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Затраты на хранение прямо пропорциональны масштабу проекта, поэтому чем больше проект, тем не выгоднее использовать подобные сервисы. ИМХО.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755041
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett, ну люди столкнулись со взрывным ростом популярности и просто не успевали среагировать. амазон и компания популярны среди вот таких вот хреновин для соцсетей. когда не знаю стрельнет ли очередной клон фермы или нет. в 99% случаев не стреляет и никто ничего не теряет кроме 3$/мес на зарплату настройщику мемкеша.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755053
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЗатраты на хранение прямо пропорциональны масштабу проекта, поэтому чем больше проект, тем не выгоднее использовать подобные сервисы. ИМХО.
кто сказал что пропорциональны?
зависимость как раз разная в каждом случае.
-использование стороних сервисов наоборот уменьшает стоимость хранения от объема(посмотрите их расценки, чем больше брать тем дешевле будет обходиться)
-зачем молодому проекту терабайт? ведь данных еще мало. он же будет простаивать. зачем за это платить? амазон дает возможность платить именно за потребленный объем данных, увеличивая его по мере надобности.
-данные разбросаны по серверам по всему миру, это дает максимальную скорость работы с данными для каждого региона, так как юзаются ближайшие к нему хранилища... ну и т.д. плюсы очевидны
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755080
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uHettЗатраты на хранение прямо пропорциональны масштабу проекта, поэтому чем больше проект, тем не выгоднее использовать подобные сервисы. ИМХО.
кто сказал что пропорциональны?
зависимость как раз разная в каждом случае.
-использование стороних сервисов наоборот уменьшает стоимость хранения от объема(посмотрите их расценки, чем больше брать тем дешевле будет обходиться)
-зачем молодому проекту терабайт? ведь данных еще мало. он же будет простаивать. зачем за это платить? амазон дает возможность платить именно за потребленный объем данных, увеличивая его по мере надобности.
-данные разбросаны по серверам по всему миру, это дает максимальную скорость работы с данными для каждого региона, так как юзаются ближайшие к нему хранилища... ну и т.д. плюсы очевидны
в доказательство своих слов, ну покажите что-ли хоть один популярный файлообменник построенный на амазоне.
ну или еще какой-нибудь ультрадешевый сервис не связаный с соцсетями и просиранием венчурного капитала.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755140
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindв доказательство своих слов, ну покажите что-ли хоть один популярный файлообменник построенный на амазоне.

Dropbox для вас достаточно популярен? )))

netwindну или еще какой-нибудь ультрадешевый сервис не связаный с соцсетями и просиранием венчурного капитала

ультрадешевый для кого? для пользователей или для самих создателей? я соцсетями почти не пользуюсь поэтому ничего конкретного не подскажу. да и не вижу связи - как это станет доказательством моих слов. для доказательства посмотрите сами расценки амазона. и легкость подключения к нему приложений и все сопутствующие плюшки.

переубеждать вас тоже не собираюсь. я просто констатирую факты. амазон не единственный уже давно.
"облачных" хостингов щас как грязи, и становится еще больше. а знаете почему? потому что на них есть огромный спрос. а почему спрос? а потому что это выгодно во многих случаях при создании различных стартапов. и люди умеющие считать деньги это прекрасно понимают. рынок сам расставляет все точки на i. если бы это было невыгодно - это не сталобы так дико набирать популярность.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755163
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r unetwindв доказательство своих слов, ну покажите что-ли хоть один популярный файлообменник построенный на амазоне.

Dropbox для вас достаточно популярен? )))

netwindну или еще какой-нибудь ультрадешевый сервис не связаный с соцсетями и просиранием венчурного капитала

ультрадешевый для кого? для пользователей или для самих создателей? я соцсетями почти не пользуюсь поэтому ничего конкретного не подскажу. да и не вижу связи - как это станет доказательством моих слов. для доказательства посмотрите сами расценки амазона. и легкость подключения к нему приложений и все сопутствующие плюшки.

переубеждать вас тоже не собираюсь. я просто констатирую факты. амазон не единственный уже давно.
"облачных" хостингов щас как грязи, и становится еще больше. а знаете почему? потому что на них есть огромный спрос. а почему спрос? а потому что это выгодно во многих случаях при создании различных стартапов. и люди умеющие считать деньги это прекрасно понимают. рынок сам расставляет все точки на i. если бы это было невыгодно - это не сталобы так дико набирать популярность.
И что, dropbox арендует мощности у amazon или какой-то другой компании по конским ценам? По-моему там своя инфраструктура.

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

Это все уже проверенные ниши, где звезд с неба не хватают, внимательно считают деньги, генерируют внушительный трафик и все равно имеют свою стабильную прибыль.
Вот у людей, поработав с ними и возникает справедливый вопрос : кому это надо?
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755181
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, похоже что все еще арендует, хотя пишут, что подумывал слезть с иглы.

Ну вопрос у многих возникает как при конских ценах хранилища они все еще не закрылись : http://www.quora.com/Dropbox-uses-Amazon-S3-to-store-files-how-can-they-afford-to-provide-2GB-free-per-user
пишуть, что скорее всего имеет место огромная экономия от не хранения дубликатов. Да и весьма скромный размер для бесплатного аккаунта там - 2 гб.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755188
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindИ что, dropbox арендует мощности у amazon или какой-то другой компании по конским ценам? По-моему там своя инфраструктура.

а вы сначала узнайте чья там инфраструктура - а потом спорьте). информация об этом есть на самом сайте dropbox.

netwindЯ имел ввиду скорее не ультрадешевый, а проект с небольшой нормой прибыли. Не попадающий в какой-нибудь модный тренд, зарабатывающий на рекламе и имеющий основной доход именно от сервиса использующий хранилище, а не как вспомогательный сервис. Я, правда, не понимаю какой дурак будет запускать еще один файлообменник, но вроде они постоянно появляются и закрываются. Потом, всякие там онлайн-кинотеатры с бесплатными фильмами тоже не торопятся использовать облачные сервисы для раздачи файлов.

Это все уже проверенные ниши, где звезд с неба не хватают, внимательно считают деньги, генерируют внушительный трафик и все равно имеют свою стабильную прибыль.
Вот у людей, поработав с ними и возникает справедливый вопрос : кому это надо?
я незнаю что вы имели в виду, и понимать нехочу честно говоря - слишком размазанное описание сами незнаете чего.

я достаточно привел аргументов. а вот вы нет. поэтому я непонимаю что конкретно вы хотите мне доказать?
- что амазон s3 (в частности) убыточен и никому не нужен?
о чем мы спорим?
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755213
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uя достаточно привел аргументов. а вот вы нет. поэтому я непонимаю что конкретно вы хотите мне доказать?
- что амазон s3 (в частности) убыточен и никому не нужен?
о чем мы спорим?
Доказывать не хочу. Хочу, как всегда, для достижения корыстных целей, выяснить портрет типичного прибыльного проекта-клиента amazon s3, чтобы в будущем принимать решение об его использовании в тех или иных условиях.
По вашим словам получается, что s3 выгоден чуть ли не всем, но я не могу с этим согласиться.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755228
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindПо вашим словам получается, что s3 выгоден чуть ли не всем, но я не могу с этим согласиться.
я не говорил что он выгоден всем.
я только немного описал плюсы его использования.
это просто инструмент а не панацея. использовать или нет - решение индивидуальное.

когда он выгоден? мне кажется:
-если нужно быстро опробовать идею-проект и не охота (или нет возможности,знаний) поднимать свою инфраструктуру для этого.
с другой стороны
-если уже есть большой проект, нужно посчитать все затраты и сравнить, есть большая вероятность что переведя проект на s3 затраты будут меньше а профит больше. ибо не нужно держать штат админов поддерживающих свои хранилища, парк серверов именьшится, доступность,стабильность(а иногда и скорость) доступа к данным повысится.

конечно это все индивидуально.

встречно.
опишите когда s3(и его аналоги) невыгоден или неудобен?
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755233
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uвстречно.
опишите когда s3(и его аналоги) невыгоден или неудобен?
yandex + "смотреть бесплатно фильмы без смс халява приди" - тысячи примеров.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755350
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторвстречно.
опишите когда s3(и его аналоги) невыгоден или неудобен?
Мне он показался не выгоден именно для хранения больших объемов информации (0.5+ПБ)
Если нужно куда то засунуть 5 гиг, то понятно, что проще и дешевле будет взять тот же амазон.
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755403
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettМне он показался не выгоден именно для хранения больших объемов информации (0.5+ПБ)
Если нужно куда то засунуть 5 гиг, то понятно, что проще и дешевле будет взять тот же амазон.
twitter хранит там чтото и не жалуется, и явно экономит, в сравнении с тем если бы ему самому пришлось организовывать, строить, поддерживать, настраивать свои дата центры для этого. они делают деньги, и если бы это было для них невыгодно - давно бы ушли с амазона.

по теме там помимо примеров кода есть и прикидочные рассуждения когда облако бывает дешевле
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755631
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u по теме там помимо примеров кода есть и прикидочные рассуждения когда облако бывает дешевле
одна история офигительней другой просто.
если верить ibm, так все должны купить по мейнфрейму срочно
...
Рейтинг: 0 / 0
На чем написан Instagram
    #37755637
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r u они делают деньги, и если бы это было для них невыгодно - давно бы ушли с амазона.

А зачем ?
Делать деньги можно своими силами и сегодня, а можно убедить венчурный капитал, что ты будешь делать деньги завтра.
Ну а потом уволиться. Во втором случае наемный технический директор даже больше выиграет.
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / На чем написан Instagram
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]