?

Log in

No account? Create an account
ЖЖ Украина

Самый сок!

всё то интересное в сети, что попало в мои сети


Предыдущий пост поделиться Следующий пост
ЖЖ Украина

Старый добрый ЖЖ

Я тут за оливье и шампанским самое интересное пропустил. Оказывается ЖЖ лежал в дауне с 31-го по 02-е, и это вызвало истерику и незапланированную пенную вечеринку у некоторых персонажей (не будем показывать пальцем). К счастью лично мне они не писали, но во входящих достаточно писем с «Доколе?!» и «Объясните, в чём дело!».

Я объясню. Но сначала всё-таки хочу предупредить, что я не имею отношения к московским программистам — я директор по продвижению ЖЖ в Украине. У меня большей частью маркетинговые функции, плюс ещё парочка сопутствующих. И внутри СУПа нет рассылки новостей для сотрудников, которые строго-настрого запрещено публиковать — то есть «Дронов знает причину глюков, Бармин знает, я знаю, а вам не скажем» — этого нет.

Есть моё мнение о работе сервиса, о том, как он устроен и почему глючит. Разных вопросов было много, отвечать буду по порядку.

1. Почему ЖЖ постоянно глючит?

ЖЖ очень старый. Тринадцать лет назад Брэд Фитцпатрик создал небольшой сервис онлайн-дневников для своих друзей. Неизвестно, на какое количество пользователей он был рассчитан, но точно не на десятки миллионов аккаунтов. Время шло, ЖЖ переходил из рук в руки (СУП — всего лишь последний из владельцев), количество пользователей росло, разные команды программистов по разному пытались справиться с растущей нагрузкой. На данный момент в движке ЖЖ куча старого кода, который писали совершенно разные люди без единой стратегии и без документирования. И архитектура ЖЖ устарела несколько лет назад — не дизайн (тоже архаичный), а внутреннее устройство.

Именно поэтому простой и наивный совет «добавить серверов, памяти или чего там у вас не хватает»© — не работает. При росте нагрузки масштабирование помогает до поры до времени, это что-то вроде «откладывания решения на потом» — ошибки в архитектуре всё рано вылезут. Если у вас есть знакомый программист, спросите у него, он подтвердит, что ошибки в архитектуре ПО — самые дорогостоящие. Их очень сложно исправлять, когда продукт уже запущен и им пользуются люди. А если это онлайн-продукт (24×7) и пользователей десятки миллионов?..

Если программиста у вас нет, объясню с помощью аналогии. Представьте себе старый многоэтажный дом, в котором живут люди, и вам нужно поменять архитектуру этого дома. Вы вынуждены выбивать сваи и вытаскивать плиты из фундамента(!) Разумеется, дом иногда падает, вместе с жильцами. Дом поднимают и продолжают ремонт. Часто, чтобы дом не падал, обходятся временными решениями — не меняющими архитектуру. Например, из-за прихода новых жильцов и роста количества бытовых электроприборов, электросеть не справляется с нагрузкой, пробки выбивает регулярно. Но жильцы требуют повысить мощность, плевать каким способом, потому что «у соседей в новостройке всё это есть». Проблема решается затаскиванием каждому в окно отдельного силового кабеля — выглядит некрасиво, весь дом в многометровых кабелях, во время сильного ветра они рвутся, жильцы опять недовольны. И так всё время.

Кстати, о «соседних новостройках». Критики ЖЖ постоянно приводят в пример Фейсбук и ВКонтакт, дескать у них гораздо больше пользователей и ничего не глючит. Это, кстати, удобный индикатор — если человек начинает использовать FB и VK как аргумент, то он однозначно профан, можете сразу вычёркивать его из дискуссии. Потому что надо быть совсем уж чайником, чтобы не знать, что Фейсбук и ВКонтакт в два раза моложе ЖЖ, создавались изначально как проекты под большую аудиторию, использовали технологии «web 2.0″ и самое главное — писались одной командой от начала и до конца. Кроме того в этих соцсетях масса ограничений, упрощающих жизнь программистам — попробуйте, например, создать в Фейсбуке сложноформатированный пост с чередующимся текстом, картинками и видероликами. Это просто невозможно сделать. А в ЖЖ чистый HTML и посты весом иногда в десятки мегабайт, учитывайте это.

