Yet Another Analyst


Гео и язык канала: Россия, Русский
Категория: Telegram


Анализ, архитектура, менеджмент в IT
Сообщество аналитиков: https://tech-analyst.ai
Вопросы сюда: @and_burakov

Связанные каналы  |  Похожие каналы

Гео и язык канала
Россия, Русский
Категория
Telegram
Статистика
Фильтр публикаций


#API #интеграция

Не верю, что снова пишу об этом... но в интернетах опять кто-то неправ.

Есть два реста между прошлым и будущем: REST-как-архитектура и REST-как-апи.

REST как архитектурный стиль - это та самая работа Филдинга, в которой он описывает 6 ограничений, которые нужно накладывать на распределенную систему, чтобы получить определенные свойства. И это вообще не про API и не про HTTP.

В этом смысле REST можно ставить в один ряд с SOA, MSA и другими арх стилями.

REST как стиль API - неформальное понятие, родившееся на фоне холиваров "Как правильно использовать HTTP" и "И что же такое RESTful-сервис". Тогда Лео Ричардсон предложил модель зрелости REST API, которую приняли Филдинг и индустрия.

Строится она на том, на сколько "правильно" мы используем HTTP-глаголы, проектируем URL, ресурсно-ориентированы, и вообще поддерживаем гипермедиа. Поэтому REST API в отрыве от HTTP никто особо не рассматривает. Кстати, по версии Филдинга, настоящего REST API почти никто не видел.

НО

На прошлой неделе я узнал, что существует протокол CoAP - Constrained Application Protocol. Там буквально взяли семантику HTTP и перекроили под специфику IoT, плюс он работает поверх UDP. Спасибо чатам за ночные срачи.

Если задуматься, то и честный GraphQL в этом смысле можно отнести к REST API. Причем реста там будет больше, чем в "каноничном" REST API over HTTP. Но вслух об этом лучше не говорить, конечно.

Вся эта метафизика в реальности никому особо неинтересна. Про REST-как-архитектуру давно никто не думает, хотя отдельные персонажи продолжают спрашивать на собесах (кстати, зачем?). Когда обсуждают ресты, скорее всего подразумевают REST API второго уровня зрелости.

А морали не будет. С окончанием понедельника вас.

———
29 августа стартует курс Интеграция и архитектура систем для опытных системных аналитиков


Ок, для анализа и выбора решения можно использовать простую табличку. Когда оно того стоит? Понятно, что нет смысла рисовать ее на каждый чих.

Когда точно будет полезно:

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

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

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

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

1. выделяем важные характеристики будущего решения
2. указываем желаемое/достаточное значение для каждой характеристики
3. пробуем сгенерить решение, которое обладает таким набором
4. если пилим не новую систему, то текущее состояние берем как Решение 0 - для сравнения

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




А как правильно-то?

На занятиях регулярно повторяется ситуация: разобрали задачу, спроектировали несколько вариантов решения, обсудили плюсы и минусы каждого. Далее следует вопрос: "А как правильно-то?"

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

Но как принимать решения?
1. Описываем задачу и контекст
2. Описываем варианты решения
3. Каждое решение обладает характеристиками, часть будет отличаться
4. Собираем табличку: характеристики vs варианты решения
5. Сортируем свойства по важности в рамках задачи
6. Заполняем клетки значениями
7. Анализируем, делаем выбор

Пример на картинке.

Где брать нужные свойства?
• Атрибуты качества системы aka NFR
• Ограничения: сроки, бюджеты, организационное, техрадар
• Продуктовые метрики - реже, но бывает

Что важно:

• Чаще всего хватает 3-4 характеристик, важных для нашей задачи.

• Максимально старайтесь использовать численные оценки, где это возможно. gRPC быстрее REST - правда? А на сколько? В 10 раз или на 10%? А оно нам надо?

• Не надо улучшать все сразу. Нам точно нужны 10.000+ rps в региональном магазине мебели?

• Когда мы улучшаем одну характеристику системы, обычно ухудшаем другую. Если решение ничего не ухудшает - скорее всего что-то пропустили.

