15708
Присоединяйтесь к нашему каналу и погрузитесь в мир Backend-разработки Связь: @devmangx РКН: https://clck.ru/3FobxK
Шаблон Full Stack FastAPI теперь отдаёт фронтенд на React и TanStack прямо через FastAPI.
В итоге одно приложение, один деплой и один домен.
Без отдельного фронтенд-сервера, лишней настройки CORS и постоянной отладки проблем между двумя частями приложения.
https://github.com/fastapi/full-stack-fastapi-template
👉 @BackendPortal
Если изучаете Kubernetes, стоит посмотреть на этот репозиторий — внутри 24 практические лабораторные работы 😆
Он охватывает
→ Pods, Deployments, ReplicaSets, StatefulSets и DaemonSets
→ развёртывания, откаты и масштабирование на ходу
→ Secrets, ConfigMaps, PV и PVC
→ привязку к узлам, taints и tolerations, RBAC
→ Services, Ingress и Helm
→ настройку кластера через Kubeadm
В каждой лабораторной есть YAML, команды kubectl и полноценное практическое задание.
Выберите одну. Откройте терминал. Начинайте ломать.
Репозиторий — https://github.com/omerbsezer/Fast-Kubernetes
👉 @BackendPortal
Эти заметки — структурированное руководство по собеседованиям по проектированию систем.
Внутри разбираются как базовые подходы к System Design, так и конкретные архитектуры: веб-краулеры, системы уведомлений, платёжные платформы и другие типичные задачи с собеседований.
https://github.com/liquidslr/system-design-notes
👉 @BackendPortal
Когда впервые сталкиваешься с гонками данных и моделью памяти Go, многое выглядит довольно странно.
Например, почему код ниже вообще может не работать?
Официальное описание модели памяти Go довольно большое и сложное, поэтому автор решил объяснить всё намного проще.
И тема оказалась куда интереснее, чем кажется — через неё хорошо видно, как Go на самом деле работает с памятью и горутинами.
https://func25.dev/posts/go-memory-visibility/
👉 @BackendPortal
Shell Gym – интерактивный тренажёр командной строки Linux, созданный на основе многолетнего опыта преподавания. По сути, автор выделил ядро iximiuz Labs и превратил его в отдельный демон.
https://github.com/iximiuz/shellgym
👉 @BackendPortal
С Lazydocker работать с Docker становится заметно проще
Lazydocker – это опенсорс TUI для управления Docker и Docker Compose прямо из терминала.
В одном интерфейсе можно смотреть контейнеры, сервисы, логи и метрики, а также перезапускать, удалять и пересобирать контейнеры или подключаться к ним, без постоянного ввода Docker-команд.
github.com/jesseduffield/lazydocker
👉 @BackendPortal
Репозиторий TypeScript больше не на JavaScript. Теперь он на Go.
TypeScript 7 только что влили в основную ветку.
✓ Нативный компилятор — до 10 раз быстрее
✓ Значительная часть JavaScript-кода уходит в прошлое
Конец одной эпохи. И начало другой:
https://github.com/microsoft/TypeScript/pull/63763
Этот репозиторий на GitHub собрал больше 1000 бесплатных публичных API практически на любой случай.
Финансы, погода, карты, музыка, игры, машинное обучение, крипта, транспорт, наука, безопасность и десятки других категорий — всё собрано в одном месте.
Полезная штука, если нужен готовый API для пет-проекта, прототипа или тестирования идеи.
https://github.com/public-apis/public-apis
👉 @BackendPortal
Бенчмарки – оружие массового заблуждения?
E2E-бенчмарк может показать впечатляющие цифры, но при этом тестовые сценарии расходятся с реальностью. Что с этим делать расскажет Антон Курако на JVM Day от Т-Банка – конференции для Java-, Scala- и Kotlin-разработчиков, архитекторов и тимлидов. Спикер объяснит, где заканчивается полезное измерение и начинается погоня за красивыми показателями, а также как проверять производительность так, чтобы не стать жертвой собственного графика.
Еще в программе – доклад Сергея Петрелевича о Mechanical Sympathy. На примере Spring Boot MVC он покажет, как такой подход помогает добиться большей скорости с помощью простых решений и готовых библиотек. Александр Ланцов разберет разные модели конкурентного программирования после появления Virtual Threads, а Андрей Кулешов поделится последними новостями из мира JVM-языков.
После деловой программы начнется афтепати с играми, ИТ-квизом и диджей-сетом на виниле. Количество мест на ивент ограничено, поэтому есть смысл зарегистрироваться заранее. Пишите, если пойдете, в комментах: тем, кто тоже собирается на JVM Day, будет проще вас найти и организовать совместный поход.
👉 @BackendPortal
Linux 101: Практика по управлению хранилищами
Отработайте основы управления хранилищами в Linux на серии практических заданий – от монтирования существующих файловых систем до разметки дисков и автоматизации их подготовки:
- Смонтировать диск с уже существующими данными и прочитать его содержимое
https://labs.iximiuz.com/challenges/storage-simple-mount
- Создать файловую систему ext4 на неформатированном диске
https://labs.iximiuz.com/challenges/storage-simple-format
- Создать таблицу разделов GUID Partition Table (GPT) на пустом диске
https://labs.iximiuz.com/challenges/storage-simple-partition-table
- Разбить диск на несколько разделов и отформатировать их в ext4 и Btrfs
https://labs.iximiuz.com/challenges/storage-partition-drive
- Смонтировать существующую директорию по новому пути с помощью bind mount
https://labs.iximiuz.com/challenges/storage-bind-mount
- Настроить постоянное монтирование файловой системы, чтобы оно сохранялось после перезагрузки
https://labs.iximiuz.com/challenges/storage-persistent-mount
- Автоматизировать подготовку диска с помощью shell-скрипта
https://labs.iximiuz.com/challenges/storage-provision-drive-script
Илон теперь взялся за Microsoft!!
Cursor планирует убить GitHub.
Вчера GitHub не работал семь с половиной часов. Сайт, Actions, Copilot, слияние кода — всё лежало. О сбое сообщили 15 000 разработчиков.
Технический директор GitHub признал, что они закладывали запас мощностей в 10 раз, а в итоге поняли, что нужен запас в 30 раз. Теперь GitHub арендует серверы у AWS — крупнейшего облачного конкурента Microsoft.
И в тот же день Cursor запустил Origin.
👉 @BackendPortal
На одном собеседовании по системному дизайну я использовал Kafka.
На другом — Redis.
На ещё одном — S3.
На ВСЕХ собеседованиях по системному дизайну я использовал базы данных.
Базы данных — основа любой архитектуры независимо от масштаба, стека или предметной области.
Если вы понимаете, как данные хранятся, запрашиваются, индексируются, реплицируются и партиционируются, то вы уже понимаете 70% системного дизайна.
Не отвлекайтесь на каждый новый модный компонент. Очереди, кэши и оркестраторы приходят и уходят.
А базы данных остаются.
Реляционные, NoSQL, временные ряды, векторные базы — подходы меняются, но принципы остаются теми же:
- пути чтения и записи
- индексация и кэширование
- транзакции и изоляция
- репликация и партиционирование
Разберитесь глубоко в том, как движутся данные, и вы увидите, как с ними связаны все остальные части системы.
Изучайте базы данных глубоко.
Большинство других компонентов существуют лишь для того, чтобы перемещать эти данные, защищать их или оптимизировать доступ к ним.
👉 @BackendPortal
Клиент доволен. Осталось только перейти к оплате ✅
Для разработчика это не должно превращаться в очередную задачу.
Обменник by Ali помогает принимать оплату от зарубежных клиентов через понятный сценарий в Telegram.
Что вы получаете:
• актуальные реквизиты для каждой новой оплаты
• статус и проверку платежа в приложении, а не догадки в переписке
• баланс, историю операций и гибкий вывод средств в одном месте
🌎 Сервис помогает и с оплатой зарубежных рабочих инструментов: ChatGPT, Claude, GitHub, Cursor, облачных сервисов, доменов, хостингов, подписок и других нужных покупок.
🙅🏻♂️Не нужно каждый раз искать новый способ и разбираться с оплатой самостоятельно.
💰Наш сервис: /channel/exchanger_ali_bot?start=ABC4DC15
Посмотрите отзывы в нашем Telegram-канале.
Подробнее о сервисе — на сайте.
Остались вопросы? Ответ даст наш умный бот
Competitive Programmer’s Handbook — руководство по спортивному программированию.
Книга рассчитана на студентов, которые хотят изучить алгоритмы и, возможно, готовиться к Международной олимпиаде по информатике IOI или Международному студенческому чемпионату по программированию ICPC.
PDF доступен бесплатно.
https://cses.fi/book/book.pdf
👉 @BackendPortal
Никто не хочет весь день смотреть в панели мониторинга PostgreSQL. Поэтому чувак сделал бота, который делает это за вас.
Он находит, что работает не так, объясняет, что изменилось, и говорит, что нужно исправить в первую очередь.
Метрики — это данные. pgbot даёт вам ответы.
pgbot умеет следить за состоянием PostgreSQL, анализировать производительность запросов, находить медленные запросы и регрессии, разбирать блокировки и блокирующие запросы, анализировать таблицы и индексы, показывать работу VACUUM и autovacuum, отслеживать рост базы данных, находить первопричины проблем с помощью ИИ и давать рекомендации.
Подключаться можно напрямую к базе или через агента с приватным доступом.
Бесплатный, с открытым исходным кодом и написан на Go.
👉 @BackendPortal
Бывший глава GitHub строит ему замену.
Потому что GitHub уже не справляется с собственной инфраструктурой.
Сейчас GitHub обрабатывает 2,9 млрд коммитов в месяц. Ещё в апреле было 1,4 млрд. То есть нагрузка удвоилась всего за четыре месяца.
Каждый месяц сливаются 130 млн пул-реквестов и создаются 24 млн новых репозиториев.
И это уже второй крупный сбой GitHub только за август.
Технический директор GitHub Влад Фёдоров прямо написал в разборе инцидента
«Мы добились прогресса, но эти инциденты ясно показывают, что нам нужно ускорить эту работу».
Сейчас уже 58% нагрузки GitHub работает на Microsoft Azure. В мае было всего 12%.
Только за этот год компания добавила 3 млн процессорных ядер и 120 петабайт хранилища.
Собственные центры обработки данных GitHub упёрлись в предел. Причём не по бюджету, а буквально по доступной мощности электроснабжения.
Тем временем Томас Домке, который руководил GitHub до 2024 года, запустил новую компанию Entire.
И она создаётся именно потому, что он не верит, что нынешняя архитектура GitHub сможет выдержать ту нагрузку, которую скоро начнут генерировать ИИ-агенты для программирования.
Источник — The New Stack.
👉 @BackendPortal
Tobi Lütke, сооснователь и CEO Shopify, на выходных сделал открытую реализацию подхода из статьи Cursor «Git at Scale».
Проект называется walgit. Это один бинарный файл на Rust, который можно подключить к любому S3-совместимому объектному хранилищу. Он использует WAL и CAS и при этом не требует отдельной базы данных.
Также есть поддержка bundle-uri, благодаря чему большие Git-репозитории и монорепозитории можно гораздо быстрее скачивать как цепочку статических бандлов.
Плюс добавлен базовый привычный интерфейс.
Исходный код открыт - https://github.com/tobi/walgit
👉 @BackendPortal
Создатель PostgreSQL фактически поблагодарил Oracle за успех своей базы данных.
Майкл Стоунбрейкер создал PostgreSQL. Ему уже за 80, а он до сих пор продолжает запускать компании.
Его слова
«Мы должны поблагодарить Oracle за популярность PostgreSQL, потому что когда они купили MySQL, все испугались... Именно тогда и начался подъём PostgreSQL».
Oracle купила MySQL в 2010 году. Разработчики начали мигрировать ещё до того, как компания успела сделать что-то плохое.
Спустя 15 лет Стоунбрейкер считает, что страхи были оправданы.
В сентябре 2025 года Oracle провела масштабные сокращения в основной команде MySQL.
А PostgreSQL тем временем стал самой популярной базой данных среди разработчиков ещё в 2023 году. Microsoft, Google и Amazon построили вокруг его протокола собственные сервисы.
О нынешнем положении MySQL Стоунбрейкер говорит просто
«Исчезает как конкурент».
А главную причину успеха PostgreSQL он объясняет так
«Им управляет группа из 20–30 очень умных суперпрограммистов... Это открытый исходный код в своём лучшем проявлении».
Получается красиво.
Oracle 15 лет подряд случайно строила главное преимущество PostgreSQL.
У него никогда не было одного владельца, которого все могли бы бояться.
👉 @BackendPortal
Подзапросы в SQL сначала могут казаться запутанными, но на деле это просто запросы, которые передают данные другому запросу.
В этой статье Абдулла объясняет, как работают подзапросы и где они используются в SQL.
Разбираются некоррелированные и коррелированные подзапросы, производные столбцы и таблицы, а также операторы IN, ANY, ALL, EXISTS и многое другое.
https://freecodecamp.org/news/how-to-work-with-subqueries-in-sql/
👉 @BackendPortal
Вам доклады по Go или Java? VK приглашает на митап с двойной начинкой
26 августа VK собирает Go- и Java-инженеров, чтобы прокачать знания.
В программе два трека — Go и Java, по три доклада в каждом.
Трек Go:
• «Компиляция Go в динамическую либу, или как мы ускорили выкатку фичи в два раза, но нам не понравилось», Михаил Кичигин, бэкенд-разработчик, Avito Tech
• «Go-платформа VK: как мы построили единую основу для создания Go-сервисов», Александр Апанасенко, руководитель команды SDK Backend, VK
• «Почтальон от Kubernetes до Palo Alto. Как осуществляется доставка информации об адресах», Дарья Кулькина, бэкенд-разработчик, Точка Банк
Трек Java:
• «Перформанс-трюки в поисковой платформе Ozon», Пётр Портнов, ведущий разработчик среднего поиска, Ozon
• «Архитектура современного движка платёжной системы и переход к новой архитектуре», Игорь Крикунов, технический лидер разработки DBC, Альфа-Банк
• «Переход от федерации S3-кластеров в пользу коммунального и мультитенантного кластера», Кирилл Боблак, ведущий разработчик One-cloud, VK
А ещё будет мастер-класс по прокачке навыка, который сделает вас звездой любого вечера, и афтепати, чтобы обсудить доклады в неформальной обстановке.
Встречаемся в 17:00, начало в 18:00. Участие бесплатное, регистрация обязательна.
20 Kubernetes-челленджей
Итак, вот 20 вопросов (и ответов):
1. danielepolencic/kubernetes-challenge-1-counting-endpoints-9d9c49dac2aa">Подсчёт endpoints
2. danielepolencic/kubernetes-challenge-2-waiting-for-a-miracle-f8448c864397">Ждём чуда
3. danielepolencic/kubernetes-challenge-3-i-said-stop-3323e74002ca">Я сказал стоп
4. danielepolencic/kubernetes-challenge-4-designing-shared-clusters-dc836f087fb2">Проектирование shared-кластеров
5. danielepolencic/kubernetes-challenge-5-kernel-panic-b5409d3db6e4">Kernel panic
6. danielepolencic/challenge-6-hop-little-bunny-b0748c3cd907">Прыгай, кролик
7. danielepolencic/kubernetes-challenge-7-how-many-is-too-many-217cbc2c2b63">Сколько — это слишком много
8. danielepolencic/kubernetes-challenge-8-keeping-the-lights-on-bb2826dba28b">Держим свет включённым
9. danielepolencic/kubernetes-challenge-9-greedy-etcd-ba0e395cac8a">Прожорливый etcd
10. danielepolencic/challenge-10-multiplying-pods-ebd2a65e0ac9">Умножение pod’ов
11. danielepolencic/kubernetes-challenge-11-going-indie-0a91d244b17f">В одиночку
12. danielepolencic/challenge-12-rollin-28abe367e76b">Rollin’
13. danielepolencic/challenge-13-all-you-can-eat-c93045d17388">All you can eat
14. danielepolencic/challenge-14-bounce-2ba683214e7b">Bounce
15. danielepolencic/challenge-15-down-the-rabbit-hole-d1d16121a835">В кроличью нору
16. danielepolencic/challenge-16-throttled-93133f8fd0ad">Throttled
17. danielepolencic/challenge-17-sticky-mess-7f7f00be2636">Липкий бардак
18. danielepolencic/challenge-18-dead-or-alive-16357e0b874e">Жив или мёртв
19. danielepolencic/challenge-19-tied-up-dc16a3786218">Связанный по рукам
20. danielepolencic/challenge-20-one-to-bind-them-all-ca83406d0296">Один, чтобы связать их всех
Разработчику стоит знать основные концепции системного дизайна.
Это помогает показать потенциальным работодателям, что вы умеете превращать требования к архитектуре в готовый к продакшену код.
В курсе разбираются архитектура приложений, проектирование API, кэширование, сети, базы данных и многое другое.
https://freecodecamp.org/news/learn-system-design-principles/
👉 @BackendPortal
Похоже, это один из самых полных справочников по самостоятельному хостингу.
Огромный открытый гайд со всем, что нужно для старта и дальнейшего изучения self-hosting:
Docker, Kubernetes, базы данных, LLM, сети, Raspberry Pi, Home Assistant, безопасность, программирование и ещё куча всего.
Если давно хотели научиться запускать собственный софт вместо того, чтобы зависеть от SaaS-сервисов, это точно стоит сохранить.
Источник: github.com/mikeroyal/Self-Hosting-Guide
👉 @BackendPortal
Импортируете CSV в Postgres? Используйте COPY или \copy.
Это быстро, потому что данные передаются одной массовой командой с минимальным количеством обменов по протоколу, одним разбором и планированием, прямым преобразованием строк и без накладных расходов на отдельный запрос для каждой строки.
Что важно знать:FORMAT csv
Включает стандартный разбор CSV: запятые, поля в кавычках и экранированные кавычки.
Список целевых столбцов
Порядок столбцов в CSV редко совпадает с таблицей. Всегда указывайте целевые столбцы в том порядке, в котором они идут в файле. Postgres сопоставляет их по позиции, а не по имени из заголовка CSV.HEADER / HEADER n
Пропускает строки заголовка. Обычный HEADER пропускает первую строку. Ожидается, что Postgres 19 позволит передавать число, например HEADER 2, чтобы пропускать несколько начальных строк.DEFAULT 'string'
Позволяет сопоставить специальную строку в CSV, например '__DEFAULT__', с выражением DEFAULT соответствующего столбца.
Неуказанные столбцы
Столбцы таблицы, которые не указаны в списке целевых столбцов, автоматически получают DEFAULT или NULL.
Лишние столбцы в CSV
Postgres выдаст ошибку, если в CSV больше полей, чем указано целевых столбцов. Обрежьте файл или сначала загрузите данные в более широкую промежуточную таблицу.
NULL-значения
В формате csv стандартным представлением NULL является пустая строка без кавычек. Это можно изменить через NULL 'string'.
Обработка ошибок через ON_ERROR и REJECT_LIMIT
Исторически COPY останавливался на первой ошибке преобразования. В новых версиях появились:
• ON_ERROR ignore в Postgres 17 — пропускает некорректные строки и сообщает их количество
• REJECT_LIMIT n в Postgres 18 — задаёт максимальное число плохих строк при ON_ERROR ignore, после которого импорт будет остановлен
• ON_ERROR set_null в Postgres 19 — заменяет некорректное поле на NULL вместо того, чтобы отбрасывать всю строку
👉 @BackendPortal
🔴В 2025 году Россияне заработали 5,3 млрд рублей на арбитраже криптовалют
По данным Минфин 32% граждан покинули своё место работы, поскольку в среднем уже в первый месяц тут можно зарабатывать от 140 000 рублей, а через 2-3 месяца с легкостью выйти на семизначные числа.
Самое смешное, что лишь 8% россиян что-то слышали об этой профессии, хотя все инструкции бесплатно лежат на канале Арбитраж Криптовалют
Там объясняют, как имея телефон и доступ в интернет, заработать свои первые $2000. Причём разжёвывают так доступно, что поймёт даже ребенок. Кстати, на канале сегодня вышла новая рабочая связка!
Быстрее вступайте, пока это бесплатно — /channel/+yFtPq4VlI-k0OWEy
PostgreSQL: архитектура и тюнинг SQL-запросов
Погрузись в архитектуру и прокачай оптимизацию запросов одной из самых популярных open source СУБД – PostgreSQL.
🌐 В программе курса:
🤩 Разберём, как работают СУБД вообще и PostgreSQL в частности: что такое MVCC, ACID, WAL, LRU, PPC/TPC и другие фундаментальные понятия архитектуры баз данных
🤩 Получишь теорию и практику EXPLAIN и EXPLAIN ANALYZE на разных типа запросов: без индексов, с индексами, index only, нормализованные и документ-ориентированные данные и json-поля, изменение параметров сессии/конфигурации для ускорения запросов
🤩 Изучишь архитектуру хранения данных в PostgreSQL, типы и особенности индексов, а также полезные советы и трюки оптимизации БД
🤩 Получишь свой собственный выделенный облачный PostgreSQL-сервер (8 vCPU, 12G RAM, 100G NVMe) – предоставляется БЕСПЛАТНО на время обучения + готовый e-commerce датасет TPC-H (миллион пользователей, несколько миллионов заказов на десятки гигабайт)
🗓 Старт курса: 3 сентября. 5 недель обучения.
BackendPortal">Изучить программу и записаться можно здесь.
🤩Кто мы: R&D-центр Devhands, автор курса Николай Ихалайнен, эксперт по СУБД (ex-Percona), со-основатель MyDB, энтузиаст открытого ПО.
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzquuHE37
Microsoft открыла исходный код одного из лучших из своих инструментов для анализа данных с помощью ИИ.
Он называется Data Formulator.
Подключите любой источник — CSV, Postgres, BigQuery или даже URL с актуальными данными, а затем создавайте графики с помощью сочетания перетаскивания и обычного языка.
ИИ-агент сам пишет SQL и выполняет преобразования, а затем выдаёт график, который можно редактировать.
Можно перетаскивать поля на X/Y/Color, закреплять очищенный результат, чтобы последующие запросы не возвращались к исходным данным, создавать ответвления от любого графика для изучения других вариантов и подключать актуальные данные с автоматическим обновлением.
Используйте ключ своей модели, и всё будет работать локально.
👉 @BackendPortal
11 принципов разработки ПО, которые стоило понять гораздо раньше.
1. SOLID — более качественное объектно-ориентированное проектирование
2. DRY — не повторяйся
3. KISS — не усложняй
4. YAGNI — не реализуй то, что пока не нужно
5. SRP — одна ответственность
6. Open/Closed — расширяй, не ломая существующее
7. Dependency Inversion — уменьшай связанность
8. Composition — собирай систему из гибких компонентов
9. Separation of Concerns — разделяй ответственность между частями системы
10. Fail Fast — обнаруживай проблемы как можно раньше
11. Measure First — оптимизируй только то, что действительно имеет значение
👉 @BackendPortal
Летняя уборка в базе данных. Теперь пора посмотреть на сами запросы.pg_stat_statements отслеживает форму запросов, количество вызовов и время выполнения по всей базе. Это самый короткий путь от «база почему-то тормозит» до «вот эти пять запросов съедают большую часть времени».
Включаем pg_stat_statements
Если вы используете Crunchy Bridge, расширение уже доступно по умолчанию и можно сразу переходить к CREATE EXTENSION.
При самостоятельном размещении нужно изменить postgresql.conf и перезапустить PostgreSQL
shared_preload_libraries = 'pg_stat_statements, ...'
pg_stat_statements.track = top
top или all. Режим all также учитывает запросы внутри функций и процедур. top используется по умолчанию и отслеживает только запросы, выполняемые клиентами.CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
SELECT
round(total_exec_time::numeric, 1) AS total_ms,
calls,
round(mean_exec_time::numeric, 2) AS mean_ms,
rows,
query
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 20;
total_exec_time и большое значение rows у запроса, который в норме должен находить одну конкретную запись.calls — сколько раз запрос выполнялся с момента последнего сброса статистикиtotal_exec_time и mean_exec_time — суммарное и среднее время выполнения в миллисекундахrows — общее количество полученных или изменённых строкquery — нормализованный запрос с параметрами вида $1SELECT pg_stat_statements_reset();
EXPLAIN с реальными параметрами. pg_stat_statements показывает форму запроса, но не план выполнения.work_mem и слишком большое количество мелких запросов приложения вроде N+1.
Переименование поля в API изнутри кажется безобидным. Снаружи оно может положить каждый дашборд, который рассчитывал на старое имя.
Любое изменение API попадает в одну из двух категорий, и от этого зависит всё.
Если изменение ломающее, нужно поднимать версию: удаление или переименование полей, добавление обязательных параметров или фундаментальное изменение поведения эндпоинта.
Безопасные изменения можно выпускать без новой версии: добавлять необязательные поля, новые эндпоинты или просто ускорять работу.
Большая часть боли появляется из-за двух противоположных ошибок. Не версионировать вообще — и каждый релиз превращается для пользователей в лотерею. Версионировать всё подряд — и в итоге вы поддерживаете пять версий, а разработчики уже не понимают, какую использовать.
Несколько простых правил помогают держать баланс:
— Показывайте версию явно, например /v1/ в URL, как это делают Stripe и GitHub.
— Используйте семантическое версионирование, чтобы смена мажорной версии сразу означала необходимость изменений в клиентском коде.
— Если версия выводится из эксплуатации, говорите об этом прямо в ответе через заголовок Sunset и давайте 6–12 месяцев на миграцию.
Версия API — это обещание о том, что не изменится.
Нарушать его нужно редко и громко. Никогда — молча.
Какую ошибку вы встречали чаще?
👉 @BackendPortal