ЖЖ глючит последние несколько лет вовсе не потому, что его разработкой занимается СУП. Движок ЖЖ просто дошёл до своего предела возможностей и глючил бы в любом случае. Но если ничего не менять, то глюки будут нарастать, пока однажды ЖЖ не остановится навсегда. Если же пытаться ремонтировать, что-то менять в архитектуре, то глюки будут вылезать то тут, то там (напомню — дом иногда падает), но по крайней мере есть шанс выбраться. Перестроить архитектуру в соответствии с новыми потребностями.

2. Почему нельзя просто написать ЖЖ заново, с новой архитектурой? Оттестировать его и за одну ночь запустить новую версию?

Дело в том, что ЖЖ очень старый. Он создавался взрослыми людьми для взрослых людей, в нём практически нет школоты, средний возраст пользователя — 25-35 лет. В ЖЖ уже давно сложилась своя постоянная аудитория, которая неравнодушна к этому сервису и достаточно консервативна. Пользователи ЖЖ противятся любым, самым незначительным переменам. Вспомните, сколько истерик было по поводу того, что убрали заголовок в комментариях?.. Майн гот, какая-то хрень, от которой не зависит ничего принципиального — а воплей было на весь рунет! Думаю лозунг «Верните всё как было» нужно повесить на главной странице livejournal.com, он достаточно точно передаёт настроение пользователей :)

А теперь представьте, если в ЖЖ однажды изменится всё? Если движок полностью перепишут, ЖЖ будет по другому выглядеть и по другому себя вести (а иначе никак — если изменится концепция и архитектура, нельзя будет сохранить внешние атрибуты). Если все те изменения, которые постепенно вводились весь 2012-й год и каждое вызывало ожесточённые дискуссии — если все они появятся в один день — представляете, какой срач поднимется, сколько народу «громко хлопнет дверью»? :) И кстати, непременно вылезут новые глюки, ведь сколько систему не тестируй, десятки миллионов пользователей найдут в ней все проблемы и устроят истерику «ааа, опять ничего не работает — верните всё как было!».

То есть независимо от того, делает что-то СУП или не делает вообще ничего, меняет всё постепенно или радикально, всё равно «СУП — козлы, верните всё как было». При том, что (см.п.1) не менять нельзя. И при том, что большая часть этих критиканов даже несчастный платный аккаунт за $2 в месяц не купили, то есть получают бесплатно сервис, но перманентно недовольны.

Я человек эмоциональный, поэтому я завидую выдержке Дронова. Как он работает в таких условиях — не знаю.

3. Ок, допустим нельзя всё поменять, нужно постепенно дорабатывать. Но почему в таком случае СУП не занимается повышением стабильности сервиса, а вместо этого добавляет «свистелки и перделки» — новый «голубенький» дизайн, лайки в соцсети, рейтинги, жетоны и промо, монетизация и прочие «рюшечки», отягощающие сервис и делающие его ещё более глючным?

Во-первых, меняют одновременно и архитектуру и фасад, но посколььку вы не находитесь внутри процесса и не имеете доступа к коду ЖЖ, вы видите только те изменения, которые видны снаружи — то есть изменения в дизайне и end-user функциональности. Совершенно неверно считать, что никаких других изменений нет.

Во-вторых, многие из «рюшечек» как раз решают проблему разгрузки серверов. Например динамическое развёртывание комментов в новых стилях, добавление комментариев без перезагрузки страницы и т.п. — всё это снижает трафик и нагрузку на серверы. То есть это не только дизайн и украшательства — это комплексное решение для морально устаревшего сервиса.

В-третьих, ЖЖ очень старый (я уже говорил об этом?). Сервису 13 лет и все эти годы он был убыточен. Извините, но платные аккаунты покрывают разве что расходы на хостинг — их слишком мало и стоят они слишком дёшево. Баннерная реклама крайне неэффективна, раздражает и тоже приносит копейки. Из-за своей убыточности ЖЖ сменил уже трёх владельцев и в конечном итоге СУП был поставлен перед выбором: или ЖЖ начинает зарабатывать, или его закроют.

