Спасибо за подробный ответ.
Несколько уточнений:
1) Получается на каждом из сервисов будет хранится своя очередь (путь до файлов, либо текст), так? А что за реализация очереди здесь подходит?
2) Каждый сервис записывает свой результат на некий storage (AWS S3). Получается очереди всех сервисов мониторят появление новых данных? Service1 же напрямую не пишет в очередь Service2?
3) Как основное приложение узнает о результате? Service3 же результат пишет в storage. У него тоже должен быть мониторинг?
sim3x, Не знаю, насколько вам интересно будет погружаться в саму бизнес-логику. Вкратце она такая:
- Service1 делает обработку изображения. OpenCV + python скорее всего (нахождение контуров, вырезка и прочее). На выходе будет порядка 3-9 изображений
- Service2 делает распознавание. Тут или tesseract или нейронная сеть. На выходе несколько текстов.
- Service3 делает обработку нескольких текстов и выдаёт результирующий текст. Скорее всего тут будут python-библиотеки.
Всё это вместе с самим приложением в одну машину ставить не хочется. Особенно если будут конфликтовать версии программ у сервисов. И смена окружения одного сервиса на другое, когда всё на одной машине выглядит для меня как-то опасно.
Вы думаете правильнее будет написать bash скрипт и разместить всё на одной машине?
Роман Мирр, Можно сделать один монолит и установить всё туда с 3 сервисов, это да. Но я лично вижу логическое разделение на что-то отдельное, так как 3 сервиса имеют своё окружение (разные ЯП, программы). Как следствие, легко будет заменить один сервис на другой. Или же можно будет для Service1 сделать ноды с разными решениями, чтобы сравнить потом результаты.
Несколько уточнений:
1) Получается на каждом из сервисов будет хранится своя очередь (путь до файлов, либо текст), так? А что за реализация очереди здесь подходит?
2) Каждый сервис записывает свой результат на некий storage (AWS S3). Получается очереди всех сервисов мониторят появление новых данных? Service1 же напрямую не пишет в очередь Service2?
3) Как основное приложение узнает о результате? Service3 же результат пишет в storage. У него тоже должен быть мониторинг?