Игорь Бигдан (ibigdan) wrote,
Игорь Бигдан
ibigdan

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

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

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

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

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

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

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

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

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

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

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

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

А теперь представьте, если в ЖЖ однажды изм