Новое руководство рассудило правильно: блоггеры уже давно занимаются монетизацией, и если уж процесс нельзя остановить, то его нужно возглавить. Основным инструментом заработка для СУПа становятся промо-блоки в рейтингах: хочешь раскрутить свой блог — купи место в промо. Именно поэтому стали строго караться все попытки накрутить рейтинг другими способами. Внутренняя валюта «ЖЖЖетоны» с полноценным вводом и выводом призвана заменить Яндекс.Деньги и Вебмани. Промо-блоки в постах должны заменить постовые (поэтому запретили постовые), а платные репосты должны заменить биржи типа Блогуна. И так далее, и так далее… Нравится вам это или нет, но процесс этот остановить нельзя, потому что либо ЖЖ будет зарабатывать, либо все мы останемся без ЖЖ. Сапиенти сат или продолжать?

Нет, я могу продолжать, я всё это рассказываю на встречах с блоггерами. Не только ЖЖ убыточен, все соцсети пока только проедают инвестиции и «раздают обещания». IPO Фейсбука — это ведь «обещания», его миллиардная стоимость отражает надежды на то, что «однажды Фейсбук научится зарабатывать деньги, и тогда акции вырастут в цене и акционеры круто заработают». Но на сегодняшний день акции в цене падают, а реального заработка кот наплакал, да и методы традиционные — реклама и спам, пусть даже таргетированные. Фактически на пути заработка ЖЖ сейчас впереди планеты всей — ни одна соц.сеть, ни одна блогплатформа не предлагает своим пользователям инструменты для раскрутки и заработка. Наши наработки потом все соцсети скопируют, вот увидите :) Но к тому моменту они не будут инновацией и не вызовут такого срача, который они вызывают в ЖЖ.

Вопросы закончились?

Кроме вопросов ещё были требования и угрозы отставки Дронова, разгона СУПа и т.п. Я понимаю, эмоции, каждый может сорваться. Большая часть блоггеров потом остыла и ушла доедать оливье :)

Но есть среди нас «профессиональные критиканы», которым «глюки ЖЖ всю жизнь поломали» и поэтому кроме потоков говна от них ничего получить нельзя. Много месяцев подряд они ведут себя как мудаки и истерички — в ответ на любые изменения в ЖЖ они фонтанируют говном в своих бложеках, то есть не просто критикуют, а делают это в самой омерзительной форме.

Именно поэтому я хочу сказать: Илья, не вздумай уходить в отставку. Если ты сейчас уйдёшь, то это будет означать, что мудаки победили.

А когда побеждают мудаки — это плохо для всех.

Метки:

promo ibigdan декабрь 3, 2007 00:08
Buy for 1 500 tokens
Если вы хотите сделать хорошую рекламу вашему продукту или услуге - вы зашли по адресу. Блог "Самый сок!" читают во всём мире. Среднее количество просмотров на каждый пост - 50 тысяч, среднее количество просмотров блога в месяц - 4-5 миллионов. Изучить аудиторию блога в разных разрезах можно в…

  • 1
dom3d 4 января, 2013
Я полагаю, что не Тот же самый гетовый запрос, и не то же самое обращение к БД, и не точно такая же отправка результатов клиенту.

dex66 4 января, 2013
Я, к сожалению, не работаю более 20 лет в сфере ИТ. Может быть просветите, как добавление комментариев без перезагрузки страницы и т.п. может быть реализовано еще? Без запроса к серверу, обращению к БД и т.д. по списку?

newbey 4 января, 2013
а очень просто.

схема раз с перезагрузкой
1. вы делаете камент - уходит на сервер пост запрос
2. камент добавляется в базу
3. камент добавляется в кеши и бла бла
4. выбираются опять все каменты которые нужн для отображения вашего и остальных
5. все это отдается

схема два - без перезагрузки
1. вы делаете камент - ушел пост запрос на сервер
2. сервер добавил его в базу
3. сервер добавил его в кеши и бла бла
4. камент сразу вставился на странице в нужное место.

