Стековерфлоу на русском


Закат Stack Overflow / Хабрахабр

Как тролли захватили ваш любимый сайт вопросов и ответов по программированию

Сайт Stack Overflow был создан в 2008 году Джеффом Этвудом и Джоэлем Спольским как более открытая альтернатива возникшим ранее аналогичным сайтам, таким как, например, Experts-Exchange. Название для сайта было выбрано голосованием в апреле 2008 года читателями популярного блога по программированию Coding Horror, который вёл Этвуд.

Многие годы сайт Stack Overflow был одним из самых популярных ресурсов для программистов, пытающихся решить какую-то проблему. Поскольку вопросы, размещавшиеся на Stack Overflow, часто оказывались среди первых, которые выдавал Google в каком-либо поиске, относившемся к программированию, то пользователи массово приходили на сайт и начинали задавать свои собственные вопросы.

На июль 2015 года у Stack Overflow было более 4 млн. зарегистрированных пользователей и почти 10 млн. вопросов (без учёта удалённых пользователей и вопросов). Однако в исследовании 2013 года было выявлено, что 77% пользователей задают только один вопрос, 65% отвечают только на один вопрос и лишь 8% пользователей дают ответы на более чем 5 вопросов. В настоящей статье я хотел бы рассмотреть возможные причины такого чрезвычайно низкого процента.Джоэль Спольский и Джефф Этвуд на конференции MIX09 в 2009 году

Новые пользователи ощущают себя особенно неуютно, входя на Stack Overflow. Процитируем Иона Бишопа:Stack Overflow всегда был ресурсом с уровнем выше среднего для нахождения ответов на вопросы по программированию. В частности, на этом сайте я нашёл немало полезных ответов на действительно трудные вопросы, многие из которых помогли мне преодолеть проблемы на работе или с программными проектами, которыми я занимался «для души». Поэтому я решил зарегистрироваться на сайте, чтобы увидеть, могу ли быть чем-нибудь полезен. Никогда прежде ни один сайт не производил на меня худшего первого впечатления.

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

Постранствовав по сайту, я нашёл несколько вопросов, на которые я, как мне кажется, мог ответить. Как только я вошёл, чтобы ответить на эти вопросы, вдруг ворвался кто-то ещё (в некоторых случаях, несколько человек) и просто избил меня. У меня не было никакой возможности дать полезный ответ. Мало того, что вы должны очень хорошо знать обсуждаемый предмет, но вы также должны быть очень быстрыми в предоставлении указанного ответа. В конце концов, я дал ответ на вопрос, но понял, что мой подход не будет работать. Прежде чем я смог принять меры и подкорректировать мой ответ, моя записка была уже заминусована несколькими людьми, некоторые из которых оставили язвительные замечания. Ну, очень тёплый приём нового пользователя! Я впоследствии удалил мой ответ.Источник

Вопросы новичков воспринимаются весьма недоброжелательно Не только новые пользователи испытывают чувство враждебности на сайте. Некто на Hacker News выразил общее ощущение, получаемое многими программистами (опытными или не очень) при их попытках участвовать в активности Stack Overflow.Когда я только начал программировать, я мог использовать SO, не задавая вопросов, поскольку то, что мне хотелось выяснить, было довольно простым. Это было замечательно, потому что многие ответы помогли мне понять больше о «необъятной вселенной» проблем, с которыми я мог бы встретиться в ходе разработок, и эти ответы подтолкнули меня глубже изучить язык.

После того как я начал задавать вопросы, я старался отвечать на комментарии, отмечал и плюсовал лучшие ответы. Я хотел быть хорошим участником этого сообщества. И взаимность была частью этого: в конце концов, я решил, что сам могу отвечать на вопросы; помню, какое было прекрасное ощущение, когда первый раз увидел +25 в моём профиле, потому что кто-то принял мой ответ.

В наши дни, если я задаю вопрос, то это потому, что я потратил немало времени на поиск ответа и не смог найти его сам. Что же происходит, когда я задаю вопрос на SO:

