Найти в Дзене
Insane Rokatanskii

RuSpeedTest: Хроники Импортозамещения Скорости, или Как Я Научился Измерять Интернет в Верстах

Все события вымышлены, любые совпадения с реальными именами или названиями - случайны. Друзья, сегодня я расскажу вам историю, которая началась с невинного звонка из Минцифры и закончилась... впрочем, она ещё не закончилась. Меня зовут Павел, и я тот самый идиот, который согласился создать отечественный аналог Speedtest.
-Павел Сергеевич? Поздравляем, ваша компания 'ИнноТех Солюшнс' выиграла государственный тендер на создание СуверенногоИзмерителяСкоростиИнтернет-СоединенияОтечественногоПроизводства, сокращённо — RuSpeedTest! Я чуть не подавился кофе. Мы вообще-то делали приложение для заказа пиццы. -Но мы не участвовали ни в каком тендере... -Это несущественно. У вас есть ООО и вы умеете программировать. Техническое задание пришлём в течение 48 рабочих часов.
Когда я открыл ТЗ, мой junior-разработчик Миша побледнел и спросил, можно ли ему уволиться задним числом.
ТРЕБОВАНИЯ К ФУНКЦИОНАЛУ: -Павел Сергеевич, а что такое скрепность соединения? — робко спросил Миша. -Понятия не имею,
Оглавление
Все события вымышлены, любые совпадения с реальными именами или названиями - случайны.

Друзья, сегодня я расскажу вам историю, которая началась с невинного звонка из Минцифры и закончилась... впрочем, она ещё не закончилась. Меня зовут Павел, и я тот самый идиот, который согласился создать отечественный аналог Speedtest.

День первый: "Вы выиграли тендер!"


-Павел Сергеевич? Поздравляем, ваша компания 'ИнноТех Солюшнс' выиграла государственный тендер на создание
СуверенногоИзмерителяСкоростиИнтернет-СоединенияОтечественногоПроизводства, сокращённо — RuSpeedTest!

Я чуть не подавился кофе. Мы вообще-то делали приложение для заказа пиццы.

-Но мы не участвовали ни в каком тендере...

-Это несущественно. У вас есть ООО и вы умеете программировать. Техническое задание пришлём в течение 48 рабочих часов.

Техническое задание: Добро пожаловать в ад


Когда я открыл ТЗ, мой junior-разработчик Миша побледнел и спросил, можно ли ему уволиться задним числом.
ТРЕБОВАНИЯ К ФУНКЦИОНАЛУ:

  1. Измерение скорости должно производиться в верстах в час (1 Мбит/с = 1066,8 версты/час по ГОСТ Р 58144-2018)
  2. Вместо "пинга" использовать термин "отклик отечественный" (ОО)
  3. Обязательная проверка на "скрепность соединения" — соответствие традиционным ценностям трафика
  4. При скорости ниже заявленной провайдером выводить сообщение: "Возможно, это связано с внешними санкциями"

-Павел Сергеевич, а что такое скрепность соединения? — робко спросил Миша.

-Понятия не имею, но у нас есть 14 дней на разработку.

День пятый: Конкуренты не дремлют

Пока мы ломали голову над алгоритмом перевода мегабитов в версты, на рынке появились конкуренты.

"ПравославныйSpeedtest" от РПЦ-Софт обещал не только измерять скорость, но и освящать интернет-соединение. При каждом тесте проигрывался колокольный звон, а результаты выдавались в "кириллобайтах в крестный ход".

"СкрепоМетр" от компании "Традиционные Ценности Диджитал" пошёл ещё дальше. Их приложение проверяло не только скорость, но и "патриотичность пакетов данных". Если больше 30% трафика шло через западные сервера, пользователь получал предупреждение о "низкой духовности соединения".

-Нам конец, — сказал Миша, листая Хабр.

-Не паникуй. У нас есть преимущество — мы единственные, кто получил госзаказ. И потом, ты видел их код? Они используют jQuery в 2025 году!

День десятый: Новые требования


