Семь дней.
Сказать это было легко.
Хань Луи словно вернулся в те времена, когда работал в «Диншэн», и спал меньше пяти часов в сутки.
Он строчил код с бешеной скоростью, одновременно используя Зрение, чтобы вылавливать и исправлять пропущенные баги.
План запуска, составленныйСу Няньнянь, прошел путь от версии 0.1 до 0.4. Расписание релиза было выверено до минуты.
Ма Сяофэй закончил монтажвторого видео. Посмотрев его, Хань Луи попросил изменить заголовок с «Самый мощныйИИ-инструмент для проверки кода во всем интернете» на «Возможно, лучший ИИ-инструмент для проверки кода».
— А есть разница? — Возмутился МаСяофэй.
— Есть. Если на нас подадут в суд, суммыштрафов будут разными, — ответил Хань Луи.
Шестоемая.
В три часа ночи Су Няньнянь всё ещё шлифовала формулировки в рекламных текстах. В четыре утра Хань Луи закрыл последний граничный случай. В шестьон лег спать, поспал три часа, а в девять уже умывался холодной водой.
Десять ноль-ноль. На официальном сайте появилось объявление о запуске BugKiller v1.0 от имени NullPointer. Синхронная публикация на форуме, V2EX и Juejin. Рассылка по группе бета-тестеров. Письма первым пользователям. И одновременно с этим – публикация второго ролика Ма Сяофэя.
Началось.
Хань Луи сидел за столом в своей комнате, неотрывно глядя на счетчик регистраций в админке.
Первые полчаса стоялатишина.
3.
7.
12.
Пришло сообщение от Су Няньнянь:
— Всего двенадцать?
— Прошло только полчаса, — ответил он.
— Когда я работала в «Хайли» над линейкой продуктовдля ревью кода – тех, что шли на продажу, – над этим трудилась команда из двадцатичеловек. Маркетологи провели полноценную кампанию, мы вбухали в это восемь месяцев. Ив первый день релиза у нас было чуть больше пятисот регистраций.
— И что?
— И то, что я тоже хочу пятьсот активных юзеров в первыйдень, а-а-а!
Подключился первый репозиторий. Проект на Python Flask, больше шести тысяч строк. BugKiller проработал четырнадцать секунд и выдал семьбагов. Судя по логам, пользователь открыл первый результат и завис на сорок три секунды, изучая раздел оценки влияния.
Одиннадцать часов. 47.
Полдень. 89.
Су Няньнянь замолчала. Она лишь без конца присылала скриншоты с обновляющимися цифрами.
Час дня. Перевалило за сто пятьдесят. Кривая роста ускорялась, с каждымчасом приток становился всё больше. Классический график сарафанного радио. Бета-тестеры начали раскидывать ссылки по своим профильным чатам.
Хань Луи сделал глоток воды. Руки слегка дрожали. Не от волнения – просто организм начал выставлять счет за три часа сна.
Ма Сяофэй: «Видео висит уже три часа, по админке видно, что с него на страницу регистрации перешло больше тысячи человек. Господа, я, Ма Сяофэй, – бог продаж в техно-сегменте».
Чжан Хаожань: «Там под твоим видео первый коммент: „Анализ второго бага просто в точку“. Ты уверен, что это не бот?»
Ма Сяофэй:«Сам ты бот. Это мой живой подписчик, вообще-то».
Чжан Хаожань: «Ладно. Луи, если такой органический рост продержится днятри, с данными по недельной активности уже можно будет идти к инвесторам».
Хань Луи: «Я так далеко не загадывал».
Чжан Хаожань: «Это не далеко. Поверь мне».
Три часа дня. Пост влетел на третье место в горячем на форуме. У видео Ма Сяофэя – восемьдесят тысяч просмотров.
Под постом стремительно набирал популярность одиндлинный комментарий.
«Наша компания сидела на CodeSafe два месяца, начиная с закрытого бета-теста. Сегодня зарегались в BugKiller. Прогнали через него тот же самый проект. BugKiller выловил три бага, о которых CodeSafe вообще ни разу не пискнул. Один из них – из той жесерии, что у нас рванул на проде в прошлом месяце: состояние гонки при переиспользовании соединений. В прошлый раз из-за этого отвалилось шестьдесят тысяч юзеров, мы двое сутокискали причину. А этот баг так и сидел в коде, и CodeSafe его в упорне видел».
В отчете BugKiller так и написано: „Вероятность срабатывания при высокой нагрузке – около 12 %, ожидаемое число затронутых пользователей в месяц – 50–60 тысяч. Способ исправления: изменить логику переиспользования соединений в строке 1247, ожидаемый объем изменений – 3 строки кода“.
Три строки кода. В прошлый раз мы с такой же проблемой ковырялись двое суток.
„Скажу объективно: CodeSafe – даже собаке не скормишь“.
Шестьсот лайков. И следом – целая вереница таких же откровений из личногоопыта.
Четыре часа двенадцать минут. Вся админка вспыхнула красным.
Время отклика API мгновенно улетело в таймаут. Хань Луи открыл панель сервера: количество запросов подскочило в сорок раз. IP-адреса источников были сгруппированы очень плотно, и все били в одну точку – по эндпоинту /api/scan.
Это был DDoS.
Включить Зрение.
Серверный трафик развернулся прямо в поле зрения. Запросы обычных пользователей выглядели как тонкие нити с размеренным, правильным ритмом. Атакующий же трафик был совсем иным: три темно-красных потока хлынули из трех диапазонов IP одновременно, такие плотные, что нормальный трафик в них просто утонул.
Над источниками атаки всплыл диагноз Зрения:
[DDoS-атака | Тип: HTTP Flood + SYN Flood | Источник: 3 кластера IP (восточно-китайский узел одного из облаков) | Цель: /api/scan | Способ решения:1 заблокировать 47 диапазонов атакующих IP; 2 включить ограничение частоты запросов для /api/scan (≤5 раз/мин с одного IP); 3 активировать защиту от DDoS на уровне CDN]
Три шага.
Забанить диапазоны IP. Настроить лимиты. Включить защиту CDN.
Семь минут. Мониторинг сменил цвет с красного на зеленый.
Он отправил сообщение вгруппу бета-тестеров:
– ...Отваливались на несколько минут, поймали DDoS. Уже всё исправил.
– ...В первый же день открытого теста кто-то решил нас положить?
– ...Кому так припекло-то?
– ...Ты один это разрулил? За семь минут?!
ХаньЛуи ничего не ответил. Он открыл сайт и написал пост-разбор инцидента. Время атаки, продолжительность, диапазоны атакующих IP, целевой эндпоинт – он выложил всёкак на духу.
Через полчаса на форуме появился новый тред под названием „Угадайте, кто мог устроить DDoS в день релиза BugKiller“.
Топовый комментарий: „Давайте я вам таймлайн накину. Тот пост со сравнением набрал 600 лайков ровно в 16:00, а DDoS начался в 16:12. Двенадцать минут? И это всё, на что они способны?“
Второй: „В прошлый раз лайкали посты с твинков, в этот раз сразу DDoS заказали. В следующий раз с битами придут компы ломать?“
Третий коммент запустил техническую дискуссию, на него отвечали многие: „Я безопасником в крупной конторе работаю. Вот вам цифры: у нас в центре кибербезопасности дежурят посменно двенадцать человек, стоит полный комплекс автоматического мониторинга, и по регламенту время реакции на DDoS – 30 минут. И это при том, что всё отработано на миллионе тренировок и скрипты написаны заранее. А он один за семь минут прошел путь от обнаружения до восстановления. Это же бред какой-то!“
Чел сверху говорит про большие компании с готовым планом. Для маленькой команды при первой атаке нормальный процесс выглядит так: „Твою мать, почему всё легло?!“ → „Код сломался?“→ полдня копаются в логах, понимают, что это DDoS → паника → пишут тикет хостеру → ждут ответа техподдержки. Если уложатся в час-два – это прямо быстро. Семь минут? Я бы за это время даже тикет не дописал.
«Так NullPointer – это один человек или целая группа? Один человек и продукт пишет, и баги напроде правит, и DDoS отбивает? У него что, три головы и шесть рук?»
«Они даже ддосом не могут одного человека одолеть. Вся война заняласемь минут – я бы даже доширак заварить не успел».
Шесть вечера.
Зарегистрированных пользователей: 476.
Подключенных репозиториев: 527.
Всего найдено багов: 3847.
476. До заветныхпятисот, о которых мечтала Су Няньнянь, не хватало двадцати четырех.
Девять вечера.
Хань Луи достал из холодильникабутылку воды и открыл админку.
Раздался звонок – возбужденная Су Няньнянь.
— Луи! Шестьсот двенадцать!!
— ...Ты хоть понимаешь, что это значит?!
— ...Команда из двадцати человек, ресурсы гигантской корпорации, восемь месяцев работы!
— ...В первый день релиза они наскребли чуть больше пятисот регистраций!
— ...А твой продукт, который ты сделал в одиночку...
— ...В первый же день дал 612!
— ...Один человек уделал целую команду корпорации!
— Мы сделали это вдвоем, — поправил её Хань Луи.
Су Няньнянь на мгновениезамолчала.
— Если серьезно, Луи... ты это сделал! Мы этосделали!
Положив трубку, Хань Луи посмотрел на рисунок, приклеенный рядом с монитором: огромная божья коровка с тремя черными точками накрасном панцире.
Он протянул руку и аккуратно разгладил загнувшийся уголок листа.
Телефон снова завибрировал. Сообщение от Гу Сыюэ:
«Поздравляю. Цифры отличные».
«Адвокат Гу тоже интересуется технологическими продуктами?»
«Я интересуюсь своими клиентами».
Он ответил ей коротким «Спасибо».
Просмотры второго видео Ма Сяофэя перевалилиза сто пятьдесят тысяч. Самый заплюсованный комментарий гласил: «Великий бог NullPointer, умоляем, выйди из тени!».
Хань Луи немного почитал комментарии, пролистал вниз и закрыл приложение.
Он открыл чат с Ма Сяофэем.
«В следующем видео сделаем эксклюзивное интервью? СоздательBugKiller покажет лицо».
Ответ от Ма Сяофэя прилетел мгновенно: «?? Ты хочешь раскрыть личность??»
«Продукт дошел до такой стадии, когда анонимность теряет смысл. Корпоративным клиентамнужно подписывать договоры, они же не могут заключить контракт с NullPointer».
«!!»
«Снимать будешь ты. Сделаем выпуск „Кто такой NullPointer“, заодно поднимем тебе подписчиков».
Некоторое время ответа не было. Хань Луи даже подумал, что тот сомневается.
А затем пришло голосовое сообщение. Хань Луи включил его, и из динамика прямо-таки хлынул неудержимый восторг Ма Сяофэя:
— Старина Хань, ты хоть представляешь, как долго я ждал этого дня! Я уже три версии сценария написал, понимаешь?! Три! Завтра! Нет, мы можем снять всё прямо сегодня вечером, я сейчас же выставлюсвет...
— Не суетись, — с усмешкой ответил Хань Луи.
Он отложил телефон в сторону.
И активировал Зрение.
[Ур. 2 | Энергия: 58/250]
Шкала опыта заполнилась уже на 42 %.
А ведь еще утром было 37 %.
Счетчик обнаруженных баговв админке застыл на отметке 4215. За каждой этой записью стоялкакой-то разработчик, который подключил свой репозиторий, и BugKiller нашел для него проблему.
Полоска опыта снова дрогнула, прибавляя проценты.
Хань Луи открыл недавно обновленный документ в Feishu, созданный Су Няньнянь: «Анализ первого дня открытого бета-тестирования BugKiller». Семь страниц. Онпролистал в самый низ. Последняя строчка была выделена красным жирным шрифтом:
«Рекомендуется как можно скорее раскрыть личность основателя, чтобы конвертировать доверие сообщества к NullPointer в актив бренда».
— Уже работаем над этим, — тихо произнес он.

Комментарии

Загрузка...