1. Я задаю вопрос, размещаю код и полученное сообщение об ошибке. 2. Вопрос заминусован. 3. Отвечаю на комментарий, в котором говорится, что мой вопрос уже был ранее (это не так, что я и разъясняю, чтобы избежать ситуации «снято как повтор»). 4. Отвечаю на комментарий об отсутствующей точке с запятой, которая была удалена, когда я вырезал/вставлял/форматировал мой код. (Хотя сообщение об ошибке ясно показывает, что проблема не в отсутствующей точке с запятой). 5. У вопроса появился лайк. 6. Ответ! Написано, что я должен читать документацию, и дана ссылка на раздел, не имеющий отношения к теме вопроса (документацию я, разумеется, уже читал). 7. Наконец, полезный ответ! Выглядит довольно хорошо; я тестирую его, и — проблема решена. Я принимаю и лайкаю ответ. 8. Замечаю, что менее чем через 1 минуту после принятого мною ответа пришёл дублирующий. Его автор выражает недовольство, сообщая, что его запись была размещена раньше. Я ссылаюсь на отметку времени, показывающую, что другой отправитель был первым, и получаю ответ, что это баг, связанный с часовыми поясами. 9. Позже я перепроверяю и замечаю сообщение: «Вопрос снят, как неточный, ответ на него невозможен». 10. Перепроверяю ещё раз и вижу, что кто-то заминусовал мой вопрос. 11. Отправляю письмо модератору, чтобы снять минусование.Источник

Стивен К. Хикс указал 8 причин, почему он почувствовал себя не в состоянии больше участвовать в этом сообществе, после того как был очень активным пользователем довольно долгое время: — Вечная проблема в сентябре. Многие новые пользователи Stack Overflow [SO] чрезвычайно редко соблюдают правила сообщества. Я не знаю, как решить эту проблему, но раздражает видеть вопросы, звучащие как послание о помощи. SO позиционирует себя как сайт с очень лаконичными вопросами и ответами. Он — не дискуссионный форум. [Он, скорее, поддержка и подарок]. Другая проблема в том, что снова и снова идут повторы, несмотря на сердитых модераторов, борющихся с этим. Одним из примеров являются вопросы о том, где найти бесплатные данные по котировке акций.

— Вопросы, относящиеся к разработке ПО, которые, по сути, не являются техническими, часто заминусовываются и/или снимаются. Примером может быть вопрос о специфическом наборе данных [для целей обучения/разработки], который был снят по причине, что он «не соответствует сообществу». Хотя существует сайт StackExchange, связанный с наборами данных, куда мог бы быть перенаправлен этот вопрос, сам вопрос, несомненно, относится к разработке ПО. Написав «сайт StackExchange,…, куда мог бы быть перенаправлен этот вопрос», я имел в виду полностью функционирующий сайт, а не тот, что в настоящее время «разработан» / на Зоне 51. Снятие вопроса как «нерелевантного» не помогает ни автору, ни тем людям, которые ищут аналогичный набор данных.

— Минусование как средство для снятия вопроса. Пользователь, чтобы получить право голосовать за снятие вопроса, должен иметь 250 репутационных баллов. Если вы участвуете в сообществе, то на их накопление не требуется много времени. Минусование должно быть способом отметить, что имеет место ошибочная, дезориентирующая или бесполезная информация. Если пользователь полагает, что вопрос должен быть снят, но его репутации недостаточно для этого, то следует написать комментарий и привести аргументы за снятие.

— Минусование правильных, но отличающихся от привычных ответов. Проблема возникает, когда вопросы могут иметь несколько ответов. Пример: обычным ответом на вопрос об оптимизации Java-приложения является предложение использовать более эффективный алгоритм. За этот ответ проголосует, скорее всего, большинство. Однако другим правильным ответом является предложение переписать процесс на языке более низкого уровня и подсоединить его через программный канал [Socket, inproc, JNI и т.п.] к основному приложению. Такое предложение лучше применимо для довольно необычных ситуаций, но оно всё же является правильным и осуществимым. Из моего опыта могу сказать, что этот второй ответ будет заминусован, несмотря на то, что он даёт правильную информацию. Я обсуждал ситуацию с одним модератором [Shog9], и, по его мнению, такая стратегия является вполне приемлемой стратегией заминусовывания ответа, заслуживающего уважения.

— Сдвинутые по времени / повторные ответы. Поскольку я прекратил свою активность в сообществе, я не могу сказать, насколько часто это происходит. Однако при появлении вопроса часто возникает лавина ответов. Через некоторое время кто-то помещает повтор ответа и получает за него голосов больше, чем за первоначальный ответ. Такое труднее выявить, но оно происходит и очень раздражает.

