Size: a a a

Архитектура ИТ-решений

2020 December 02

PT

Peter Tugolukov in Архитектура ИТ-решений
Супер.
источник

PT

Peter Tugolukov in Архитектура ИТ-решений
Какие инструменты для этого есть?
источник

PT

Peter Tugolukov in Архитектура ИТ-решений
Что можете посоветовать?
источник

YG

Yuri Gasnikov in Архитектура ИТ-решений
Peter Tugolukov
Что можете посоветовать?
Надо смотреть по проектной производительности- что потянет движок БД витрины, если нет прям жесткого HighLoad , то я бы взял что нибудь из SQL ( удобнее разрабатывать). По готовым инструментам сборки витрины не подскажу - не копал вопрос глубоко
источник

YG

Yuri Gasnikov in Архитектура ИТ-решений
Сам сейчас нахожусь в вялотекущем выборе архитектуры такого решения( непонятно- стартует проект , или нет)
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Yuri Gasnikov
Я бы делал витрину данных с локальным хранилищем. Подозреваю , что помимо пагинации, данные из разных микросервисов надо мержить. Это + пагинация делает формирование ответа на лету монструозным и неповоротливым
+1.
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Если у вас прям микросервисы, то можно так. Все сервисы с первичными данными шлют нотификации об изменившихся объектах (через distributed log или message broker). Все витрины подписываются на нужные изменения и обновляют свои данные.
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Одна витрина или не несколько. Тут общии критерии у меня такие:
* витрина под клиента - это первое и прям классика, как я понимаю
* у одного клиента может быть несколько разных витрин. Например, одна поисковая, другая аналитическая.
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Конкретное решение, конечно, надо смотреть по задаче
источник

SB

Sergey Bezrukov in Архитектура ИТ-решений
Roman
кваркус известен всем, да. но опять же по возможностям до спринга как до луны
Это ошибочное мнение.
И что известен всем, и про луну.
источник

A

Andrey in Архитектура ИТ-решений
Yuri Gasnikov
Это , по крайней мере , логично
Получается типа отдельный "микросервис" для фронта?
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Peter Tugolukov
Всем привет. Есть вопрос к сообществу.
Задача: есть микросервис, в котором есть товары.
Сущность товара состоит из: id, цена, название, картинка.
Есть микросервис биллинга, в котором есть транзакции.
Транзакция - id, дата транзакции, id пользователя, id товара.
Нужно запилить фронт, на котором будет показываться список транзакций сразу с инфой по товарам. Например, в элементе списка будет дата транзакции, имя и фотка товара.
Проблема - данные берутся из разных микросервисов.
Первый вариант, который приходит в голову - запилить backend for frontend, который будет собирать сначала транзакции, а потом списки товаров и уже готовый json отдавать на фронт.
Но проблема - что если понадобится что-то более сложное? Может быть сразу с пагинацией и фильтрацией.
Какие еще варианты есть?
Все зависит от нагрузки и профиля.
Если по требованиям нормально работает merge (на bff или клиенте - это тоже могут быть разные варианты), то проще оставить merge.
Если не высокая нагрузка, то получить список транзакций, а по ним вытащить списком те товары, которых еще нет в кэше  - достаточно быстро.
Если нужны сложные фильтрации по связанным данным (история по имени товара, но отсортированная по дате), то не обойтись без витрины данных, оптимизированной под задачи поиска (PG/ClickHouse/ElasticSearch etc)
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Но корректная поддержка витрин - это дорогая и противная штука, которую нужно делать если нет иного выхода.
Так как надо следить за ее целостностью, помнить про нее при изменениях в данных заполняющих сервисов и т.п.
источник

PT

Peter Tugolukov in Архитектура ИТ-решений
Спасибо за советы. Буду прикидывать, как что сделать.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Я в свое время писал для разработчиков "чеклист-алгоритм" про то, как делать выборки
(на клиенте, на bff, на витрине или нужен ADR)
источник

VA

Viktor Alexandrov in Архитектура ИТ-решений
Phil Delgyado
Я в свое время писал для разработчиков "чеклист-алгоритм" про то, как делать выборки
(на клиенте, на bff, на витрине или нужен ADR)
ADR?
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Требуется решение от архитектора (Architecture decision record)
источник

VA

Viktor Alexandrov in Архитектура ИТ-решений
Тогда понятно) Я предположил что это что-то ещё))
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Ну, в чеклисте очень часто полезно выделять путь "а тут надо бы подумать".
источник

YG

Yuri Gasnikov in Архитектура ИТ-решений
Phil Delgyado
Но корректная поддержка витрин - это дорогая и противная штука, которую нужно делать если нет иного выхода.
Так как надо следить за ее целостностью, помнить про нее при изменениях в данных заполняющих сервисов и т.п.
Зато разработка фронта удешевляется в разы при хорошо спроектированной витрине, особенно , если фронтов несколько(WEb+Android+ IOS)
источник