Утренняя почта принесла
Дополнение №1 к ТЗ:
СРОЧНО! ВНЕСТИ ИЗМЕНЕНИЯ:

  • Добавить режим "Боевой тест" — измерение скорости в условиях "особой сетевой операции"
  • Интегрировать с Госуслугами (причину не объяснили)
  • При обнаружении VPN автоматически отправлять данные в... [зачёркнуто] выводить воспитательное уведомление
  • Латентность переименовать в "задумчивость", джиттер — в "трепетание патриотическое"


-
Павел Сергеевич, я не понимаю, как интегрировать измерение скорости с Госуслугами," — Миша выглядел так, будто не спал три дня.

-А ты пробовал?

-Да! Теперь при каждом тесте скорости пользователю предлагают записаться к врачу!

-Отлично, оставляем как фичу.

Презентация в министерстве: Театр одного абсурда

-Итак, господа, представляем вам RuSpeedTest 1.0!

В зале сидели люди в одинаковых серых костюмах. Их лица не выражали ничего. Это было страшнее любого баг-репорта.

-Почему скорость отображается зелёным цветом?" — спросил человек с бейджиком "Заместитель по цифровому суверенитету.

-Это... это просто цвет. Зелёный означает хорошую скорость...

-Зелёный — цвет доллара. Переделать на триколор.

-Но как отобразить скорость триколором?

-Это ваши проблемы. Следующий вопрос — почему вы используете термин "сервер"? Это же английское слово!

-А как называть?-

-Цифровой услужитель. И вообще, Павел Сергеевич, мы тут посовещались...

Дальше началось самое интересное.

Битва титанов: RuSpeedTest vs ПравославныйSpeedtest

"Ваше приложение недостаточно патриотично!" — заявил представитель РПЦ-Софт. — "Наш ПравославныйSpeedtest не просто измеряет скорость, он спасает души пользователей!""Это как?" — я старался сохранять спокойствие."При низкой скорости мы предлагаем помолиться. Статистика показывает улучшение на 15% после молебна!"

Представитель СкрепоМетра не остался в долгу:

-А наше приложение блокирует бездуховные байты! Только представьте — ваш интернет очищен от тлетворного влияния запада!

-Но это же просто единицы и нули...

-Именно! Западные единицы и нули! Мы заменяем их на отечественные!

Апокалипсис спецификаций

К двенадцатому дню требования превратились в сюрреалистическую поэму:

  • Скорость загрузки переименовать в "стремительность получения"
  • Скорость отдачи — в "щедрость цифровую"
  • Добавить кнопку "Пожаловаться на провайдера в Роскомнадзор" (делает скриншот и отправляет автоматически)
  • При скорости выше 100 Мбит/с показывать предупреждение: "Вы уверены, что вам нужна такая скорость? Подумайте о духовном!"
  • Интегрировать с системой "Честный ЗНАК" для маркировки каждого мегабайта

-Миш, ты ещё жив? — я заглянул в комнату разработки.

-Я написал функцию, которая конвертирует пинг в православные миллисекунды. Не спрашивай как.

Финальная презентация: Deus Ex Machina

"Господа, представляем финальную версию RuSpeedTest!"

Приложение выглядело как помесь космического корабля и сельского клуба. При запуске играл гимн, скорость отображалась тремя разными способами (версты/час, кириллобайты/момент и "условные единицы патриотизма"), а вместо рекламы показывались цитаты о важности цифрового суверенитета.

"Великолепно!" — воскликнул чиновник. — "Но есть одна проблема..."

Моё сердце упало.

-Роскомнадзор только что заблокировал все сервисы для тестирования скорости. Включая наш.

-Но... но как же пользователи будут проверять скорость?

-Никак. Зато суверенно.

Эпилог: Версты в никуда

Сейчас я пишу эти строки из нового офиса. Мы делаем RuPing — суверенный измеритель отклика. В ТЗ сказано, что отклик должен измеряться в "долях мгновения ока".

Миша уволился и уехал делать нормальные приложения. Последнее, что он сказал: "Паш, а помните, когда мы просто пиццу заказывали?"

Помню, Миша. Помню.


Вместо заключения: когда пинг становится "откликом отечественным", а мегабиты измеряются в верстах, единственная константа — это абсурд. И госзаказы. Госзаказы вечны.