— Неправильно приписываемая репутация ответам: если есть другие ответы, которые помогают вам в ответе на вопрос, то, пожалуйста, цитируйте тех других авторов. Это — проявление вежливости и правдивости. [Также тех, кого вы цитируете, необходимо отметить за их ответ].

— Здесь ещё один из странных случаев на Stack Overflow. Некоторые из вопросов, отнесённых к «Точным повторам», являются, на самом деле, не повторами в силу небольших, но важных различий. Я не могу сейчас привести пример, но комментаторы часто быстро без тщательной проверки решают, что имеет место точный повтор. Иногда такое обвинение не подкреплено никаким доказательством. Ссылки на другие вопросы считаются достаточным доказательством.

— Значение репутации: после глобального пересчёта создатели сайта сделали решительное заявление, что участие не оценивается на сайте. Пересчёт обесценил вопросы, и новая политика была применена ретроспективно. Это привело к потере репутации. Создатели сайта заявили, что «репутация была бесполезной», что противоречило их предыдущей формулировке, что репутация является «показателем того, насколько сообщество доверяет вам». Основываясь на предшествующем заявлении, можно было бы утверждать, что пользователь, имеющий 500 репутационных баллов, оценивается как Джон Скит [хорошо известный в сообществе пользователь и автор многих технических книг].

Источник

Стоит ли теперь удивляться, что многие программисты, которые много лет были зарегистрированы на Stack Overflow, всё чаще уходят с платформы? В блоге Michael’s Techbox анонимный комментатор оставил следующее замечание:Сайты Stack Exchange объявлены местом «бесплатного и открытого» обмена информацией, но в действительности они захвачены некоторым небольшим количеством участников, которые просто пытаются получить оценочные баллы, «бейджики» и статус модератора, желая выступать «экспертами» и претендовать на удалённую работу. Например, посмотрите на активность этого пользователя, которая вместо выдачи полезных технических ответов состоит исключительно из осуждения ответов других людей:

Источник

В блоге The Programming Works было высказано аналогичное мнение

Я когда-то высказался на этом посту: «Если у вас есть вопрос по программированию, то Stack Overflow, вероятно, самое лучшее место, чтобы задать ваш вопрос». Так было, когда SO стартовал несколько лет назад; теперь — нет. Сейчас ваши шансы получить полезный ответ на ваш вопрос на SO близки к нулю. Вместо этого вы получите ворох комментариев, утверждающих, что ваш вопрос, например, не соответствует SO или неправильно сформулирован или ещё что-то — и ничего полезного. SO сейчас — ещё один зоопарк троллей и агрессивно-самоуверенных новичков.

Источник

Оба материала иллюстрируют, по-моему, коренную проблему Stack Overflow. Имеется некоторое количество демократически избранных модераторов, которые, как предполагалось, обязаны следовать некоторым довольно чётко сформулированным указаниям о том, как быть хорошими модераторами. Сайт имеет также весьма большое число пользователей с привилегиями:
  • 39 000 пользователей с репутацией 2 000 или больше имеют возможность редактировать вопросы других людей.
  • 26 000 пользователей с репутацией 3 000 или больше имеют возможность снимать вопросы. Пять голосов за снятие переводят вопрос в состояние «заблокирован».
  • 6 900 пользователей с репутацией 10 000 или больше имеют возможность удалять вопросы.
Из этих тысяч привилегированных пользователей многие правят своими виртуальными вотчинами как мельчайшие фюреры, накладывая чрезвычайно произвольные и плохо документированные правила на своих ничего не подозревающих крепостных, обрушивая проклятия и муки на тех, кто действует не в соответствии с их иррациональными, невежественными понятиями о том, что они считают хорошим вопросом/ответом. И это часто даже без прочтения всего вопроса/ответа или без какого-либо опыта в области, касающейся рассматриваемого вопроса.

Смеёмся нервно — как иначе на это реагировать?

В то время как я пишу эту статью, Jason Sachs (известный также как Jason S) находится под № 503 в списке пользователей с самой высокой за все времена репутацией — 70 688 баллов. Он также является одним из наиболее уважаемых пользователей Stack Overflow, которые решили прекратить затрачивать свою энергию на этом сайте. Вспоминая вышедший в 1995-м году выпуск сериала Seinfeld, он называет этих маленьких фюреров «супными фэнами»:

Поклонники сериала Seinfeld помнят его выпуск в ноябре 1995-го года «Супный фэн», в котором герой узнаёт о ресторанчике, где готовят фантастические супы. Ресторанчик ведёт экстравагантная персона, у которой есть чрезвычайно строгие требования к своим клиентам; если клиент не выдерживает надлежащий ритуал и моления, то хозяин кричит: «Не будет тебе супа!» — и у вас стремительно отнимают тарелку с супом, прежде чем вы сможете что-то возразить.

Наличие строгих стандартов этого типа само по себе не является «супным фанатизмом»; проблема появляется, когда такое отношение распространяется и начинает воздействовать на основную часть сообщества.Источник

Дальше в этой статье Sashs приводит цитаты от нескольких пользователей сайте, дополнительно иллюстрирующих проблему. Возьмите такую сторону:… сначала большинство задаваемых вопросов находило положительный отклик: дружелюбные комментарии и ответы, люди пытались помочь независимо от того, как вы сформулировали вопрос. В последнее время наблюдается тенденция просто снять или заблокировать большинство вопросов, заминусовать их, высмеять форму или стиль.Источник … или такой комментарий:Я вижу, что люди обычно снимают или минусуют вопрос немедленно, если считают этот вопрос хоть сколько-нибудь неправильным; требуется лишь 5 человек, чтобы признать ваш пост неправильным, хотя более 20-ти других пользователей сайта будут считать ответ правильным. Сообществу не нравится это, но не бывает никаких поясняющих комментариев, если вы не запросите их. Просто снять, спасибо, и приходите снова.Источник … или такой комментарий:Майкл Рихтер сделал хорошую работу по выявлению этой тенденции и её причин в своём посте «Почему я больше не участвую в работе StackOverflow» — он называет пользователей сайта, стремящихся к очень высокой репутации, «тусовкой распальцованных школяров» .Источник … или такой комментарий:Я думаю, что вы полностью правы, утверждая: «Этот сайт был предназначен обеспечить образцовый ресурс, позволяющий программистам найти ответы на их вопросы. Целые книги (причём очень хорошие) могут быть написаны на основе содержания самых лучших вопросов/ответов, размещённых здесь.» К сожалению, все они утонули в море бессмыслицы. Успех сайта привлекает к нему людей с вопросами о программировании (таких посетителей великое множество на Гугле). Это снижает способность системы к саморегулированию. Возникает потребность иметь нечто вроде «вступительного экзамена» для тех, кто желает отправить вопрос.Источник В своём блоге Джефф Этвуд, соучредитель Stack Overflow, объясняет значение слова «троллинг»:Классический тролль:

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

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

Основываясь на этом определении, я предложил бы альтернативное название для «супных фэнов» или «тусовки распальцованных школяров»: «сверхпривилегированные тролли». Да, вы прочитали правильно. Мало того, что сайт Stack Overflow страдает от фанатичных троллей, но и он является сообществом, где тролли, на самом деле, главные. Неудивительно, что враждебность и инфантильное поведение стали нормой, определяющей взаимодействие на Stack Overflow! Ясно, что никто не стережёт самих сторожей.Meta.StackOverflow — сообщество, предназначенное для вопросов о StackOverflow. Это то место, куда, как вам говорят, можно обратиться с любыми претензиями к Stack Overflow, но там проблема, возможно, ещё хуже.Латинская фраза «Quis custodiet ipsos custodes?» или «Кто устережёт самих сторожей?» является крылатым выражением в сатире и политической литературе, по крайней мере, с античного времени. Это означает, что любая система легко перестаёт выполнять функции, для которых она была создана, если её хранители имеют неограниченную власть.

Чтобы ещё более ухудшить ситуацию, сетевое программное обеспечение Stack Exchange автоматически удаляет вопросы, которые отвечают следующим критериям:

  • Снят более 9 дней назад
  • Не снят как повтор
  • Счёт <= 0
  • Не заблокирован
  • Нет ответов со счётом > 0
  • Нет принятого ответа
  • Нет подвешенных вновь открытых голосов
  • Редактирование в последние 9 дней не проводилось