• Обязательно прикрепляем табличку к ADR, Decision Log, Летописям Гениальных Костылей, или что там у нас. Команде, потомкам и агентам в будущем будет намного проще.

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

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


Смотрю отзывы с последнего потока интеграции и архитектуры систем и думаю: зачем я, буренка, тебя закрываю?

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

Возможно, потом переделаю в симулятор, чтобы добро не пропадало.

Если кратко, о чем курс:

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

— про понимание протоколов и инфры под ними, а не механическую работу по чек-листам и чужим критериям выбора

— про распределенные системы и фундаментальные проблемы проектирования, а не модные базворды

— про умение сформулировать архитектурный вопрос, провести исследование, оценить возможные решения

Начинаем 29 августа, рега здесь.

Отзывы с последних потоков смотрите тут


Есть кто на ит пикнике сегодня?




#API
Не прошло и пяти лет, как в HTTP утвердили глагол QUERY. Вот теперь заживем!

Краткая история:
• сложные запросы плохо ложатся в query-параметры
• 10 лет назад пытались пофиксить, разрешив слать тело в GET, но никто это особо не поддержал
• сейчас решили вынести этот кейс в отдельный глагол

Как это будет выглядеть:
QUERY /contacts HTTP/1.1
Host: example.org
Content-Type: application/x-www-form-urlencoded
Accept: application/json

select=surname,givenname,email&limit=10&match=%22email=*@example.*%22


HTTP/1.1 200 OK
Content-Type: application/json
Content-Location: /contacts/stored-results/17
Location: /contacts/stored-queries/42
Last-Modified: Sat, 25 Aug 2012 23:34:45 GMT
Date: Sun, 17 Nov 2024, 16:10:24 GMT

[
{ "surname": "Smith",
"givenname": "John",
"email": "smith@example.org" },
{ "surname": "Jones",
"givenname": "Sally",
"email": "sally.jones@example.com" },
{ "surname": "Dubois",
"givenname": "Camille",
"email": "camille.dubois@example.net" }
]


Чем же QUERY отличается от привычной реализации через POST?

— Он ИДЕМПОТЕНТНЫЙ
Ну да, а мы-то сейчас при чтении постом полбазы апдейтим

— Его можно кэшировать!!!
Вы предлагаете кэшировать на уровне тела, мы давно так делаем в GraphQL и прочих RPC

— Результат работы QUERY можно повторно получить с помощью GET
Получается, мы создаем некий вспомогательный ресурс с помощью QUERY. Т.е. это не только чтение?

Обновление актуально для тех, кто все еще стремиться делать "каноничное REST API", остальные давно оставили в покое несвежий труп стюардессы. Справедливости ради, даже для нормальных рестов первого уровня было бы удобно выделить логику из POST в другой глагол для единообразия, но вангую, что судьба этого обновления будет примерно такой же, как у GET-body и стандарта на описание ошибок в HTTP.


Репост из: Tech Analyst Club - проектирование, архитектура, AI
Привет, Екатеринбург!

Через неделю делаем оффлайн митап вместе с аналитиками Контура. Обсудим, чем AI может помочь в работе, и как эффективно использовать LLM.

Что в программе:

• Андрей Бураков — У нас был контекст, мы им управляли?

• Светлана Дергачева — AI-дизайн для аналитиков: design‑as‑code, работа с презентациями, кликабельные интерфейсы и генерация дизайн-системы

• Сергей Петров — Как мы автоматизировали создание Troubleshooting Guide с помощью LLM

• Афтепати и неформальное общение

📆 28 июля, вторник, сбор гостей с 18:30

📍 Адрес: ул. Малопрудная, д 5. Офис разработки Контура, конференц-зал, 1 этаж

🔗 Смотрите программу и регайтесь по ссылке




Год назад писал, как с помощью ChatGPT пробовал интегрироваться с разными публичными сервисами.

Тогда были проблемы с интерпретацией пользовательских сценариев, маппингом на технические вызовы, проектированием асинхронных взаимодействий.

Сейчас кинул ссылку на здоровую эквайринговую доку и надиктовал голосом, что хочу — Fable и Opus 4.8, задали правильные вопросы, построили схемы, задизайнили БД. В некоторых местах поправил, что было проще в будущем. Codex не тестил, но думаю, там тоже достойно будет.