разница ? нет выборки каментов опять для отдачи

dex66 4 января, 2013
С отправкой комментариев понятно, но это не так много. На много больше (_чаще_) эксплуатирует сервер раскрытие ветвей комментариев и самих постов в ленте. Разве тут есть выигрыш? И давайте примем как исходное условие, что кеширование настроено адекватно.

Edited at 2013-01-04 17:51 (UTC)

newbey 4 января, 2013
выигрыш огромный. схема такая. для того чтобы отобразить страницу нужно выбрать
1. пост
2. каменты 1-го уровня
3. каменты 2-го уровня
4. и выбрать кто где каментил у эти каментов - просто ники и связи - это если кратко

а чтобы каменты подгружались сразу - в дополнение ко всему вышесказанном нужно выбрать ВСЕ каменты поста а это
1. юзерпики
2. связи каментов
3. темы
4. сами каменты

учитывая что скорее всего большинство юзеров смотрит только 1 и 2 уровни комментариев, то имеем прямой выигрыш по производительности ибо снимаем нагрузки через отсутствие выборки комментариев уровня ниже 2-го. и делаем это только по запросу


dex66 4 января, 2013
Вот оно где! "большинство юзеров смотрит только 1 и 2 уровни комментариев". Этого я не учел, т.к. сам читаю все комментарии в интересующей теме.

vitshe 5 января, 2013
Мыслите глобальнее! Лейзи лоадинг спас не одну систему.
Как многие бойцы расшифровывают ПВО - погоди выполнять, отменят.

dom3d 4 января, 2013
Не знаю Вашего уровня.
Но запросы к серверу могут быть по разному реализованы.

dex66 4 января, 2013
Уровень вполне заурядный. Самописные интернет-магазины, просто сайты. И с комментариями, и с прочими "свистелками и перделками".
Но как могут быть реализованы эти запросы? Или я туплю, или не понимаю)
Есть камменты. Нажимаем "развернуть". Пошел запрос на сервер. Обращение к БД. Ответ от последней. Ответ от сервера клиенту. Где тут можно придумать велосипед?

newbey 4 января, 2013
тут можно придумать велосипед в кешировании
кеширование может быть двух паттернов
1. это при создании данных - сразу перестраиваются кеши не дожидаясь запросов от пользователей на эти кеши
2. при выборке данных - кеш создается при первой выборке

о этих двух стратегий сильно зависит производительность на разных проектах.

дальше изобретение велосипедов переходит в плоскость базы данных - денормализация данных, хранение данных в памяти, в noSQL хранилищах и тд и тп.

суть в создании велосипеда для максимально быстрого получения данных и максимально удобного

dex66 4 января, 2013
Это я понимаю, хотя сам никогда подобным не занимался. Только в теории. Но про кеши мы условиись, что у них все ок. Всяческие велосипеды с базами - это где-то далеко за пониманием обычными пользователями. Вопрос же стоял про "свистелки и перделки". Но это ... (см. чуть выше)

newbey 4 января, 2013
суть в том что идеальный сервис написан идеальными программистами с идеальным качеством кода. но мир не идеален. программисты тоже. написал неправильно запрос в базу, например, и он работает 1 секунду. а должен 0.0001 секунды. вот вам и тормоза.

ошибся во времени кеширования и потерял 30% на производительности.

ошибся в количестве выбираемых записей, еще потеря производительности.

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

и дело не в свистелках - фич может быть миллион - главное как они реализованы на серверной стороне. как быстро они работают.

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

(Удалённый комментарий)
dom3d 4 января, 2013
За один запрос к Базе Данных получить всю запись с комментами.

Я понял Ваш уровень.
Я жалкий засранец по сравнению с Вами.
Посыпаю пеплом голову.

dex66 4 января, 2013
Это сарказм? Я ведь даже ООП недолюбливаю.

newbey 4 января, 2013
одним запросом не выбрать всю нужную инфу - ибо там сотни связей - это тяжело для базы. использование join губительно на таких нагрузках.

  • 1