Следствием этого является то, что многие хорошие вопросы не только снимаются, прежде чем кто-либо может ответить, но и то, что многие из них, в конечном итоге, исчезают всего лишь через 9 дней.Я думаю, что любой вопрос на Stack Overflow может быть охарактеризован, как не относящийся к теме сайта, если достаточно, чтобы только привилегированные тролли проголосовали за его снятие.Quora может показаться очевидным выбором, но этот сайт имеет много проблем, схожих с проблемами Stack Overflow, хотя и менее очевидным образом. Например, заминусованные ответы умело укрыты от большинства пользователей, и не редкость удаление ответов без какого-либо объяснения или уведомления и/или без видимых следов для всех, кроме автора ответа. Quora даёт некоторым пользователям абсолютно анонимные полномочия редактировать сайт так, как они считают целесообразным, но почти никто, кажется, не знает об этом.

Таким образом, в то время как Quora может показаться более демократичным и более здравым сайтом, на самом деле это только поверхностное впечатление. Троллинг и прямой мелкий авторитаризм привилегированных пользователей не менее часто встречается и на этом сайте. По многим из тех же самых причин, по каким антиутопия Хаксли «Дивный новый мир» представляется более страшной и беспокоящей, чем антиутопия Оруэлла «1984», сообщество на Quora страшит и беспокоит больше, чем на сайте Stack Overflow.

По крайней мере, Stack Overflow не заботится о том, чтобы скрыть свою тоталитарную природу от тех, кто готов уделить больше, чем несколько минут внимания внутренней работе сайта. По крайней мере, диктаторы на Stack Overflow как-то публично известны и должны дать открытое объяснение, когда они решают снять какой-то вопрос. И, возможно, ещё более важно то, что Stack Overflow не выводит нас из себя бесчисленными дурацкими вопросами типа: «Шерил Сандберг когда-нибудь что-нибудь откладывает на потом?». Несмотря на все недостатки, его слабые попытки сделать управляемым контроль качества, осуществляемый сообществом, не так плохи, как то же на сайте Quora.

habrahabr.ru

Роман Химов » Килорепутация на Стековерфлоу за две недели

Началось всё с того, что мне срочно захотелось получить 1000 репутации на Стековерфлоу. Мысль появилась ещё в июле, но в августе я решил заняться ею плотно. Собственно, аккаунт на Стеке у меня был заведён ещё более шести лет назад, а за проектом я следил ещё с того момента, когда не было даже сайта, но уже был одноимённый подкаст. Но как-то не спешил участвовать, поводов было немного, а даже когда завёл аккаунт, получилось так, что вопросов у меня не было, а ответы, как мне показалось, и так было кому давать. В результате, аккаунт так и проболтался шесть с небольшим лет до 5 августа этого года. За это время аккаунт оброс репутацией аж в 31 балл (изначально бесплатно и навсегда дают один) за один-единственный ответ. С этого и стартовал.Изначально я ставил себе задачу сделать 1 000 за месяц и войти где-то в первые 5% по росту. По факту, девятнадцатого числа, ровно двумя неделями позже репутациометр уверенно показал 1031. На тот момент уже за 32 ответа. При этом, на первой неделе удалось войти в 0,56% лучших, а на второй в 0,26%. После этого я, конечно, подрасслабился, но по итогу августа всё равно вошёл в верхние 0,40%, да и сейчас ещё попадаю в 0,64% за квартал. Подытожу некоторые наблюдения на эту тему, благо сегодня наконец-то заработал честный минус.

Основное наблюдение, конечно, в том, что справедливости нет и не планируется. С одной стороны, это ожидаемо, с другой всё равно немного обидно. Пара шикарных ответов имеет по нулям, ещё пара по одному голосу. А если посмотреть на то, что получило максимальное количество голосов или, тем более, наибольшую прибыль по репутации, то становится даже как-то неловко (не все топовые ответы такие, конечно, но). В какой-то мере это и понятно, чем более специфичен вопрос, тем меньшее количество людей вообще понимают о чём идёт речь и могут что-то оценить, и наоборот, простые, но понятные всем вопросы гарантированно собирают плюсики. Остаётся утешаться тем, что одно другое компенсирует.