Ну да, эквайринг — довольно типовая штука. Но факт остается.


На какой воркшоп сходили бы?
Опрос
  •   Как обеспечить НФТ на этапе архитектуры
  •   Трейдоффы в архитекуре
  •   Никакой, оба неинтересны
65 голосов


И снова обращаюсь к коллективному разуму. Сейчас выбираю тему воркшопа на осенний Analyst Days 23. Ткните в опрос ниже, плз.

Как обеспечить НФТ на этапе архитектуры
Аналитики (и разрабы, чо уж) часто грешат тем, что выявляют и фиксируют значимые НФТ, отдают их в команду или архитектору... и забывают о них. На воркшопе возьмем архкейс, обсудим требования и посмотрим, какие конкретные решения позволяют их обеспечить

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

И тоже подавайтесь на конфу со своей темой - сейчас это единственная большая оффлайн площадка для аналитиков, отличный повод пообщать и пощупать живых людей.

Особо ждут темы:
• AI и LLM для аналитика
• Интеграция и архитектура
• Продуктовые исследования и мышление

Сильно не затягивайте, заявки принимают еще 2 недели.


Где слушаете подкасты?
Опрос
  •   Youtube
  •   Яндекс.Музыка
  •   Apple Podcast
  •   VK Музыка
  •   Spotify
  •   Свой вариант в комментах
  •   Вообще не слушаю
116 голосов


Я вам тут послушать принес

Тот самый подкаст с Русланом Сафиным, где обсуждаем развитие код-агентов, будущее индустрии, изменение ролей, чему нужно будет учиться дальше.

Получилось философски и визионерски, с поразительным качеством и фантастическим пост-продакшеном.

🔥 Никаких манипуляций: накидаете 50 лайков — будет выпуск про Spec Driven Design глазами техдира и аналитика




2026 год. Тестируем в проде

Прикручиваю известный экваринг к боту клуба, назовем его СР. Искренне считаю его одним из лучших, если не лучшими эквайрингом в РФ. Как минимум, самым удобным.

Есть у них услуга облачной фискализации, чтобы не платить за собственную кассу.

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

Инженер внутри негодуе

Внутренний продакт начинает считать:
• фича выгодна при оборотах ~250к в месяц, дальше удобнее купить кассу
• большинство микробизнесов не будут подключаться по апи на старте — нет смысла или денег
• суммарный оборот у мерчей, которые юзают API + облачные чеки, скорее всего, минимальный

Скорее всего, нет экономического смысла в поддержке этой фичи в тесте.
К чему это?

Ваши красивые инженерные процессы никому не нужны, если не решают задачи бизнеса

А может там просто какая-то проблема с говнолегаси, не знаю.




#API #AI

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

Эту же идею можно применить к проектированию API: многие известные принципы дизайна рассчитаны не на оптимизацию инфры или вычислений, а снижение когнитивной нагрузки у людей, которые будут использовать и поддерживать API. Модельке-потребителю достаточно полной доки-схемы, которую сгенерит модель-поставщик, а дальше все максимально оптимизируем, пережимаем в бинарщину и т.п.

Дебаты вида REST L1 vs REST L2 vs GraphQL vs etc., полностью теряют смысл. Ничто не мешает даже кастомные протоколы в риатайме генерить, не говоря о спорах: “POST или PUT” (да, это всерьез еще обсуждают).

Как будто бы речь про Agentic-ready API, но нужны ли здесь вообще старые практики, паттерны, протоколы?


Arch Defense

Помните симулятор архитектуры? Мы вместе с System Design World упоролись немного и решили поиграть в хайлоад на стриме. Будем обсуждать технологии и их место в архитектуре, разберем какой-нибудь популярный сервис, а я попытаюсь выжить в симуляторе.

Формат неформально-развлекательный, приходите тоже порубиться. Регу делать не будем, забейте в календарь, перед стримом выложу ссыль.

Когда: 14.07, вторник, 19:00

Показано 20 последних публикаций.