|
|
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
Небольшое описание технологий и некоторые факты из истории развития 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 сообществом. Фокусируйтесь на том, что вы делаете лучше всего. Вашим пользователям абсолютно без разницы, написали ли Вы собственную СУБД или нет. Не переоптимизируйте и не предполагайте заранее как сайт будет расти. Не рассчитывайте, что «кто-то еще присоединится к команде и разберется с этим». Для социальных стартапов очень мало, или даже совсем нет, нерешимых вопросов, связанных с масштабируемостью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 09:52:14 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
авторS3 — хранение фотографий Я чего-то не понимаю? Но почему s3 считается дешевым? Дешевый сервер можно купить за 80$ в месяц (1.5ТБ, или если не использовать дисковый массив, то можно взядть 2 сервера и иметь 3ТБ, разница лишь в том, что во втором случае будем иметь большую производительность за те же деньги). Путем не сложных вычислений можно посчитать сколько будет стоить 1ГБ/мес и эти цифры будут на много дешевле, чем хранилище в амазоне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 11:07:31 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
И кстати, что сегодня за высер этой статьи в инет? На всех известных мне it форумах создано по теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 11:24:23 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
Hett, Инстаграмм сделал недавно доклад о технологиях которые они используют - видимо людям это интересно, поэтому много где размещено, наверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2012, 20:06:23 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
HettИ кстати, что сегодня за высер этой статьи в инет? На всех известных мне it форумах создано по теме.Да, мои статьи часто расходятся по всей IT части рунета. Подборка статей о других успешных интернет-проектах . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2012, 02:12:57 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
Ага, я вижу как они распространяются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2012, 10:21:22 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
А давайте его зобаним. Этот человек лично виноват в том, что все современные разработчики проблемы решают кешированием в мемкеше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2012, 23:38:57 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
то есть ВСЕ ПРОБЛЕМЫ кешированием ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2012, 23:39:38 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
да енто реклама амаозна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 06:44:42 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
HettавторS3 — хранение фотографий Я чего-то не понимаю? Но почему s3 считается дешевым? Дешевый сервер можно купить за 80$ в месяц (1.5ТБ, или если не использовать дисковый массив, то можно взядть 2 сервера и иметь 3ТБ, разница лишь в том, что во втором случае будем иметь большую производительность за те же деньги). Путем не сложных вычислений можно посчитать сколько будет стоить 1ГБ/мес и эти цифры будут на много дешевле, чем хранилище в амазоне. а теперь еще посчитайте сколько нужно потратить на специалистов обслуживающих это(вы же не будете работать в крупном проекте за гроши, а захотите от 3 и более килобаксов в месяц, минимум), предусмотреть масшабирование, высокую нагрузку, бекапирование информации, высокая доступность данных, простота работы с хранилищем.... и сразу можно понять что дешевле именно сервисы типа амазона. быстрый старт проекта, платишь за само хранение информации а не за всю инфраструктуру поддерживающую проект, готовый АПИ для работы с сервисом + все вышеперечисленные плюшки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 08:17:08 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
Затраты на хранение прямо пропорциональны масштабу проекта, поэтому чем больше проект, тем не выгоднее использовать подобные сервисы. ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 09:21:57 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
Hett, ну люди столкнулись со взрывным ростом популярности и просто не успевали среагировать. амазон и компания популярны среди вот таких вот хреновин для соцсетей. когда не знаю стрельнет ли очередной клон фермы или нет. в 99% случаев не стреляет и никто ничего не теряет кроме 3$/мес на зарплату настройщику мемкеша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 09:31:18 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
HettЗатраты на хранение прямо пропорциональны масштабу проекта, поэтому чем больше проект, тем не выгоднее использовать подобные сервисы. ИМХО. кто сказал что пропорциональны? зависимость как раз разная в каждом случае. -использование стороних сервисов наоборот уменьшает стоимость хранения от объема(посмотрите их расценки, чем больше брать тем дешевле будет обходиться) -зачем молодому проекту терабайт? ведь данных еще мало. он же будет простаивать. зачем за это платить? амазон дает возможность платить именно за потребленный объем данных, увеличивая его по мере надобности. -данные разбросаны по серверам по всему миру, это дает максимальную скорость работы с данными для каждого региона, так как юзаются ближайшие к нему хранилища... ну и т.д. плюсы очевидны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 09:42:55 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
r uHettЗатраты на хранение прямо пропорциональны масштабу проекта, поэтому чем больше проект, тем не выгоднее использовать подобные сервисы. ИМХО. кто сказал что пропорциональны? зависимость как раз разная в каждом случае. -использование стороних сервисов наоборот уменьшает стоимость хранения от объема(посмотрите их расценки, чем больше брать тем дешевле будет обходиться) -зачем молодому проекту терабайт? ведь данных еще мало. он же будет простаивать. зачем за это платить? амазон дает возможность платить именно за потребленный объем данных, увеличивая его по мере надобности. -данные разбросаны по серверам по всему миру, это дает максимальную скорость работы с данными для каждого региона, так как юзаются ближайшие к нему хранилища... ну и т.д. плюсы очевидны в доказательство своих слов, ну покажите что-ли хоть один популярный файлообменник построенный на амазоне. ну или еще какой-нибудь ультрадешевый сервис не связаный с соцсетями и просиранием венчурного капитала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 10:06:25 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
netwindв доказательство своих слов, ну покажите что-ли хоть один популярный файлообменник построенный на амазоне. Dropbox для вас достаточно популярен? ))) netwindну или еще какой-нибудь ультрадешевый сервис не связаный с соцсетями и просиранием венчурного капитала ультрадешевый для кого? для пользователей или для самих создателей? я соцсетями почти не пользуюсь поэтому ничего конкретного не подскажу. да и не вижу связи - как это станет доказательством моих слов. для доказательства посмотрите сами расценки амазона. и легкость подключения к нему приложений и все сопутствующие плюшки. переубеждать вас тоже не собираюсь. я просто констатирую факты. амазон не единственный уже давно. "облачных" хостингов щас как грязи, и становится еще больше. а знаете почему? потому что на них есть огромный спрос. а почему спрос? а потому что это выгодно во многих случаях при создании различных стартапов. и люди умеющие считать деньги это прекрасно понимают. рынок сам расставляет все точки на i. если бы это было невыгодно - это не сталобы так дико набирать популярность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 10:45:35 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
r unetwindв доказательство своих слов, ну покажите что-ли хоть один популярный файлообменник построенный на амазоне. Dropbox для вас достаточно популярен? ))) netwindну или еще какой-нибудь ультрадешевый сервис не связаный с соцсетями и просиранием венчурного капитала ультрадешевый для кого? для пользователей или для самих создателей? я соцсетями почти не пользуюсь поэтому ничего конкретного не подскажу. да и не вижу связи - как это станет доказательством моих слов. для доказательства посмотрите сами расценки амазона. и легкость подключения к нему приложений и все сопутствующие плюшки. переубеждать вас тоже не собираюсь. я просто констатирую факты. амазон не единственный уже давно. "облачных" хостингов щас как грязи, и становится еще больше. а знаете почему? потому что на них есть огромный спрос. а почему спрос? а потому что это выгодно во многих случаях при создании различных стартапов. и люди умеющие считать деньги это прекрасно понимают. рынок сам расставляет все точки на i. если бы это было невыгодно - это не сталобы так дико набирать популярность. И что, dropbox арендует мощности у amazon или какой-то другой компании по конским ценам? По-моему там своя инфраструктура. Я имел ввиду скорее не ультрадешевый, а проект с небольшой нормой прибыли. Не попадающий в какой-нибудь модный тренд, зарабатывающий на рекламе и имеющий основной доход именно от сервиса использующий хранилище, а не как вспомогательный сервис. Я, правда, не понимаю какой дурак будет запускать еще один файлообменник, но вроде они постоянно появляются и закрываются. Потом, всякие там онлайн-кинотеатры с бесплатными фильмами тоже не торопятся использовать облачные сервисы для раздачи файлов. Это все уже проверенные ниши, где звезд с неба не хватают, внимательно считают деньги, генерируют внушительный трафик и все равно имеют свою стабильную прибыль. Вот у людей, поработав с ними и возникает справедливый вопрос : кому это надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 11:09:44 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
Да, похоже что все еще арендует, хотя пишут, что подумывал слезть с иглы. Ну вопрос у многих возникает как при конских ценах хранилища они все еще не закрылись : http://www.quora.com/Dropbox-uses-Amazon-S3-to-store-files-how-can-they-afford-to-provide-2GB-free-per-user пишуть, что скорее всего имеет место огромная экономия от не хранения дубликатов. Да и весьма скромный размер для бесплатного аккаунта там - 2 гб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 11:19:07 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
netwindИ что, dropbox арендует мощности у amazon или какой-то другой компании по конским ценам? По-моему там своя инфраструктура. а вы сначала узнайте чья там инфраструктура - а потом спорьте). информация об этом есть на самом сайте dropbox. netwindЯ имел ввиду скорее не ультрадешевый, а проект с небольшой нормой прибыли. Не попадающий в какой-нибудь модный тренд, зарабатывающий на рекламе и имеющий основной доход именно от сервиса использующий хранилище, а не как вспомогательный сервис. Я, правда, не понимаю какой дурак будет запускать еще один файлообменник, но вроде они постоянно появляются и закрываются. Потом, всякие там онлайн-кинотеатры с бесплатными фильмами тоже не торопятся использовать облачные сервисы для раздачи файлов. Это все уже проверенные ниши, где звезд с неба не хватают, внимательно считают деньги, генерируют внушительный трафик и все равно имеют свою стабильную прибыль. Вот у людей, поработав с ними и возникает справедливый вопрос : кому это надо? я незнаю что вы имели в виду, и понимать нехочу честно говоря - слишком размазанное описание сами незнаете чего. я достаточно привел аргументов. а вот вы нет. поэтому я непонимаю что конкретно вы хотите мне доказать? - что амазон s3 (в частности) убыточен и никому не нужен? о чем мы спорим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 11:22:41 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
r uя достаточно привел аргументов. а вот вы нет. поэтому я непонимаю что конкретно вы хотите мне доказать? - что амазон s3 (в частности) убыточен и никому не нужен? о чем мы спорим? Доказывать не хочу. Хочу, как всегда, для достижения корыстных целей, выяснить портрет типичного прибыльного проекта-клиента amazon s3, чтобы в будущем принимать решение об его использовании в тех или иных условиях. По вашим словам получается, что s3 выгоден чуть ли не всем, но я не могу с этим согласиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 11:41:34 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
netwindПо вашим словам получается, что s3 выгоден чуть ли не всем, но я не могу с этим согласиться. я не говорил что он выгоден всем. я только немного описал плюсы его использования. это просто инструмент а не панацея. использовать или нет - решение индивидуальное. когда он выгоден? мне кажется: -если нужно быстро опробовать идею-проект и не охота (или нет возможности,знаний) поднимать свою инфраструктуру для этого. с другой стороны -если уже есть большой проект, нужно посчитать все затраты и сравнить, есть большая вероятность что переведя проект на s3 затраты будут меньше а профит больше. ибо не нужно держать штат админов поддерживающих свои хранилища, парк серверов именьшится, доступность,стабильность(а иногда и скорость) доступа к данным повысится. конечно это все индивидуально. встречно. опишите когда s3(и его аналоги) невыгоден или неудобен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 11:51:50 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
r uвстречно. опишите когда s3(и его аналоги) невыгоден или неудобен? yandex + "смотреть бесплатно фильмы без смс халява приди" - тысячи примеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 11:55:46 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
авторвстречно. опишите когда s3(и его аналоги) невыгоден или неудобен? Мне он показался не выгоден именно для хранения больших объемов информации (0.5+ПБ) Если нужно куда то засунуть 5 гиг, то понятно, что проще и дешевле будет взять тот же амазон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 13:07:21 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
HettМне он показался не выгоден именно для хранения больших объемов информации (0.5+ПБ) Если нужно куда то засунуть 5 гиг, то понятно, что проще и дешевле будет взять тот же амазон. twitter хранит там чтото и не жалуется, и явно экономит, в сравнении с тем если бы ему самому пришлось организовывать, строить, поддерживать, настраивать свои дата центры для этого. они делают деньги, и если бы это было для них невыгодно - давно бы ушли с амазона. по теме там помимо примеров кода есть и прикидочные рассуждения когда облако бывает дешевле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 13:37:24 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
r u по теме там помимо примеров кода есть и прикидочные рассуждения когда облако бывает дешевле одна история офигительней другой просто. если верить ibm, так все должны купить по мейнфрейму срочно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 15:30:33 |
|
||
|
На чем написан Instagram
|
|||
|---|---|---|---|
|
#18+
r u они делают деньги, и если бы это было для них невыгодно - давно бы ушли с амазона. А зачем ? Делать деньги можно своими силами и сегодня, а можно убедить венчурный капитал, что ты будешь делать деньги завтра. Ну а потом уволиться. Во втором случае наемный технический директор даже больше выиграет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2012, 15:33:57 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=132&tid=1464612]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 444ms |

| 0 / 0 |