Второе наблюдение абсолютно ожидаемо, но интересно в количественной оценке. Для выдающихся показателей репутациометра, конечно, надо было активнее участвовать 7 и более лет назад. Как раз таки на том этапе вопросы типа «а не в амперах ли измеряется сила тока?» были вполне приветствуемы (сейчас-то это уже модерируемые дубли) и подобные вопросы, а также ответы к ним, за годы собирают просто чудовищное количество баллов. Если ответ собирает 1000 голосов сам по себе, то это 10 000 баллов, что очень немало. А если таких ответов несколько, то это вообще караул. Получается, что каждый активный участник за годы собирает за собой хвост из вопросов и ответов, который в будущем может влиять на репутациометр даже больше, чем текущая активность, люди что-то ищут, находят, плюсуют.

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

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

Вознаграждаемое наблюдение — вознаграждения реально работают. Без них наработать такой показатель за две недели было бы крайне сложно. Интересно, что работают они именно как привлечение внимания, то есть, вознаграждаемые вопросы получают гораздо больше просмотров и откликов. Обычно это работает в плюс, баллы набирают как задающий вопрос, так и отвечающий (причём, иногда голоса перевешивают даже само вознаграждение), но бывают и весёлые исключения, когда привлечённое внимание отрабатывает в минус со всей отдачей.

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

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

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

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

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

roman.khimov.ru

Как работает Stack Overflow — железо / Хабрахабр

Хотелось бы сказать, что Stack Overflow — масштабный проект, но это не так. Я имею ввиду мы добились многого, но я не могу назвать наш проект “большим”, ещё рано. Давайте я приведу в пример некоторые цифры — с какой нагрузкой мы имеем дело сейчас. Срез статистики за 24 часа от 12 ноября 2013 года. Это обычный будний день. Отмечу, что здесь представлена информация только по нашим собственным вычислительным мощностям, без CDN.

Статистика
  • 148,084,883 HTTP запросов к нашему балансировщику нагрузки
  • 36,095,312 из них — настоящие загрузки страниц
  • 833,992,982,627 байт (776 ГБ) HTTP трафика отправлено
  • 286,574,644,032 байт (267 ГБ) трафика получено
  • 1,125,992,557,312 байт (1,048 ГБ) трафика отправлено
  • 334,572,103 SQL запроса по HTTP запросам
  • 412,865,051 запрос до Redis серверов
  • 3,603,418 запросов до обработчика тэгов (отдельный сервис)
  • 558,224,585 мс (155 часов) было затрачено на обработку SQL запросов
  • 99,346,916 мс (27 часов) потребовалось на ожидание ответа от серверов Redis
  • 132,384,059 мс (36 часов) прошло на обработку запросов по тэгам
  • 2,728,177,045 мс (757 часов) работали скрипты ASP.Net

Мне обязательно нужно будет написать пост о том, как мы эти цифры получаем, но данная статистика (кроме трафика) рассчитана только благодаря HTTP логам. Как получилось так много часов за день? Мы называем это магией. Большинство людей называют это “несколько серверов с многоядерными процессорами”, но мы всё списываем на магию. Stack Exchange работает на следующем оборудовании:

  • 4 MS SQL сервера
  • 11 IIS Веб-серверов
  • 2 сервера Redis
  • 3 сервера, занимающиеся обработкой тэгов (абсолютно всё, что касается тегов, например запрос /questions/tagged/c++)
  • 3 сервера ElasticSearch
  • 2 балансировщика нагрузки (реализация HAProxy)
  • 2 свитча (каждый на базе Nexus 5596 + Fabric Extenders)
  • 2 Файервол Cisco 5525-X ASAs
  • 2 Маршрутизатора Cisco 3945

Как вся эта красота выглядит можно посмотреть на первой фотографии (выше).

Мы не просто занимаемся хостингом своих сайтов. Ближайшая стойка — это сервера для виртулизации (vmware) и вспомогательной инфраструктуры, которая не влияет на работу сервиса непосредственно, например машинки для деплоя, контроллеры домена, мониторинг, дополнительная база данных для администраторов и прочее. 2 SQL сервера из списка выше были резервными серверами до недавнего времени — сейчас они используются для read-only запросов, так что мы можем продолжать масштабироваться, не задумываясь о нагрузке на базы данных еще долго. 2 веб-сервера из того списка предназначены для разработки и перифирийных задач, по-этому они потребляют мало трафика.

