Как стать автором
Обновить
0
@Sergey2aread⁠-⁠only

Пользователь

Отправить сообщение

Архитектура Stack Overflow

Время на прочтение12 мин
Количество просмотров58K
image

Чтобы понять, как все это работает, давайте начнем с показателей Stack Overflow. Итак, ниже приводится статистика за 12 ноября 2013 и 9 февраля 2016 года:

статистика
  • 209,420,973 (+61,336,090) HTTP-запросов к нашему балансировщику нагрузки;
  • 66,294,789 (+30,199,477) страниц было загружено;
  • 1,240,266,346,053 (+406,273,363,426) битов (1.24 TБ) отосланного HTTP-трафика;
  • 569,449,470,023 (+282,874,825,991) битов (569 ГБ) всего получено;
  • 3,084,303,599,266 (+1,958,311,041,954) битов (3.08 ТБ) всего отослано;
  • 504,816,843 (+170,244,740) SQL-запросов (только из HTTP-запросов);
  • 5,831,683,114 (+5,418,818,063) обращений к Redis;
  • 17,158,874 (not tracked in 2013) поисков в Elastic;
  • 3,661,134 (+57,716) запросов Tag Engine;
  • 607,073,066 (+48,848,481) мс (168 часов) выполнения SQL-запросов;
  • 10,396,073 (-88,950,843) мс (2.8 часов) затрачено на обращение к Redis;
  • 147,018,571 (+14,634,512) мс (40.8 часов) затрачено на запросы к Tag Engine;
  • 1,609,944,301 (-1,118,232,744) мс (447 часов) затрачено на обработку в ASP.Net;
  • 22.71 (-5.29) мс в среднем (19.12 мс в ASP.Net) на формирование каждой из 49,180,275 запрошенных страниц;
  • 11.80 (-53.2) мс в среднем (8.81 мс в ASP.Net) на формирование каждой из 6,370,076 домашних страниц.


Вы можете спросить, почему существенно сократилась продолжительность обработки в ASP.Net по сравнению с 2013 годом (когда было 757 часов) несмотря на прибавление 61 миллиона запросов в день. Это произошло как и из-за модернизации оборудования в начале 2015 года, так и из-за некоторого изменения параметров в самих приложениях. Пожалуйста, не забывайте, что производительность – это наша отличительная особенность. Если Вы хотите, чтобы я более подробно рассказал о характеристиках оборудования – без проблем. В следующем посте будут подробные спецификации железа всех серверов, которые обеспечивают работу сайта.

Итак, что изменилось за прошедшие 2 года? Кроме замены некоторых серверов и сетевого оборудования, не очень многое. Вот укрупненный список хардварной части, которая обеспечивает работу ресурса (выделены различия по сравнению с 2013 годом):

  • 4 Microsoft SQL Servers (новое железо для 2-х из них);
  • 11 Web-серверов IIS (новое оборудование);
  • 2 сервера Redis (новое оборудование);
  • 3 сервера Tag Engine (новое оборудование для 2-х из 3-х);
  • 3 сервера Elasticsearch (те же, старые);
  • 4 балансировщика нагрузки HAProxy (добавлено 2 для поддержки CloudFlare);
  • 2 брандмауэра Fortinet 800C (вместо Cisco 5525-X ASAs);
  • 2 маршрутизатора Cisco ASR-1001 (вместо маршрутизаторов Cisco 3945);
  • 2 маршрутизатора Cisco ASR-1001-x (новые!).

Что нам необходимо, чтобы запустить Stack Overflow? Этот процесс не сильно изменился с 2013 года, но из-за оптимизации и нового железа, нам необходим только один web-сервер. Мы этого не хотели, но несколько раз успешно проверили. Вношу ясность: я заявляю, что это работает. Я не утверждаю, что это (запуск SO на единственном web-сервере) — хорошая затея, хотя каждый раз выглядит весьма забавно.
Читать дальше →

Проблемы при использовании Math.random()

Время на прочтение18 мин
Количество просмотров46K
image

В английском есть такая аббревиатура — TIFU. Привести здесь её точное значение мы не можем, но вы без труда найдёте его в Сети. А после «литературной обработки» TIFU можно перевести как «сегодня я всё испортил». В контексте этого поста данная фраза относится к использованию функции Math.random() в JavaScript-движке V8. Хотя случилось это не сегодня, а пару лет назад. Да и дров я наломал не по своей вине, корень зла таится в самой этой функции.

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

Дональд Кнут, «Искусство программирования», том 2.

Надеюсь, что к концу этого поста вы согласитесь с двумя утверждениями:

  • Мы были идиотами, поскольку использовали генератор псевдослучайных чисел в V8, не понимая его ограничений. И если очень лень, то безопаснее использовать криптографически стойкие генераторы псевдослучайных чисел.
  • В V8 необходима новая реализация Math.random(). Работу текущего алгоритма, кочующего от одного программиста к другому, нельзя считать удовлетворительной из-за слабой, неочевидной деградации, часто встречающейся в реальных проектах.

