TGViewer
Гуманный аналитик Гуманный аналитик @humane_analyst · 415 subscribers
Post #168 309
🧛 Тёмная сторона обратной совместимости

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

С одной стороны да, и многие книги учат именно по такой логике развивать свои API, чтобы зазря не травмировать потребителей. Но на днях я столкнулся с другой стороной этого вопроса. Об этом и хотелось рассказать в этот замечательный вечер🎃.

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

Теперь представим, что ваша система потребляет некий API (микросервисная тут архитектура или нет — не суть), это взаимодействие было согласовано и должным образом учтено. При этом данный API не является приватным в том смысле, что это не взаимодействие между двумя вашими внутренними модулями. Соответственно, помимо вашей системы есть и иные потребители.

И вот в один прекрасный момент по той или иной причине API дорабатывается так, что ответ дообогащается новыми данными, причём эти данные относятся к более высокой категории (например, появляются сведения более высокого уровня конфиденциальности). Что мы имеем: после такой доработки к новым потребителям API вполне могут предъявляться повышенные требования, но ваша система спокойно продолжает потреблять API, обрабатывая из ответа ровно то, что и планировалось изначально, хотя в действительности в ответе получает и то, на что могла не иметь права. Более того, благодаря обратной совместимости вы ещё долго можете об этом не знать.

Выводы.
1️⃣ Описанная ситуация не универсальна и в ряде случаев на практике невозможна. В то же время держать её в голове точно не помешает.
2️⃣ При некоторых обстоятельствах общеупотребимые подходы и хорошие практики могут оказаться не такими уж и хорошими. Как минимум, они могут нуждаться в дополнительных действиях, нейтрализующих нежелательные эффекты.

#интеграции #сервисы
  • 🔥 5
More from @humane_analyst
  1. Oct 9, 2026Немного пятничного 🤣 #юмор #agile #методыуправления #жиза
  2. Oct 7, 2026«Вокруг света» выкатил тест на «врождённый интеллект»: «Какая фигура лишняя?». Я, конечно…
  3. Oct 1, 2026⚡ TechCommunity Fest 2026 (TCF2026) Я сегодня на TechCommunity Fest. Событие не для широко…
  4. Sep 28, 2026📕 "Ikigai: The Japanese Secret to a Long and Happy Life" by Héctor García and Francesc Mi…
  5. Sep 24, 2026Друзья, поздравляю всех с Днём системного аналитика! 🥂 Пусть все требования будут чёткими…
  6. Sep 21, 2026📣 Выложены записи трека "Архитектура и анализ" CodeFest'16. Смотрим! 📺 #события #codefes…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →