juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2009-03-12 02:25 pm

что-то было не так

В оркуте юзерский спрос был волнами: первая волна - утро Бразилии, до обеда. Потом спад. Потом после обеда, волна чуть повыше (потому что присоединились те, кто дрых до обеда). К вечеру волна спадает.
Кроме того, были изменения в течение недели: в понедельник уровень ниже всего; затем больше, больше... и в пятницу после обеда - самая высокая волна. Ну типа насчёт выходных утрясают.

А ресурсы в оркуте распределены под завязку. И вот каждую пятницу после обеда дежурный по пейджеру получает звонки, раз в пять минут: сервер перегружен, сервер перегружен! Можно предсказать за месяц, когда сервер будет перегружен.

Я ходил спрашивал, ребята, нельзя в пятницу добавить с десяток серверов-то? Или сделать это погибче, ну типа приоритеты там, запасные сервера... ведь не АТС же, компьютеры, линухи - пока не занят оркутом, гоняет мапредьюсы, а как занят... да какие по пятницам мапредьюсы, народ же отдыхает, к TGIF готовится.

Но нет. Жизнь сурова, ресурсы ограничены, пиши программу так, чтоб она была на грани, но снизу.

То есть, в принципе-то проблемы особой в софте оркута вообще не было. Кроме как баги мелкие пофиксить, фичи новые добавить да с хакерами бороться. А с хакерами бороться нужны же ресурсы. Я нарисовал регексп, покрывающий все хакерские трюки в scrapbook. Этот регексп выкинули, да ещё со словами "неопытный инженер" (ну это гугл, там всякий сельский идиот считает себя умнее усех, т.к. он умеет на распределённой системе вычислять медиану) - неопытность заключалась в том, что этот регексп требует небольшое но количество дополнительных серверных ресурсов. И чё? А ничё, ресурсы добавлять нельзя, лучше пусть хакают, это не так часто случается. Потом, правда, абьюз тим бьётся потом круглые сутки, пишут мапредьюсы, которые сутками работают чистят базу - но это как бы уже не наше дело. Не барское.

Конечно, ресурсы добавляются. Потому что каждую неделю несколько миллионов новых юзеров приходит. Тренд положительный. Но нельзя же выделить столько ресурсов чтобы пейджер не пищал! Тогда же служба мёдом покажется.

Я что хочу сказать... что сложность работы гугловского инженера в-основном, имхо, обусловлена наличием искусственных и бессмысленных ограничений. Дескать, а ну-ка мы попробуем решить такую-то задачу в условиях, приближенных к боевым с другой стороны. А на хера? А потому что мы ж крутые, и задачи у нас все NP-полные, другие задачи нас не интересуют.

Это в среднем, конечно (см Пирамиду Лебедева).

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

[identity profile] cema.livejournal.com 2009-03-12 09:49 pm (UTC)(link)
А какие "действительно серьёзные" задачи?

[identity profile] ivan-gandhi.livejournal.com 2009-03-12 10:07 pm (UTC)(link)
Да их полно, конечно. Та же задача вычислить шесть степеней знакомства (ну не шесть так хоть четыре - как линктин). Мало ли. Флайт симулятор и то поинтеллектуальней задача. Чем adwords/adsense.

[identity profile] cema.livejournal.com 2009-03-12 10:15 pm (UTC)(link)
Ворк симулятор.

[identity profile] brumka.livejournal.com 2009-03-12 10:49 pm (UTC)(link)
Выкидывать регексп (как фичу) - не дело программера, а начальника проекта. Ведь надо посчитать, или хотя-бы прикинуть, что дешевле/важнее - лишние сервера (они и так, небось, симметричные) или часы работы IT + abuse team. А если выкинувший действительно ТАК крут - пусть лучше попытается оптимизировать регексп.

a так, прикольно читать подобное про гугл. в индустрии истории "про то как в гугле" рассказываются нердами a-la Wired с восторженным придыханием.

а оно - вон, как везде

[identity profile] ivan-gandhi.livejournal.com 2009-03-12 11:40 pm (UTC)(link)
Да вот сижу и обдумываю - а какие, собственно, мы решали проблемы, какие алгоритмы имплементировали? Вот на новой работе - иерархический вариант двустороннего алгоритма Дийкстры, и никто не гордится общественным строем, а сидим да работаем.

А что было? А была постоянная борьба за ресурсы. Всё напряжение ума расходовалось на попытки а) перекрыть кислород тем, кто ниже в трофический цепи, б) выцарапать побольше, побольше у тех, кто выше в трофической цепи.

Пикантность придаёт то, что половина играющих не понимает правил, и недоумевает. Ну примерно как [livejournal.com profile] kouzdra и ему подобные тифареты недоумевают, отчего бы это не отнять у всех всё и не отдать британским учёным для опытов, им же надо!

[identity profile] brasileiro-ru.livejournal.com 2009-03-13 12:42 am (UTC)(link)
А , так это ты мутишь оркут!
Я я то думаю, откуда у тебя такие глубокие познания в теме!

[identity profile] brumka.livejournal.com 2009-03-13 01:02 am (UTC)(link)
Ну, главное, что-бы тех, кто не понимает было поменьше вокруг и/или подальше от принимающих решения.

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 01:39 am (UTC)(link)
Уже нет - но это про меня писали "este idiota inventou privacidade" :) И гомиком обзывали. Там есть комунидаче "долой приватизацию", там 27 тыс членов (я тоже записан); вот там-то меня и поливают.

Да впрочем, всё это в прошлом. Теперь все претензии к Родриго Дамазио (он, кстати, и по-русски может).

[identity profile] alexmoskalyuk.livejournal.com 2009-03-13 04:00 am (UTC)(link)
Может от приоритета проекта зависело и от пронырливости курирующего директора? На поисковый индекс небось ресурсов не жалели с ростом объемов интернета.

а ведь энтерпрайз линукс серверы отнюдь не дешевы

[identity profile] bravomail.livejournal.com 2009-03-13 04:21 am (UTC)(link)
потому что писюк за тыщу даже не поставят.
там тыщ двадцать отдай не греши.
да еще и немеряно за сторедж отдели.
а вы оптимизируйте код-то, оптимизируйте. на то вы и учОные. а как же. вот
регэксп ему дай, как же. а слабо Оркутовский движок запрофайлить на ходу в продакшне, а? или там на глазок найти левый сиквелы и полечить, потюнить.
вы заходите - у нас еще мноХо советов.

Re: а ведь энтерпрайз линукс серверы отнюдь не дешевы

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 04:24 am (UTC)(link)
Да всё запрофайлено, не сумневайтесь. В продакшене запрофайлено. А сиквелов там отродясь не было.

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 04:33 am (UTC)(link)
Нет, на индекс ресурсов хватает, конечно. Дело-то не в этом; просто если взять, как бы это сказать, четыре дайменшена:
- процент доступности ресурсов;
- эффективность кода;
- нервно-психическое напряжение разработчиков;
- количество нагнанного народу

То, наверное, можно составить интересную систему уравнений, вроде Максвелла. С демонами.

Я что ещё хочу сказать: я верю в глобальную алгоритмическую оптимизацию, когда она возможна, но совершенно не верю в выдавливание перформенса в режиме "ну джавочка, ну ещё капельку". Это стремление к выдавливанию, как и вообще попытки занять 99% серверов - всё это того же рода занятия что и пресловутая преждевременная оптимизация.

[identity profile] alexmoskalyuk.livejournal.com 2009-03-13 04:35 am (UTC)(link)
Да, маразматично конечно, даже в Yahoo! политика была обеспечивать проект 150% ресурсов, в 3 дата-центрах, чтобы один всегда мог упасть без особых потерь на пользовательской стороне.

Re: а ведь энтерпрайз линукс серверы отнюдь не дешевы

[identity profile] bravomail.livejournal.com 2009-03-13 04:58 am (UTC)(link)
ну вот же корень козла - значит надо поставить сиквел серверок. а то уж что это - и оптимизировать негде нормальным пасанам.

Re: а ведь энтерпрайз линукс серверы отнюдь не дешевы

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 05:06 am (UTC)(link)
Да ведь с бакендом-то как раз проблем не было. Бакенд пишут и суппортят в Бразилии; волшебным образом у них и серверов всегда хватало, и тест каверидж почти 100%. А потому что мудачество в Бразилии не в почёте: мудакам бабы не дают (в среднем, конечно). (В Бразилии даже грабят на улицах с весёлысми прибаутками: "perdeu, perdeu, playboy".) Так что с бакендом проблем не возникало... да и какой бразилец заинтересуется лихорадочной беготнёй с пейджером в пятницу после обеда?

А в Маунтин Вью ты типа должен равняться на Великих - и помалкивать.

Про Великих я отдельно расскажу. Как они предпринимают всё необходимое, чтобы никто и близко не смел.

Re: а ведь энтерпрайз линукс серверы отнюдь не дешевы

[identity profile] bravomail.livejournal.com 2009-03-13 05:24 am (UTC)(link)
ну перегрузить аппсервера - это надо суметь. Тут явно профайлер нужен. Кэшированием может переувлеклись?

[identity profile] http://users.livejournal.com/_navi_/ 2009-03-13 06:37 am (UTC)(link)
Dude, bidirectional Dijkstra algorithm is still suboptimal for constant graphs. Behold: presentation (http://www.avglab.com/andrew/pub/sofsem.pdf) & paper (http://www.avglab.com/andrew/pub/msr-tr-2005-132.pdf). See also the author's homepage: Andrew Goldberg (http://research.microsoft.com/en-us/people/goldberg/).

[identity profile] twitter.livejournal.com 2009-03-13 07:42 am (UTC)(link)
И где сейчас Yahoo! - спросите вы.

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 03:00 pm (UTC)(link)
Sure. There are linear solutions for certain kinds of graphs. (But thanks anyway.)

Re: а ведь энтерпрайз линукс серверы отнюдь не дешевы

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 03:03 pm (UTC)(link)
Что тут уметь... берём среднюю нагрузку по больнице и берём минимальное количество серверов чтобы latency было не хуже чем Ларри велел. После чего наступает пятница, и всё падает. По-моему, аналогичные случаи были нормой в советской промышленности.

Re: а ведь энтерпрайз линукс серверы отнюдь не дешевы

[identity profile] raa.livejournal.com 2009-03-13 03:26 pm (UTC)(link)
эээ а нет ли где-то в открытом доступе про архитектуру оркута? потому что без сиквела отродясь - это занятно

[identity profile] ivanvr.livejournal.com 2009-03-13 03:27 pm (UTC)(link)
"If you optimize everything, you will always be unhappy."
-- Donald Knuth

Re: а ведь энтерпрайз линукс серверы отнюдь не дешевы

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 04:56 pm (UTC)(link)
данные в бигтейблах; картинки - на разных серверах, в зависимости от размера картинки
бакенд (си) поддерживает такие штуки как friendfeed, списки друзей, scraps, image serving (разные сервера опять же)
middle tier - джава, clearsilver
на клиенте немножко аджакса и самопального джаваскрипта

Вот и вся архитектура; веб сервера все - стандартный гугловский код.

Теперь это... никаких сессий. authentication via gaia - как в джимейле, ну и кука дешифруется. Так что юзер каждый раз попадает на другой сервер... кешировать практически нечего, если не учитывать что в данный конкретный момент на вебе, наверное, проценты от всего юзершипа.

[identity profile] cema.livejournal.com 2009-03-13 05:33 pm (UTC)(link)
Ну wired это вообще glamour for nerd wannabes.

[identity profile] cema.livejournal.com 2009-03-13 05:35 pm (UTC)(link)
он, кстати, и по-русски может

Бывает надо?

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 06:31 pm (UTC)(link)
Да нет, по приколу просто.

[identity profile] http://users.livejournal.com/_navi_/ 2009-03-13 10:16 pm (UTC)(link)
It's not about the kinds of graphs, it's about being able to precompute some extra data beforehand and store it on the device. Space/performance tradeoff basically.

[identity profile] ivan-gandhi.livejournal.com 2009-03-13 10:21 pm (UTC)(link)
Sure; the algorithm I'm reading about does exactly that... but this article and presentation you had posted - they are really cool. Thanks again.

Re: а ведь энтерпрайз линукс серверы отнюдь не дешевы

[identity profile] raa.livejournal.com 2009-03-14 05:09 am (UTC)(link)
спасибо
Интересуют конечно только данные - с ними всегда возни больше всего

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

Если позволите, ещё вопрос. Вот мне не очень понятно роль бекенда на Си. Это "кеширующий" интерфейс к данным, из которого java запрашивает что-то, что не получится достать быстро из bigtable (быстрый сервис, который отдает из памяти, и наполняется асинхронно или по запросу данными, которые есть на диске)? Или это просто такое же приложение, которое просто делает часть работы над данными, потому что так быстрее - а java уже лезет к данным "напрямую"? или и то, и другое?

Re: а ведь энтерпрайз линукс серверы отнюдь не дешевы

[identity profile] ivan-gandhi.livejournal.com 2009-03-14 06:00 am (UTC)(link)
Я про friendfeed мало знаю - его нарисовала одна очень скромная девушка уже когда я работал в команде, и... и её успешно задвинули в дальний угол сразу после.

Бакенд в оркуте - серьёзная вещь, делает иной раз довольно тяжелые вычисления; почему оно на си - по историческим причинам (русские писали). С другой стороны, если взять имидж-сервер, то он совершенно элементарен, выполняет пару rpc, ну и http на вытаскивание картинки; вся логика состоит в том, чтобы проверить реквест (не скриптом ли он слеплен часом), прочитать ячейку из бигтейбла и отправить контент по назначению. И что он на си, роли не играет, код достаточно примитивен. Я люблю такие программы - минималистические. Писал один умный грузин... правда, по-грузински он только "гамарджоба" знает.

Другие о том же

[identity profile] cema.livejournal.com 2009-03-23 05:29 am (UTC)(link)
Кстати, по другому поводу лазил по сети и нашёл такой вот отзыв (http://www.flownet.com/gat/jpl-lisp.html) о Гугле:
The interchangeable component model of software engineers seemed to work reasonably well there.

Re: Другие о том же

[identity profile] ivan-gandhi.livejournal.com 2009-03-23 06:21 am (UTC)(link)
Это верно. Работает.

Re: а ведь энтерпрайз линукс серверы отнюдь не дешевы

[identity profile] motto.livejournal.com 2009-08-07 07:12 pm (UTC)(link)
Слушай, а почему "картинки в зависимости от размера картинки"? В чем хлеб?
Я знаю одну версию, но хотелось бы сравнить

[identity profile] vdas.livejournal.com 2009-09-03 11:05 pm (UTC)(link)
главное, чтобы "солдат, которые знают как рулить" было немного. Один или два.