Плохое ТЗ — это не вина одного человека. Это результат работы команды
⏳ 10 мини | 🟡⚪️⚪️
Читать статью | @analysis_it
💙 Analyst IT | 💬 Analyst IT
Читать статью | @analysis_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Плохое ТЗ — это не вина одного человека. Это результат работы команды
Все любят истории о сильных личностях. Про Туполева, Королёва, Стива Джобса, Сергея Брина, Марка Цукерберга. Про Нила Армстронга, который сделал «один маленький шаг для человека — и гигантский скачок...
🔥9❤3👍1
Год назад я думал, что ИИ заменит архитектора. Я ошибался
⏳ 15 мин | 🟡⚪️⚪️
Читать статью | @analysis_it
💙 Analyst IT | 💬 Analyst IT
Читать статью | @analysis_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Год назад я думал, что ИИ заменит архитектора. Я ошибался
Новости про очередной этап «развития ИИ» выходят чуть ли не каждый день. И со временем меняются не только ИИ-инструменты, но и отношение к ним у ИТ-специалистов, их представление о назначении таких...
🔥5
Forwarded from Business | System analyst
Салют! Хочу тоже затронуть тему, проектировать REST API и рассказать на своем примере
Знаете, что меня до сих пор выбивает из равновесия? Когда на ревью спрашиваешь разработчика: “почему эндпоинт называется именно так?” — и в ответ: “ну, так исторически сложилось”🤯 За 10 лет я слышала это столько раз, что уже завела внутренний счётчик.
🚨 Давайте разберём REST API нормально — один раз, по-человечески, с примером.
Сначала главное: REST — это не технология, это договорённость
REST — архитектурный стиль. Просто набор правил о том, как клиент и сервер общаются через HTTP. И первое правило, которое нарушают чаще всего — ресурсы именуются существительными, не глаголами.
❌ Так не надо:
✅ Так правильно:
HTTP-методы сами несут смысл действия — GET получить, POST создать, PUT/PATCH обновить, DELETE удалить. Глагол в URL — это дублирование, которое потом запутает всех, включая вас саму через полгода.
💡 Живой пример: API интернет-магазина
Есть товары, заказы, пользователи. Поехали.
Базовые операции:
Здесь сразу вопрос, который почти никогда не задают вслух: PUT или PATCH?
PUT — заменяет ресурс целиком и обязан быть идемпотентным — то есть хоть десять раз вызови с одними данными, результат одинаковый
PATCH — обновляет только то, что передали
На практике PATCH выигрывает почти всегда — никто не хочет слать весь объект ради изменения одного поля статуса.
Вложенные ресурсы — и вот тут начинается самое интересное
Заказ принадлежит пользователю. Отражаем это в структуре:
Но если заказы нужны и сами по себе — например, в админке — добавляем отдельно:
И вот моё личное правило, выстраданное на проектах:
Вложенность глубже двух уровней — тревожный сигнал. Если у вас
/users/{id}/orders/{orderId}/items/{itemId}/reviews — это не REST, это маршрут до боли.
Коды ответов — то, на что аналитики машут рукой зря
“Разработчик разберётся” — нет. Или разберётся по-своему, и тогда фронт получает 200 с телом {"error": true} и тихо плачет.
Минимальный джентльменский набор:
200 - Успешный GET, PATCH, PUT
201 - Успешный POST — ресурс создан
204 - Успешный DELETE — тело пустое
400 - Синтаксически сломанный запрос (битый JSON и т.п.)
401 - Не авторизован 403 - Авторизован, но нет прав 404 - Ресурс не найден 409 - Конфликт (дубль email, например)
422 - Запрос понят, но данные не прошли валидацию
500 - Ошибка сервера
Отдельно про 400 vs 422 — это путают постоянно. 400 — когда запрос синтаксически сломан, сервер вообще не смог его прочитать. 422 — запрос понятен, но внутри что-то не то: поле обязательное, формат не тот, логика не сходится. Для ошибок валидации форм почти всегда нужен именно 422.
И 401 vs 403 — классика жанра: 401 = “кто ты вообще?”, 403 = “знаю кто ты, но нет”.
Формат ошибки — договоритесь до начала разработки
Лучший момент для этого — старт проекта. Худший — когда фронт уже написал сорок обработчиков.
✅ Хорошо:
❌ Плохо:
Второй вариант — это не API, это квест.
Версионирование — заложите сразу
API когда-нибудь изменится. Поменяется логика, добавятся поля, что-то удалится.
Если не заложить версионирование с самого начала — первое же обновление превратится в боль для всех.
Самый простой и понятный способ:
___________
Источник: @ba_and_sa
💙 BA|SA | 💬 BA|SA
Знаете, что меня до сих пор выбивает из равновесия? Когда на ревью спрашиваешь разработчика: “почему эндпоинт называется именно так?” — и в ответ: “ну, так исторически сложилось”
Сначала главное: REST — это не технология, это договорённость
REST — архитектурный стиль. Просто набор правил о том, как клиент и сервер общаются через HTTP. И первое правило, которое нарушают чаще всего — ресурсы именуются существительными, не глаголами.
POST /getUser
POST /createOrder
GET /deleteProduct?id=5
GET /users/{id}
POST /orders
DELETE /products/{id}
HTTP-методы сами несут смысл действия — GET получить, POST создать, PUT/PATCH обновить, DELETE удалить. Глагол в URL — это дублирование, которое потом запутает всех, включая вас саму через полгода.
Есть товары, заказы, пользователи. Поехали.
Базовые операции:
GET /products — список товаров
GET /products/{id} — конкретный товар
POST /products — создать товар
PATCH /products/{id} — обновить часть данных
DELETE /products/{id} — удалить товар
Здесь сразу вопрос, который почти никогда не задают вслух: PUT или PATCH?
PUT — заменяет ресурс целиком и обязан быть идемпотентным — то есть хоть десять раз вызови с одними данными, результат одинаковый
PATCH — обновляет только то, что передали
На практике PATCH выигрывает почти всегда — никто не хочет слать весь объект ради изменения одного поля статуса.
Вложенные ресурсы — и вот тут начинается самое интересное
Заказ принадлежит пользователю. Отражаем это в структуре:
GET /users/{userId}/orders — все заказы пользователя
GET /users/{userId}/orders/{orderId} — конкретный заказ
POST /users/{userId}/orders — создать заказНо если заказы нужны и сами по себе — например, в админке — добавляем отдельно:
GET /orders/{id}И вот моё личное правило, выстраданное на проектах:
Вложенность глубже двух уровней — тревожный сигнал. Если у вас
/users/{id}/orders/{orderId}/items/{itemId}/reviews — это не REST, это маршрут до боли.
Коды ответов — то, на что аналитики машут рукой зря
“Разработчик разберётся” — нет. Или разберётся по-своему, и тогда фронт получает 200 с телом {"error": true} и тихо плачет.
Минимальный джентльменский набор:
200 - Успешный GET, PATCH, PUT
201 - Успешный POST — ресурс создан
204 - Успешный DELETE — тело пустое
400 - Синтаксически сломанный запрос (битый JSON и т.п.)
401 - Не авторизован 403 - Авторизован, но нет прав 404 - Ресурс не найден 409 - Конфликт (дубль email, например)
422 - Запрос понят, но данные не прошли валидацию
500 - Ошибка сервера
Отдельно про 400 vs 422 — это путают постоянно. 400 — когда запрос синтаксически сломан, сервер вообще не смог его прочитать. 422 — запрос понятен, но внутри что-то не то: поле обязательное, формат не тот, логика не сходится. Для ошибок валидации форм почти всегда нужен именно 422.
И 401 vs 403 — классика жанра: 401 = “кто ты вообще?”, 403 = “знаю кто ты, но нет”.
Формат ошибки — договоритесь до начала разработки
Лучший момент для этого — старт проекта. Худший — когда фронт уже написал сорок обработчиков.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Поле email обязательно",
"field": "email"
}
}Второй вариант — это не API, это квест.
{
"status": false,
"msg": "err"
}Версионирование — заложите сразу
API когда-нибудь изменится. Поменяется логика, добавятся поля, что-то удалится.
Если не заложить версионирование с самого начала — первое же обновление превратится в боль для всех.
Самый простой и понятный способ:
/api/v1/products
/api/v2/products
___________
Источник: @ba_and_sa
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍5❤4
This media is not supported in your browser
VIEW IN TELEGRAM
⚠️Профессия системного аналитика продолжает меняться: появляются новые инструменты, растут требования к качеству решений, усиливается роль аналитика в проектировании архитектуры и взаимодействии с бизнесом.
При этом одни навыки становятся критически важными для карьерного роста, а другие постепенно превращаются в базовый минимум.
✅Мы подготовили для вас актуальную программу обучения на курсе «Системный аналитик. Управление командой». Изучите программу обучения на сайте.
🎁Записывайтесь на бесплатный вебинар:
«Какие навыки прокачать, чтобы стать экспертом в системном анализе в 2026 году».
⏰25 июня в 20:00 мск
Задайте вопросы спикеру и познакомьтесь подробнее с программой обучения на живом вебинаре!
Перейти на сайт ➡️ OTUS.RU
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
При этом одни навыки становятся критически важными для карьерного роста, а другие постепенно превращаются в базовый минимум.
✅Мы подготовили для вас актуальную программу обучения на курсе «Системный аналитик. Управление командой». Изучите программу обучения на сайте.
🎁Записывайтесь на бесплатный вебинар:
«Какие навыки прокачать, чтобы стать экспертом в системном анализе в 2026 году».
⏰25 июня в 20:00 мск
Задайте вопросы спикеру и познакомьтесь подробнее с программой обучения на живом вебинаре!
Перейти на сайт ➡️ OTUS.RU
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Системные дашборды для Sigla Vision
⏳ 9 мин | 🟡⚪️⚪️
Читать статью | @analysis_it
💙 Analyst IT | 💬 Analyst IT
Читать статью | @analysis_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Системные дашборды для Sigla Vision
В менеджерской среде есть изречение: «Управлять можно только тем, что можно измерить». Рискнем его дополнить — данных сейчас генерируется так много, что одного измерения уже мало: «…а эффективно...
🔥 Приглашаем на бесплатный открытый вебинар курса «Микросервисная архитектура»:
«RabbitMQ против Kafka — что выбрать для вашей структуры: сравнение и лучшие практики»
🗓 Когда: 24 июня, 20:00 (мск)
🚀 О чём этот урок? Обзор двух ведущих решений для работы с брокерами — RabbitMQ и Kafka. Разберём их основные особенности, преимущества и недостатки, а также рассмотрим реальное использование ключей. Вы узнаете, как выбрать тот или иной инструмент в зависимости от требований вашей системы, и дадите рекомендации по их внедрению и настройке для повышения производительности и надежности
Что будет на вебинаре:
— Обзор RabbitMq - устройство, принципы работы, отправка и получение сообщений
— Обзор Kafka - устройство, принципы работы, отправка и получение сообщений
— Сравнение этих двух систем
👉 Зарегистрируйтесь https://clck.ru/3UK3eE
Бесплатное занятие приурочено к старту курса «Микросервисная архитектура», обучение на котором позволит освоить микросервисы: Docker, Kafka, API и стать мастером производительных систем.
🎁Бонус при покупке курса - мини-курс от платформы Алгокод с подготовкой к собеседованиям по System design.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
«RabbitMQ против Kafka — что выбрать для вашей структуры: сравнение и лучшие практики»
🗓 Когда: 24 июня, 20:00 (мск)
🚀 О чём этот урок? Обзор двух ведущих решений для работы с брокерами — RabbitMQ и Kafka. Разберём их основные особенности, преимущества и недостатки, а также рассмотрим реальное использование ключей. Вы узнаете, как выбрать тот или иной инструмент в зависимости от требований вашей системы, и дадите рекомендации по их внедрению и настройке для повышения производительности и надежности
Что будет на вебинаре:
— Обзор RabbitMq - устройство, принципы работы, отправка и получение сообщений
— Обзор Kafka - устройство, принципы работы, отправка и получение сообщений
— Сравнение этих двух систем
👉 Зарегистрируйтесь https://clck.ru/3UK3eE
Бесплатное занятие приурочено к старту курса «Микросервисная архитектура», обучение на котором позволит освоить микросервисы: Docker, Kafka, API и стать мастером производительных систем.
🎁Бонус при покупке курса - мини-курс от платформы Алгокод с подготовкой к собеседованиям по System design.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Data Mesh: что это и почему концепция не подходит большинству компаний в России
⏳ 12 мин | 🟡🟡⚪️
Читать статью | @analysis_it
💙 Analyst IT | 💬 Analyst IT
Читать статью | @analysis_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Data Mesh: что это и почему концепция не подходит большинству компаний в России
Объем и разнообразие корпоративных данных значительно возрастает с каждым годом. Вместе с этим появляются новые требования к их хранению, обработке и использованию. Развиваются различные...
❤2
Дарим подарки нашим подписчикам 🎁
Мы с ребятами решили порадовать вас интересными подарками от наших каналов:
- Внешний жесткий диск
- Настольная игра от Школы Систем Аналист
- Футболка BA | SA
Условия максимально простые:
- подписаться на каналы;
- нажать «участвую».
1. Системный анализ | Ольга Пономарева
2. Business | System analyst
3. Analyst IT
07.07 в 17:00 мы проведем розыгрыш и троим из вас улыбнется удача)))
Мы с ребятами решили порадовать вас интересными подарками от наших каналов:
- Внешний жесткий диск
- Настольная игра от Школы Систем Аналист
- Футболка BA | SA
Условия максимально простые:
- подписаться на каналы;
- нажать «участвую».
1. Системный анализ | Ольга Пономарева
2. Business | System analyst
3. Analyst IT
07.07 в 17:00 мы проведем розыгрыш и троим из вас улыбнется удача)))
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Как мы переносили интеграции с монолита на микросервис
⏳ 3 мин | 🟡🟡⚪️
Читать статью | @analysis_it
💙 Analyst IT | 💬 Analyst IT
Читать статью | @analysis_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как мы переносили интеграции с монолита на микросервис
В этой статье я делюсь нашим опытом выноса интеграций из монолита в микросервисную архитектуру: какие решения мы принимали, на что обращали внимание и где было сложнее всего. В моем случае монолитами...
Системный аналитик помогает бизнесу и разработке говорить на одном языке: разбирает задачи компании, описывает требования, проектирует IT-решения и следит, чтобы система работала на реальные цели бизнеса.
Онлайн-магистратура СПбГУ и Нетологии «Системный анализ и интеллектуальные системы управления бизнес-процессами» готовит специалистов на стыке IT и управления.
В программе сочетаются академическая база СПбГУ и прикладные инструменты Нетологии. Студенты изучают математическое моделирование, алгоритмы, системный анализ, Python, BI-системы, no-code-инструменты, управление проектами и подходы к внедрению искусственного интеллекта.
Такой набор навыков помогает работать со сложными бизнес-процессами: находить узкие места, снижать риски при разработке, формулировать требования к системам и сопровождать внедрение IT-решений.
Обучение проходит полностью онлайн. После выпуска вы получаете диплом магистра СПбГУ очного образца по направлению «Прикладная информатика».
Подробнее о программе
Реклама. ООО “Нетология” ОГРН 1207700135884 Erid: 2VSb5w7d2U2
Онлайн-магистратура СПбГУ и Нетологии «Системный анализ и интеллектуальные системы управления бизнес-процессами» готовит специалистов на стыке IT и управления.
В программе сочетаются академическая база СПбГУ и прикладные инструменты Нетологии. Студенты изучают математическое моделирование, алгоритмы, системный анализ, Python, BI-системы, no-code-инструменты, управление проектами и подходы к внедрению искусственного интеллекта.
Такой набор навыков помогает работать со сложными бизнес-процессами: находить узкие места, снижать риски при разработке, формулировать требования к системам и сопровождать внедрение IT-решений.
Обучение проходит полностью онлайн. После выпуска вы получаете диплом магистра СПбГУ очного образца по направлению «Прикладная информатика».
Подробнее о программе
Реклама. ООО “Нетология” ОГРН 1207700135884 Erid: 2VSb5w7d2U2
Агент написал код за 12 секунд и чинил его 40 минут: как я на самом деле сравнила ИИ-агентов
⏳ 6 мин | 🟡🟡⚪️
Читать статью | @analysis_it
💙 Analyst IT | 💬 Analyst IT
Читать статью | @analysis_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Агент написал код за 12 секунд и чинил его 40 минут: как я на самом деле сравнила ИИ-агентов
Я прочитала десяток разборов «Copilot vs Claude Code vs Cursor vs Windsurf vs Cline» и поймала себя на мысли: Все обзоры меряют одно — как быстро агент печатает код. Но на моём боевом...
Теория и практика DWH: что такое согласованные факты и измерения по Кимбаллу и зачем они нужны
⏳ 4 мин | 🟡⚪️⚪️
Читать статью | @analysis_it
💙 Analyst IT | 💬 Analyst IT
Читать статью | @analysis_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Теория и практика DWH: что такое согласованные факты и измерения по Кимбаллу и зачем они нужны
Оглавление Кто такой Кимбалл и каков его подход Факты и измерения Согласованные факты Лирическое отступление Согласованные измерения SVOT, или single version of truth Кто такой Кимбалл и каков его...
Forwarded from Business | System analyst
ТЗ на API: что написать, чтобы разработчик не придумывал за вас
Однажды я получила от разработчика готовый эндпоинт, который работал. Технически. Но в таком формате, что фронт не мог его использовать без дополнительного преобразования. Когда спросила почему — пожал плечами: “в ТЗ не было написано как, я сделал как удобнее”.
С тех пор у меня есть чеклист того, что обязательно должно быть в ТЗ на API. Делюсь.
1️⃣ Название и назначение
Не “создать API для заказов”, а конкретно:
2️⃣ Метод и URL
Точный адрес, метод, версия. Без этого разработчик придумает сам.
3️⃣ Авторизация
Не написали — получите либо открытый эндпоинт, либо неожиданную схему авторизации.
4️⃣ Тело запроса
Каждое поле с типом, обязательностью и ограничениями:
Для необязательных полей — что происходит если не передали? Дефолт? Игнорируется? Напишите явно.
5️⃣ Ответ при успехе
6️⃣ Ошибки — то, что забывают в 80% ТЗ
422 - Не передан обязательный параметр
404 - Пользователь не найден
401 - Нет авторизации
409 - Товар недоступен
Для каждого кода — тело ответа с понятным
7️⃣ Бизнес-логика
Самое недооценённое. Структура понятна — но что происходит внутри?
Пишите явно: заказ создаётся только если все товары в наличии, после создания резервируется остаток, уходит email-уведомление. Если этого нет в ТЗ — разработчик придумает сам. Иногда угадывает. Чаще нет.
8️⃣ Нефункциональные требования
Хорошее ТЗ — это не формальность. Это единственный способ получить то, что вы имели в виду, а не то, что разработчик имел в виду за вас🙂
🧐 Если было полезно, ставьте реакции, буду делиться больше такой информацией))
___________
Источник: @ba_and_sa
💙 BA|SA | 💬 BA|SA
Однажды я получила от разработчика готовый эндпоинт, который работал. Технически. Но в таком формате, что фронт не мог его использовать без дополнительного преобразования. Когда спросила почему — пожал плечами: “в ТЗ не было написано как, я сделал как удобнее”.
И знаете что? Он был прав.
С тех пор у меня есть чеклист того, что обязательно должно быть в ТЗ на API. Делюсь.
Не “создать API для заказов”, а конкретно:
Эндпоинт: Создание заказа
Используется: мобильное приложение, личный кабинет
Контекст “кто вызывает” влияет на авторизацию и требования к нагрузке.
POST /api/v1/orders
Точный адрес, метод, версия. Без этого разработчик придумает сам.
Bearer token (JWT)
Authorization: Bearer {token}
Не написали — получите либо открытый эндпоинт, либо неожиданную схему авторизации.
Каждое поле с типом, обязательностью и ограничениями:
{
"userId": 123, // integer, обязательное
"items": [...], // array, обязательное, min: 1
"comment": "..." // string, необязательное, max: 500
}Для необязательных полей — что происходит если не передали? Дефолт? Игнорируется? Напишите явно.
HTTP 201 Created
{
"orderId": 789,
"status": "created",
"createdAt": "2026-06-17T10:00:00Z" // UTC, ISO 8601
}
Формат даты фиксируйте явно — иначе получите локальное время сервера и долгие поиски расхождений.422 - Не передан обязательный параметр
404 - Пользователь не найден
401 - Нет авторизации
409 - Товар недоступен
Для каждого кода — тело ответа с понятным
error code. Договоритесь о едином формате ошибок на весь проект и зафиксируйте один раз.Самое недооценённое. Структура понятна — но что происходит внутри?
Пишите явно: заказ создаётся только если все товары в наличии, после создания резервируется остаток, уходит email-уведомление. Если этого нет в ТЗ — разработчик придумает сам. Иногда угадывает. Чаще нет.
Таймаут: не более 2 секунд
Нагрузка: до 100 запросов в минуту
Если нужна защита от дублей — опишите механизм явно через Idempotency-Key в заголовке. Само собой не появится.Хорошее ТЗ — это не формальность. Это единственный способ получить то, что вы имели в виду, а не то, что разработчик имел в виду за вас
___________
Источник: @ba_and_sa
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍6❤5🤯1
Киска в зоне риска... на сокращение😾
Если у тебялапки руки на работе опускаются от страха сокращений, и ты в панике бросаешься мониторить вакансии курьера - остановись
Первыми сокращают специалистов с пробелами в базовой инженерии БД. Достаточно понимать, как работают репликация, партиционирование и шардирование
Вот поэтому мы решили дать тебе мощную техническую базу! 😎 10 июля в 19:00 (МСК) проведем бесплатный веб “Масштабирование реляционных БД. На чем сыпятся даже сеньоры”
Разберемся, как система ведет себя на проде под нагрузкой. Этот хард-скилл защитит тебя от любых кризисов, сделает востребованным и даст возможность уйти в топовую компанию на нормальные деньги
Бонус: кто будет на эфире вживую, получит возможность пройти аудит навыков и получить персональный карьерный трек бесплатно
Регистрируйся по ссылке
Erid: 2SDnjezxCUS
Название: ООО "СТЕП БАЙ СТЕП"
ИНН: 0800013217
Если у тебя
Первыми сокращают специалистов с пробелами в базовой инженерии БД. Достаточно понимать, как работают репликация, партиционирование и шардирование
Вот поэтому мы решили дать тебе мощную техническую базу! 😎 10 июля в 19:00 (МСК) проведем бесплатный веб “Масштабирование реляционных БД. На чем сыпятся даже сеньоры”
Разберемся, как система ведет себя на проде под нагрузкой. Этот хард-скилл защитит тебя от любых кризисов, сделает востребованным и даст возможность уйти в топовую компанию на нормальные деньги
Бонус: кто будет на эфире вживую, получит возможность пройти аудит навыков и получить персональный карьерный трек бесплатно
Регистрируйся по ссылке
Erid: 2SDnjezxCUS
Название: ООО "СТЕП БАЙ СТЕП"
ИНН: 0800013217
❤4
Авторизация по протоколу OAuth 2.0 в интеграциях
⏳ 4 мин | 🟡🟡⚪️
Читать статью | @analysis_it
💙 Analyst IT | 💬 Analyst IT
Читать статью | @analysis_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Авторизация по протоколу OAuth 2.0 в интеграциях
В интеграциях с внешними приложениями часто используется протокол OAuth 2.0. Он позволяет приложению получить доступ к данным пользователя без передачи пароля. В этой статье разбирается практический...
❤3
Forwarded from Business | System analyst
Как читать чужую документацию на API, чтобы не наступить на грабли
Салют! Решила еще написать пару постов на тему API и рассказать случай из практики:
Вот на что я теперь смотрю в первую очередь:
1. Есть ли вообще схема ошибок
Если описаны только успешные ответы — это красный флаг. Спрашиваю прямо: “пришлите список всех кодов ошибок и их тела ответов”. Если в ответ тишина или “ну, обычно 400 и 500” — закладываю время на уточнения в процессе разработки. Они будут точно.
2. Что значит “опциональное” поле на самом деле
Поле помечено как optional. Окей, а что если его не передать?
— Подставится дефолт? — Просто проигнорируется? — Или вернётся ошибка, потому что поле опциональное только формально, а по факту обязательное при определённых условиях?
Третий вариант встречается чаще, чем хотелось бы. Проверяю на реальном запросе, документации на слово не верю.
3. Идемпотентность — спрашиваю прямо
Если интеграция создаёт сущности — платёж, заказ, бронирование — обязательно уточняю: что при повторном запросе с теми же данными? Дубль? Та же сущность вернётся? Для платежей это критично — повторный запрос из-за обрыва сети не должен списать деньги дважды.
Если в документации об этом ни слова, это не значит что идемпотентности нет. Значит, про неё просто забыли написать. Спрашиваю у владельцев API напрямую, не додумываю сама.
4. Лимиты и троттлинг
Сколько запросов в секунду разрешено? Что происходит при превышении — 429 Too Many Requests, как и положено по спецификации? Или, как бывает на практике, сервис просто молча обрывает соединение либо отдаёт 503? Это нужно знать заранее, а не выяснять на проде в пятницу вечером.
5. Версионирование — какая версия актуальна на самом деле
Иногда документация описывает v2, а в реальности эндпоинт всё ещё на v1, потому что миграция не завершена. Смотрю дату последнего обновления документации. Если её нет — тоже звоночек.
6. Тестовая среда — её поведение реально совпадает с продом?
Самое неприятное открытие — когда на тестовом стенде всё работает идеально, а на проде логика чуть другая. Уточняю у поставщика API: гарантируется ли идентичность тестовой и боевой среды, или есть нюансы, о которых стоит знать заранее.
Документация — это обещание. Но обещания не всегда выполняют полностью. Задача аналитика — найти дыры до того, как их найдёт разработчик в проде, а не после.
🧐 Если было полезно, ставьте реакции, буду делиться больше такой информацией))
___________
Источник: @ba_and_sa
💙 BA|SA | 💬 BA|SA
Салют! Решила еще написать пару постов на тему API и рассказать случай из практики:
Получаю как-то документацию на внешнее API — для интеграции с платёжным сервисом. Открываю Swagger, всё красиво, эндпоинты на месте. Согласовываю интеграцию, передаю в разработку.
Через две недели разработчик приходит с вопросом: “А что возвращает API если платёж завис в статусе pending дольше часа?” И тут выясняется — в документации этого нет вообще. Ни слова.
Хорошая документация — редкость. Поэтому аналитик должен уметь читать её критически, а не просто принимать как есть.
Вот на что я теперь смотрю в первую очередь:
1. Есть ли вообще схема ошибок
Если описаны только успешные ответы — это красный флаг. Спрашиваю прямо: “пришлите список всех кодов ошибок и их тела ответов”. Если в ответ тишина или “ну, обычно 400 и 500” — закладываю время на уточнения в процессе разработки. Они будут точно.
2. Что значит “опциональное” поле на самом деле
Поле помечено как optional. Окей, а что если его не передать?
— Подставится дефолт? — Просто проигнорируется? — Или вернётся ошибка, потому что поле опциональное только формально, а по факту обязательное при определённых условиях?
Третий вариант встречается чаще, чем хотелось бы. Проверяю на реальном запросе, документации на слово не верю.
3. Идемпотентность — спрашиваю прямо
Если интеграция создаёт сущности — платёж, заказ, бронирование — обязательно уточняю: что при повторном запросе с теми же данными? Дубль? Та же сущность вернётся? Для платежей это критично — повторный запрос из-за обрыва сети не должен списать деньги дважды.
Если в документации об этом ни слова, это не значит что идемпотентности нет. Значит, про неё просто забыли написать. Спрашиваю у владельцев API напрямую, не додумываю сама.
4. Лимиты и троттлинг
Сколько запросов в секунду разрешено? Что происходит при превышении — 429 Too Many Requests, как и положено по спецификации? Или, как бывает на практике, сервис просто молча обрывает соединение либо отдаёт 503? Это нужно знать заранее, а не выяснять на проде в пятницу вечером.
5. Версионирование — какая версия актуальна на самом деле
Иногда документация описывает v2, а в реальности эндпоинт всё ещё на v1, потому что миграция не завершена. Смотрю дату последнего обновления документации. Если её нет — тоже звоночек.
6. Тестовая среда — её поведение реально совпадает с продом?
Самое неприятное открытие — когда на тестовом стенде всё работает идеально, а на проде логика чуть другая. Уточняю у поставщика API: гарантируется ли идентичность тестовой и боевой среды, или есть нюансы, о которых стоит знать заранее.
Документация — это обещание. Но обещания не всегда выполняют полностью. Задача аналитика — найти дыры до того, как их найдёт разработчик в проде, а не после.
___________
Источник: @ba_and_sa
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍4❤3🙈1
Всем привет! Напоминаю о нашем розыгрыше
Присоединяйтесь и получите шанс выиграть от нас подарочки))
Разыгрывать будем уже сегодня в 17:00🙂
Присоединяйтесь и получите шанс выиграть от нас подарочки))
Разыгрывать будем уже сегодня в 17:00
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
1. Роман (@zkhromann)
2. AlexUnit (@AlexxUnit)
3. Tryshch (@Tryshch)
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉6
Разбираемся с лицензией Redis. И что выбрать продуктовой команде
⏳ 11 мин | 🟡🟡⚪️
Читать статью | @analysis_it
💙 Analyst IT | 💬 Analyst IT
Читать статью | @analysis_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Разбираемся с лицензией Redis. И что выбрать продуктовой команде
Привет, Хабр! Многие из нас использовали Redis годами как кеш, брокер коротких сообщений или хранилище сессий, поднимали его в Docker, в Kubernetes или покупали в облаке. Думаю немногие читали LICENSE...
Корпоративная библиотека как система: Как мы выстраивали архитектуру знаний для нашей IT-команды и что из этого вышло?
⏳ 5 мин | 🟡⚪️⚪️
Читать статью | @analysis_it
💙 Analyst IT | 💬 Analyst IT
Читать статью | @analysis_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Корпоративная библиотека как система: Как мы выстраивали архитектуру знаний для нашей IT-команды и что из этого вышло?
Когда команда небольшая и все сидят в одном открытом пространстве, знания передаются почти сами собой — через разговор у кофемашины, ревью кода, общий чат. Пока команда маленькая, это терпимо, но как...
❤3
Переход с 1С: УПП на 1С:ERP: этапы, стоимость и риски
⏳ 6 мин | 🟡⚪️⚪️
Читать статью | @analysis_it
💙 Analyst IT | 💬 Analyst IT
Читать статью | @analysis_it
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Переход с 1С: УПП на 1С:ERP: этапы, стоимость и риски
Переход с 1С:УПП на 1С:ERP требует аудита процессов, очистки данных, настройки интеграций и обучения команды. В статье: этапы миграции, сроки, способы снизить бюджет, риски переноса данных и...
❤2