Нет смысла защищать секреты внутри контейнеров, как уже было сказано, если есть доступ к контейнеру, их в любом случае раскроют
Vitsliputsli, в принципе, всё что вы сказали коррелирует с тем, как мы хотим организоваться. Тогда подитожу:
1) Клиент шлёт запрос через API-шлюз, запрос попадает в FastAPI-приложение;
2) Приложение назначает запросу id и размещает его как сообщение в заранее объявленной durable-очереди RabbitMQ и ждет по нему ответа;
3) Сервис-обработчик прослушивает эту очередь, скачивает сообщение, работает с ним, а затем отправляет json с данными и кодом ответа;
4) Приложение обнаруживает, что сообщение обработалось и возвращает клиенту его содержимое;
5) Если всё завершилось ожидаемым сценарием, приложение закрывает сообщение с флагом "ack".
Сейчас у меня такая картина шины данных с брокером. Надеюсь, у вас тоже.
сейчас почти все сервисы работают как прямые интеграции, т.е. креды прописаны в каждом сервисе и запись напрямую в боевые БД.
Правильно ли я вас понимаю - задача в том, чтобы назначить условный id (например либой uuid) сообщению (которое является post / get запросом клиента), а после этого "скачать" результат исполнения этой очереди и отдать его клиенту? В таком случае http-соединение не порвётся, так? Чувствуется, что время ожидания вырастет, но врядли это критично, если данные станут реально персистентны.
Vitsliputsli, Это будет точкой отказа для всех сервисов
it is common practice for an API Gateway to be load balanced, although the API Gateway itself can sometimes provide some basic load balancing capabilities for backend services.
1) Это будет точкой отказа для всех сервисов;
2) Нельзя реализовать ответ для http-запроса, ведь брокер разделяет процесс и не предназначен для синхронных запросов (так мне кажется).
Мой вопрос: следует ли реализовывать передачу данных по REST API через RabbitMQ в данном случае?
неправильно потому что при таком варианте выдается количество правильно а дальше только один товар
SELECT DISTINCT COUNT(p.text)
Вроде и не критично, но непонятно зачем
Можно это исправить?
Как оказалось что если отдать ему по второму запросу не 200 ОК, то сервер клиента обрубает оба соединения и не ждет когда я отдам по первому запросу данные
Vitsliputsli, надо не изменять исходные данные а подготавливать новые. и $data вообще не должен быть массивом а обьектом реквеста, сейчас data абсолютно не контролируемый массив
DbExeption пишет в логи и уведомляет юзера о проблемах с БД
В $image либо путь к картинке либо null
Да не показатель, ведь именно Ларавел хвастается тем, что может запустить сайт 1 строчкой, тем самым позволяя гавнокодить по полной.
Симофни же отобьёт руки так, что гавнокодить придётся сломанными руками.
В Симфони с его Доктриной у вас сразу все операции с БД будут в транзакциях и их не нужно вызывать вручную (за исключением специфический случаев), да и вообще код этот сократится до пары строк.
Абсолютно нормальное поведение получения исходной строки от всех не символьных пробелов, переносов, etc ..
Ну сами подумайте, а если бы были ни только переносы, но и пробелы, не переносимый пробел, ... Нужна вам такая строка?
Vitsliputsli, мой хороший, если ты достаточно глуп, чтобы думать, что кто-то не понимает твои примитивные как веник попытки сарказмировать, то я, опять же, не понимаю что ты здесь вообще забыл.
А хамить начал ты, мой хороший. Причём твоё хамство непрерывным потоком льётся, и ты всё никак успокоиться не можешь.
Vitsliputsli, кто сказал, что я за тебя переживаю? Я просто констатирую: истерика здесь у тебя, а вовсе не у меня. А что до "хамоватого зануды" - я хамоватый зануда, всё верно. Но ты то просто бессмысленный хам.