惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
GRAHAM CLULEY
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI
P
Privacy & Cybersecurity Law Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - Franky
Spread Privacy
Spread Privacy
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Project Zero
Project Zero
Engineering at Meta
Engineering at Meta
The Hacker News
The Hacker News
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
A
Arctic Wolf
Cisco Talos Blog
Cisco Talos Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Threat Research - Cisco Blogs
Recorded Future
Recorded Future
Latest news
Latest news
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
C
CERT Recently Published Vulnerability Notes
美团技术团队
C
CXSECURITY Database RSS Feed - CXSecurity.com
O
OpenAI News
N
News and Events Feed by Topic
MyScale Blog
MyScale Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threatpost
T
The Blog of Author Tim Ferriss
L
LINUX DO - 最新话题
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
S
Securelist
Microsoft Azure Blog
Microsoft Azure Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Secure Thoughts
罗磊的独立博客
P
Proofpoint News Feed
T
The Exploit Database - CXSecurity.com
Apple Machine Learning Research
Apple Machine Learning Research
Cloudbric
Cloudbric
G
Google Developers Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Аналитика новых и текущих сайтов: как не положить прод одной доработкой
ivanrusv95 ( · 2026-05-15 · via Все публикации подряд на Хабре

Аналитика новых и текущих сайтов: как не положить прод одной доработкой

Уровень сложностиПростой

Время на прочтение9 мин

Охват и читатели573

Мнение

Привет! Я Иван Воробьев, системный аналитик Далее. Часто нам приходится работать со сложными системами не только с нуля, но и на саппорте. И для аналитика это кардинально разные контексты, риски и косты ошибок. 

На поддержке каждый error стоит сильно дороже, а допустить его в разы проще. В этой статье расскажу, что точно повредит ваш прод при доработках и как этого избежать. 

Содержание:

  • Разница между аналитикой с нуля и на поддержке

  • Самые частые и критичные ошибки при «улучшении» системы

  • Сценарий работы на саппорте с минимизацией рисков  

  • Что важно для аналитика вне зависимости от типа проекта

Разница между аналитикой с нуля и на поддержке

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

  • контексте и точке входа;

  • количестве и типах ограничений;

  • приоритизации и распределении времени.

В первом случае основная задача — создать логику, когда еще ничего нет и никто не знает, как будет. Здесь большая часть требований существует в виде идей и обсуждений, а работа стартует с формализации. Нужно: 

  1. Собрать бизнес- и функциональные требования в единый док, включая правила валидаций и описания исключений. 

  2. Спроектировать модели данных, бизнес-процессов и логики: BPMN-схемы, сценарии пользователей, дерево решений, статусные модели.

  3. Обозначить нефункциональные требования: скорость отклика компонентов, ограничения по объему данных и безопасности, сценарии нагрузки.

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

Например:

Пример BPMN-схемы в Miro для проекта спортивного мероприятия 

Пример BPMN-схемы в Miro для проекта спортивного мероприятия 

Для проекта спортивного мероприятия я отрисовывал подробные схемы в Miro: все шаги, статусы, валидации и email-уведомления. Это позволило мне увидеть, что условие допуска к забегу (минимум 5 человек) и условие закрытия набора (максимум 10 человек) — разные состояния. Но бизнес называл их одним словом «Собрана». 

Статус «Собрана» звучал как финальный в обоих случаях, хотя по факту был таким только в последнем. Я предложил разделить эти понятия на:

  • «Укомплектована» (5-9 участников): команда выполнила норматив и уже допущена к забегу, но все еще может принимать новых участников.

  • «Собрана» (10 участников): команда достигла лимита, набор закрыт окончательно.

Это решение легло в основу логики личного кабинета капитана и сняло вопросы у пользователей. 

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

Сначала пришлось:

  1. Разобраться в текущем поведении системы. 

  2. Изучить внешнюю спецификацию.

  3. Выделить только те методы, которые реально нужны. 

Отдельным вопросом стали крайние сценарии: как обрабатывать дубликаты пользовательских телефонов, если на сайте они допустимы, а в CRM — нет.

Я описал в ТЗ логику проверки на дубликаты перед созданием нового пользователя. После самостоятельно протестировал всю интеграцию через Postman, подготовив для этого необходимые коллекции запросов.

Последовательность шагов теста. Каждая вкладка — это отдельный метод (авторизация, поиск, обновление, создание), который нужно проверять «руками», имитируя работу интеграции

Последовательность шагов теста. Каждая вкладка — это отдельный метод (авторизация, поиск, обновление, создание), который нужно проверять «руками», имитируя работу интеграции

Детализация запроса на создание клиента. Надо не просто знать название метода, но и понимать структуру JSON-тела, чтобы подготовить валидные тестовые данные

Детализация запроса на создание клиента. Надо не просто знать название метода, но и понимать структуру JSON-тела, чтобы подготовить валидные тестовые данные

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

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

Самые частые и критичные ошибки при «улучшении» системы

Дорабатывая систему, мы обычно имеем дело с ее разными частями. Но нельзя мыслить в рамках только своего куска продукта. Любое, даже самое безобидное изменение тянет за собой хвост зависимостей: форматы экспорта/импорта, смежные модули, чужие API. Если вы меняете приемник, то обязаны кропотливо проверить источник. 

Вот список типичных «узких мест»:

1. Интеграции и форматы данных

В чем риск: Поменяли тип поля, добавили обязательный параметр или изменили структуру JSON, но забыли предупредить смежную систему. Или, наоборот, система-донор прислала данные, которые мы не ожидали.

Как ломает прод: Отваливаются оплаты, не загружаются товары, заявки улетают в пустоту.

2. Объем исторических данных (нагрузка на БД)

В чем риск: На тестовом стенде у нас 100 записей, и новый SQL-запрос или алгоритм фильтрации отрабатывает за миллисекунды. На проде — миллионы записей, и этот же алгоритм вызывает полное сканирование таблицы.

Как ломает прод: БД ложится от перегрузки, весь сайт зависает для всех пользователей.

3. Неочевидные зависимости

В чем риск: Удаляем «ненужное» поле в карточке или меняем логику перехода статусов в одном модуле, не проверив зависимости. А потом оказывается, что на это поле была завязана логика выгрузки отчетов для бухгалтерии или отправка триггерных email-рассылок.

Как ломает прод: Ломаются бизнес-процессы в других, не связанных с нашей доработкой частях системы.

4. Фоновые процессы и планировщики

В чем риск: Все изменения протестировали вручную «здесь и сейчас». Но забыли про скрипты, которые запускаются автоматически раз в сутки, например, ночью.

Как ломает прод: Выкатили релиз днем — все работает идеально. Ночью запускается скрипт пересчета остатков, натыкается на измененную логику, падает с ошибкой, и утром бизнес просыпается с неактуальными данными.

5. Накатывание миграций на «грязные» данные

В чем риск: Решили сделать старое поле обязательным not null или значения в нем уникальными. Но в БД уже лежат тысячи старых записей, где это поле пустое или дублируется.

Как ломает прод: Релиз просто не может выкатиться на бой, миграция БД падает с ошибкой, деплой останавливается.

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

Сценарий работы на саппорте с минимизацией рисков

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

Весь процесс включает 5 основных этапов.

1. Разбор текущего поведения — нельзя описывать решение, пока неясно, что происходит внутри системы. Обычно это означает:

  • изучить, где и как хранятся данные и их вариации;

  • понять, какие модули завязаны друг на друга;

  • посмотреть, как это работало в предыдущих релизах;

  • поднять логи, чтобы узнать о возможных сбоях; 

  • собрать реальные кейсы поведения пользователей.

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

2. Работа с ограничениями и наследием. На поддержке аналитик не создает правила, а подстраивается под уже существующие:

  • технические ограничения — валидаторы, уникальности, API;

  • UX-наследие — что пользователь привык видеть;

  • административные процессы — как контент-менеджеры работают сейчас;

  • архитектурные решения, которые менять нельзя.

Не экономьте силы на изучение всех нюансов. Узнайте, какие еще были варианты реализации и почему их отклонили. В живой системе любое изменение несет риски, которые стоит предусмотреть заранее.

3. Анализ рисков и ревью. При создании решений мы оцениваем не только их логику, но и стоимость возможной ошибки: 

  • какие сущности затрагивает изменение, 

  • можно ли быстро откатить последствия, 

  • есть ли риск порчи или перезаписи данных, 

  • на какое количество пользователей это потенциально повлияет. 

Чем выше потенциальный ущерб, тем глубже приходится рыться в текущей реализации.

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

Например, на моем проекте в карточках товаров производителя питания были ссылки на точки продаж — аптеки. Они управлялись в админке: контент-менеджеры вручную правили HTML-поле, что было неудобно и приводило к ошибкам. 

Мне на проверку передали макет нового решения, но и в нем я увидел недостаток: сопоставление аптек и ссылок на них шло по порядковому номеру. Это было рискованно, так как случайное изменение порядка аптек в списке сломало бы все ссылки в товаре — привет, ошибка 404! 

Скрытый текст

Кому интересно, здесь решение.

Предложил более стабильную и простую схему: вместо двух отдельных списков (аптеки и ссылки) использовать в админке множественное свойство, где каждая запись содержит связанную пару «Выбор аптеки из списка + Поле для URL». Это полностью исключает ошибки, связанные с порядком элементов, и делает интерфейс интуитивно понятным.

4. Описание изменений на уровне «что затронет» — ТЗ на поддержке должно быть предельно точным. Мы не просто описываем доработку как фактический итог, но и указываем: 

  • где именно и для каких ролей и статусов вносятся изменения,

  • какие модули могут быть затронуты,

  • какие сценарии должны остаться прежними,

  • что нужно проверить после релиза.

Думайте о реализации на уровне всех пользователей. Часто покупатели и подписчики — не единственные, о ком надо заботиться и для кого дорабатывать систему. Удобная и безопасная админка не менее важна, чем интерфейс посетителей сайта.

5. Проверка реализаций. Тестирование — непрямая задача аналитика. Но цена ошибки на проде выше, поэтому я часто не дожидаюсь тестировщика, а сам проверяю логику. Например, в задачах с интеграциями прогоняю сценарии через Postman: 

  • авторизация, 

  • поиск пользователя, 

  • создание, 

  • обработка ошибок. 

Это мы создали решение, и лучше нас в нем никто не разберется. Проверка дает воочию убедиться, что новая логика не конфликтует с уже существующей.

Главное правило на поддержке: если задача кажется «маленькой» — проверь ее вдвое тщательнее.

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

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

Что важно для аналитика вне зависимости от типа проекта

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

1. Фокус на бизнес-задаче, а не на формулировке. В обоих сценариях аналитик пытается понять не «какую кнопку нарисовать», а что именно хочет решить клиент. Это помогает избежать ситуации, когда команда выполняет задание буквально, но реализация не приносит пользы.

2. Работа с рисками и крайними сценариями. Аналитик всегда отвечает на вопрос «что может пойти не так». Разница только в источниках риска:

  • в новом проекте это неопределенность и недосказанность,

  • в поддержке — скрытые зависимости и исторические решения.

Но подход одинаковый: рассматривать альтернативные пути, ошибки, спорные ситуации.

3. Коммуникация и перевод контекста между ролями. На любом проекте аналитик выступает «переводчиком» между разными лицами: бизнесом, разработкой, дизайном. Нужно доносить согласованные требования до специалистов, отвечать на вопросы и вносить правки.

4. Фокус на пользователе. Всегда идет проектировка решения для кого-то. Это может быть как внешний клиент, так и внутренний сотрудник. Все, что создается, должно быть максимально упрощено, удобно и логично. 

5. Фиксация разговоров. Устная договоренность — не договоренность. И там, и там важно быстро переводить обсуждения в документы, схемы и требования. Это снижает количество спорных ситуаций и ошибок.

Сравнение роадмапов системной аналитики в проектах с нуля и продуктов на поддержке

Путь

Аналитика с нуля

Аналитика на поддержке

Шаг 1. Получение задачи

Есть идея или бизнес-цель: «хотим сделать сервис / функциональность»

Есть запрос на изменение: «нужно доработать / исправить / добавить»

Шаг 2. Уточнение контекста

Контекста почти нет — собираем его с клиента

Контекст есть — ищем его в системе, коде, логах, старых решениях

Шаг 3. Первые вопросы

Что именно нужно создать? Какие роли, сценарии, правила?

Как это работает сейчас? Где и кем используется? Какие уже были решения?

Шаг 4. Работа с текущей логикой

Текущей логики нет — ее нужно спроектировать

Логика есть — ее нужно разобрать и описать

Шаг 5. Формирование решения

Предлагает целевую модель 

Ищем наиболее безопасный способ изменить существующую модель

Шаг 6. Процессы и сценарии

Проектируем с нуля

Декомпозируем процессы и проверяем на зависимости

Шаг 7. Статусы и правила

Придумываем и согласуем

Статусы и правила уже существуют, иногда неявно

Шаг 8. Ограничения

Задаем ограничения сами

Ограничения диктуются системой, интеграциями, данными

Шаг 9. Формирование требований

Описываем, как система должна работать

Описываем, что меняется и что трогать нельзя

Шаг 10. Проверка рисков

Проверяем логические дыры и недоговоренности

Проверяем зависимости, данные, крайние сценарии

Шаг 11. Валидация решения

Через обсуждения, схемы, согласования

Через реальные сценарии, API, ручные проверки

Аналитика проектов на старте и продуктов на сопровождении

Да, наша работа меняется в зависимости от того, создается ли продукт с чистого листа или развивается существующий. Но в любой модели цель одна — сделать так, чтобы система была предсказуемой, не ломалась и приносила пользу тем, для кого она создана.

Лично мне больше нравится работать с проектами на старте. Но не из-за рисков, а из-за свободы в решениях. А вам?