Об оборудовании
Если мы на момент представим, что что-то произошло и вся избыточность инфраструктуры пропала, то весь Stack Exchange может работать на следующем оборудовании без потери в производительности:
  • 2 SQL сервера (Stack Overflow на одной машинке, всё остальное на другой, хотя мы уверены, что они смогут работать на одном сервере)
  • 2 Веб-сервера (возможно три, но я верю, что будет достаточно и двух)
  • 1 сервер Redis
  • 1 сервер для обработки тэгов
  • 1 сервер ElasticSearch
  • 1 балансировщик нагрузки
  • 1 свитч
  • 1 ASA брендмауэр
  • 1 Маршрутизатор

Нам надо будет попробовать отключить часть серверов специально чтобы проверить на деле. :)

Ниже — средняя конфигурация оборудования:

  • SQL сервера работают на 384 ГБ ОЗУ с файловым хранилищем в 1.8ТБ (SSD)
  • Сервера Redis запускаются на машинках с 96 ГБ ОЗУ
  • Сервера ElasticSearch — 196 ГБ ОЗУ
  • Сервера для обработки тегов требуют самых быстрых процессоров, что мы можем приобрести.
  • Свитчи — 10 ГБит на каждый порт.
  • Веб-сервера ничем особым не отличаются — 32 ГБ ОЗУ, 2 четырёхъядерных процессора и 300 ГБ SSD хранилища на каждый.
  • Сервера, у которых нет сети 2х10Гбит/с (например SQL) подключаются четырьмя соединениями по 1 Гбит/с.

Кажется, что 20Гбит/с — слишком много? Да, например SQL сервера в пик не загружают сеть больше, чем на 100-200 Мбит/с, но не забывайте про резервное копирование, перестроение топологии — это пожет понадобиться в любой момент и тогда сеть будет использована на полную. Такое количество памяти и SSD смогут загрузить этот канал полностью.

Хранилище
В данный момент у нас примерно 2 ТБ данных в SQL (1.06/1.16 ТБ на первом кластере из 18 SSD и 0.889/1.45 ТБ на втором, состоящем из 4 SSD). Возможно, стоило бы задуматься об облаках, но сейчас мы используем SSD и время записи в базу равно буквально 0 миллисекундам. С базой данных в памяти и двумя уровнями кеша перед ней, Stack Overflow имеет соотношение чтения к записи 40 к 60. Да, всё верно, 60% времени работы базы данных она пишет. На веб-серверах используются SSD диски на 320 ГБ в RAID1. Сервера ElasticSearch тоже снабжаются SSD дисками на 300 ГБ. Это важно, так как там часто выполняется перезапись и индексация.

Мы так же не упомянули о SAN. Это DELL Equal Logic PS6110X с 24 SAS 10K дисками и подключением 2х10 Гбит/с. Используется он как хранилище для виртуальных серверов VmWare как облако и не связан с самим сайтом. Если этот сервер упадёт, сайты некоторое время даже не будут знать об этом.

Что дальше?
Что мы будем с этим делать? Мы хотим большей производительности — это очень важно для нас. 12-го ноября страница загружалась в среднем 28 миллисекунд. Мы стараемся поддерживать скорость загрузки не дольше 50 миллисекунд. Вот средняя статистика загрузки популярных страниц в этот день:
  • Страницы вопросов с ответами — 28 миллисекунд (29.7 млн. запросов)
  • Профили пользователей — 39 миллисекунд (1.7 мил. запросов)
  • Список вопросов — 78 миллисекунд (1.1 млн. запросов)
  • Домашняя страница — 65 миллисекунд (1 млн. запросов), что очень медленно. Мы исправим это в ближайшее время.

Мы мониторим скорость загрузки путём записи таймингов. Благодаря этому, мы можем составить очень наглядный график:

Масштабируемость в будущем
Очевидно, что все сервисы сейчас работают на низкой нагрузке. Веб-сервера потребляют в среднем 5-15% процессора, 15,5 ГБ ОЗУ, и 20-40 МБит/c полосы сети. Средняя загрузка процессора сервера базы данных — 5-10%, 365 ГБ ОЗУ и 100-200 МБит/с полосы сети. Благодаря этому мы можем полноценно развиваться и, что очень важно, мы страхуемся от падения на случай повышения нагрузки — ошибка в коде или любой другой сбой.

Вот скриншот из Opserver:

Главная причина того, что нагрузка настолько низкая, заключается в эффективности кода. Пусть пост и посвящен другому, но эффективный код — критическое место для масштабирования вашего железа в будущем. Все, что вы сделали, но не должны были делать, будет вам стоить дороже, чем если бы вы этого не сделали вовсе — аналогичное правило касается и неэффективного кода. Под стоимостью понимается следующее: энергопотребление, стоимость железа (потому что вам нужно больше серверов, или они должны быть мощнее), разработчики, занятые попытками осознать более сложный код (хотя, честно говоря, оптимизированный код не обязательно становится проще) и скорее всего медленный рендер страниц — что выражается в реакции пользователя, который не станет ждать загрузки еще одной страницы… а то и вовсе больше не зайдет к вам. Цена неэффективного кода может оказаться гораздо выше, чем вам кажется.

Итак, сегодня мы познакомились с тем, как работает Stack Overflow на нынешнем железе. В следующий раз мы узнаем о том, почему мы не спешим переезжать в облака.

habrahabr.ru

Сайт дня: StackOverflow - сделано программистами для программистов

19.09.2013 17:11 Сайт дня: StackOverflow - сделано программистами для программистов

По многочисленным просьбам читателей я продолжаю увеличивать градус "IT-шности", "технологичности" и "гиковости", так что сегодняшним сайтом дня объявляется StackOverflow, которому на днях исполнилось пять лет. Вообще интересно получается: пару лет назад читатели ругались на излишнюю гиковость рубрики и просили побольше "простых и понятных" сайтов, а теперь - наоборот. Лично меня такая тенденция очень радует.

Итак, знаменитый StackOverflow - настолько IT-шный сайт, что дальше некуда:

Если кто не знает, сайт StackOverflow - это сервис вопросов и ответов по программированию. Это примерно как Google Answers или Яндекс.Ответы, только для программистов. Этот сервис уверенно входит в сотню самых посещаемых сайтов по рейтингу Alexa, и в первую очередь, благодаря тому, что постоянно ведутся работы по поисковой оптимизации сайта. Там сотни тысяч программистов (и миллионы будущих программистов) обсуждают сотни языков программирования, фреймворков, платформ и так далее. Пару лет назад шутили, что на StackOverflow можно научиться программированию быстрее, чем в университете. Теперь это уже не шутка, а хорошо подтверждённый факт.

Сайт StackOverflow - это живое подтверждение того, что программисты были и остаются одной из самых многочисленных, активных, доброжелательных, бескорыстных и вменяемых групп в интернете. Было много попыток создать подобный сервис по другим тематикам, но они "не выстрелили", потому что специалисты из других областей не бросались отвечать на вопросы с энтузиазмом, хронически присущим программистам.

Создателем сайта StackOverflow является не кто иной, как сам Джоэл Спольски, известный не только значительным вкладом в разработку самых удачных версий Microsoft Excel, но и своим блогом "Joel on Software", где сложнейшие вопросы разработки программного обеспечения объясняются предельно простым, "светским" языком. Участие Спольски - само по себе достаточная рекомендация для "программистского" сайта, ведь он едва ли не лучше всех знает, что нужно программистам и как сделать их жизнь проще, а работу - эффективнее.

StackOverflow создан в 2008 году, когда большая часть общения между программистами происходила на специализированных форумах. Одной из самых больших проблем форумов тогда было то, что многие пользователи пускались в пространные рассуждения вместо того, чтобы просто задать конкретный вопрос или дать конкретный ответ. У многих программистов просто не было времени на чтение тусовочного трёпа в стиле Facebook, так что полезность программистских форумов падала. И тут Спольски вместе с приятелем запускает сервис, на котором нельзя тупо болтать за жизнь, а можно только задавать вопросы по программированию и отвечать на них. Это ещё один из тех случаев, когда урезание функциональности на порядок повысило полезность сервиса.

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

Любопытно, что ряд компаний, нанимая разработчика программного обеспечения, рассматривают активный профиль на StackOverflow как важную часть резюме. Логично, ведь так можно определить, насколько человек в теме, каковы его навыки общения и так далее. Большую роль играет и система пользовательских оценок вопросам и ответам, примерно такая же, как на Digg. Таким образом профиль на StackOverflow становится отличным способом продемонстрировать свою полезность сообществу программистов.

Разработчики StackOverflow продвигают его движок для создания свободного семейства вопросно-ответных сайтов StackExchange. Дело хорошее, но остальные сайты этой сети даже приблизительно не догоняют StackOverflow по популярности. Как и многочисленные клоны StackOverflow.

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

www.dfacto.ru


Смотрите также