Хочу подчеркнуть, что сам движок V8 — замечательный продукт и его создатели очень талантливы. Я ни в коей мере не обвиняю их. Просто эта ситуация иллюстрирует, насколько сильно влияют на процесс разработки даже небольшие нюансы.
Читать дальше →

Диванный маркетинг мобильной игры (120.000 установок в первый месяц. Совпадение?)

Время на прочтение4 мин
Количество просмотров17K

Часто ли вам приходилось слышать фразы “я не собираюсь тратить ни копейки на продвижение”, “хорошая игра сама себя продаёт”, “у тех парней получилось, и у меня получится”, а чуть позже — “игра не пошла”, “на рынке нет места независимому одиночке”, “золотое время инди-игр прошло”?

Всем хочется верить в успех своей игры, что уж она-то ворвётся в топы и станет новым хитом, несущим свет людям и процветание разработчикам. Но при этом никто не спешит рисковать деньгами, чтобы помочь игре взять хороший старт. “А вдруг не полетит?”, “Я не разбираюсь в маркетинге!”, “Я разработчик, я не хочу ничего продвигать, хочу чик-чик и в продакшен!”

Мне никогда не нравился такой подход, поэтому на старте мы немного потратились на неумелый “диванный” маркетинг. И наша первая игра не провалилась. Отбила затраты, заработала сверху, получила отличные отзывы — 5 звезд в (AppStore) и 4.7 в (GooglePlay), и даже спустя 9 месяцев не спешит отправляться в “Долину Смерти” приложений. Но сейчас, видя такой отклик аудитории, появляются сомнения — а действительно ли был толк в нашей небольшой “PR-кампании” или нам просто повезло? Ошибка выжившего? Совпадение? Может, попав в топ новинок GooglePlay, мы бы и так нашли своих игроков?

Я изложу факты, покажу графики и цифры, а выводы предлагаю сделать вместе в комментариях — раскрутилась бы игра сама или всё-таки без продвижения никто бы о ней не узнал?
Читать дальше →

Как мы сделали ABBYY FineReader, или история, произошедшая 20 лет назад

Время на прочтение7 мин
Количество просмотров30K
ABBYY FineReader – программа для распознавания текстов, которая в России известна многим ещё со студенческих времён. В этом году FineReader исполняется 22 года, он немного моложе нашего словаря Lingvo. Как так вышло, что вместе со словарём молодые программисты из BIT Software (в то время ABBYY называлась именно так) занялись распознаванием текстов? И что помогло Файну стать одной из самых узнаваемых на рынке программ?

На самом деле, всё очень логично. Если бы не Lingvo, FineReader’а могло бы и не быть. Началось всё с масштабного и амбициозного комплекса под названием Lingvo Systems. С его помощью человек мог отсканировать текст на одном языке, пропустить его через программу и получить перевод, правда, черновой, но для понимания смысла его было достаточно.
Читать дальше →

Время материализоваться: конкурс по Material Design от Google

Время на прочтение3 мин
Количество просмотров24K
Привет, Хабрахабр! Сегодня у нас для вас очень приятные новости. Как вы все, наверное, знаете, в Android 5.х и его последователе, Android 6.0 Marshmallow используется новое оформление. Концепция Material Design была представлена на Google I/O 2014 и получила позитивный отклик не только среди дизайнеров и разработчиков приложений, но и среди пользователей.



На сегодняшний день более 200 тысяч приложений в Google Play переработаны с учётом гайдлайнов по Material Design. Если и вы уже обновили свое приложение в Google Play до Material Design или же планируете это сделать в ближайщее время, то принимайте участие в конкурсе по Material Design, который стартовал на этой неделе и продлится до 15 ноября. Разыгрываем: размещение вашего приложения в разделе featuring магазина Google Play, билеты на ежегодную конференцию Google I/O и планшеты Nexus 9. Мы выберем по три лучших приложения в трёх категориях. Подробности в правилах конкурса.
А вот как мы можем вам помочь в подготовке к конкурсу

Высоконагруженное приложение на java

Время на прочтение4 мин
Количество просмотров29K
Хотелось бы добавить по поводу высоконагруженных систем на java относительно этой статьи. В комментариях писать слишком много, поэтому напишу отдельно. Подход не совсем программиста, но может кому пригодится. Это только мое мнение, возможно, оно где-то неверно.

Платформа JEE


Конечно на стандартной java ваше приложение будет работать быстрее, потреблять меньше памяти, и вы можете сделать архитектуру именно такой, как вам нужно. Но это при том условии, что у вас неограниченное количество человеко-часов, и вы каждый день пишете такую ерунду как приложение на 100к клиентов. В противном случае для этого потребуется очень много времени и итераций, и в итоге все равно получиться чуточку хуже, чем то, как это реализовано в современных JEE серверах. Все промахи всплывут только под реальной нагрузкой, и архитектуру приложения придется переделывать не один раз.
Читать дальше →

У нас проблемы с промисами

Время на прочтение16 мин
Количество просмотров244K
Разрешите представить вам перевод статьи Нолана Лоусона «У нас проблемы с промисами», одной из лучших по теме из тех, что мне доводилось читать.

У нас проблемы с промисами


Дорогие JavaScript разработчики, настал момент признать это — у нас проблемы с промисами.

Нет, не с самими промисами. Их реализация по спецификации A+ превосходна. Основная проблема, которая сама предстала передо мной за годы наблюдений за тем, как многие программисты борются с богатыми на промисы API, заключается в следующем:

— Многие из нас используют промисы без действительного их понимания.

Если вы мне не верите, решите такую задачку:

Вопрос: В чем разница между этими четырьмя вариантами использования промисов?

doSomething().then(function () {
  return doSomethingElse();
});

doSomething().then(function () {
  doSomethingElse();
});

doSomething().then(doSomethingElse());

doSomething().then(doSomethingElse);

Узнайте решение задачи

<input> Я ♥ тебя, но ты меня обламываешь

Время на прочтение5 мин
Количество просмотров54K

Привет, представляю твоему вниманию перевод статьи Моники Динкулеску '<input> I ♡ you, but you're bringing me down'. Художественный перевод с английского не является моей основной специализацией, поэтому в тексте возможны неточности. Правки призываю отправлять личным сообщением, а если есть что сказать, велкам в комментарии. Отдельное спасибо @Kt за редакторские правки. Приятного чтения.


Некоторые люди делают мебель. Некоторые люди вяжут. Некоторые люди имеют хобби, которые никак не пересекаются с HTML спецификациям из 90-х. Но я не из таких. И, вот история о том, как <input> стал той хренью, которой он является, и почему его надо сжечь


Ранние годы



1995 был клевым годом. Друзья, Скорая Помощь, Зена по телеку. TLC занимали верхушки чартов с хитом "Waterfalls". С браузерами было нормуль, потому что HTML было все очень нормуль. У нас были Mosaic, Netscape и IE1, а при утверждении спеков HTML 2, наконец, выкроили время для стандартизации форм. Девяносто пятый был годом рождения <input>, и теперь, когда он достаточно взрослый, чтобы покупать в магазине алкоголь, нам нужно поговорить.
Продолжить чтение статьи

Балансировка 70 тысяч запросов в секунду на HighLoad++

Время на прочтение5 мин
Количество просмотров39K

Библиотека докладов


Это не просто статья — это целая библиотека докладов про внутреннее устройство тех или иных крупных и высоконагруженных проектов. Все эти доклады звучали на конференциях HighLoad++ и РИТ++ за последние несколько лет.


Читать дальше →

«Фантом человека» откроет широкие возможности перед медиками. Труп женщины разрезали на 5 000 частей и отсканировали

Время на прочтение1 мин
Количество просмотров27K
Тело супруги 20 лет назад пожертвовал вдовец, и несколько дней назад завершился процесс оцифровки фрагментов. Труп женщины 59-ти лет, скончавшейся от ожирения, разрезали на 5 000 кусочков размером 0,33 мм, и теперь, по мнению медиков, это откроет новые возможности, в том числе для опытов, проведение которых небезопасно для живого человека.



Читать дальше →

Как двое парней, далеких от IT, построили свою компанию и выручили миллионы с ее продажи

Время на прочтение7 мин
Количество просмотров11K


Вместе со своим бывшим однокурсником из юридического университета мы начали бизнес в электронной коммерции и успешно продали акции компании, прилично заработав на этой сделке. И я хочу поделиться с вами, как мы этого достигли.
Читать дальше →

Мария Черницкая: «Отличное было время — никто не стоял над душой»

Время на прочтение7 мин
Количество просмотров3.7K


Мария Черницкая закончила филфак СПбГУ, изучала наследие Владимира Набокова, училась набоковедению в США и собиралась было писать там диссертацию — но довольно неожиданно стала заниматься рекламой и маркетингом в области IT-технологий, работала в DataArt директором по маркетингу новорожденного сервиса Mail.ru. Теперь Мария — основатель, директор и основной группы компаний iConText, крупнейшего независимого интернет-агентства в России.

— Ты же закончила филфак, занималась Набоковым?

— Да, я училась в Америке и должна была писать PhD. Я вернулась в Петербург весной и предполагалось, что уже осенью уеду в Канзас, где набоковедение было очень сильное, но в первую весну я не поступила. Мне сказали: «Приходите через год, потусуйтесь пока в России». Для меня это был депрессивный облом. Я думала, что же я буду тут делать, я не хочу здесь жить ни секунды. У меня не было ни планов, ни работы. Я преподавала английский в 610 школе и подрабатывала в легендарном киноведческом журнале «Сеанс» у Любы Аркус.

— А как в твоей жизни появился интернет?

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

В какой-то момент я открыла для себя, что в Москве есть провайдер «Ситилайн» (один из первых крупных российских интернет-провайдеров — прим. ред.) и глянцевый журнал «Интернет». Я мечтала приобщиться к миру этих людей — и вдруг владелец «Ситилайна» Емеля (Емельян Захаров — видный московский галерист — прим. ред.), позвонил мне и предложил стать их директором в Петербурге. Такое было странное время — социальные лифты ездили с огромной скоростью, одни люди находили других, сходных по духу, и доверяли им большие деньги и большие задачи.
Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность