Я начинаю большой проект на Python, который будет разбит на компоненты, каждый из которых будет интегрироваться с отдельной системой, и я планирую передавать задачи между каждым компонентом с помощью Celery и брокера сообщений, я думаю, RabbitMQ.
компоненты следующие:
- Интегрируется с внешней системой и отправляет / получает сообщения (мыло, к сожалению)
- Интерфейс для управления сообщениями (сайт django)
- Отправляет / получает данные из внутренней системы A
- Отправляет данные во внутреннюю систему B
- Компонент обмена сообщениями, управляет связью между всеми другими компонентами (Rabbit MQ)
Я планирую использовать docker-compose и размещать каждый компонент в своем собственном контейнере, а также отдельный контейнер для rabbitMQ и один для сельдерея, если это необходимо.
Что я хочу знать, так это то, чтолучший способ на самом деле поделиться сценариями сельдерея между каждым контейнером?
Должен ли я разместить весь код на всех контейнерах, с каждым Container, использующий только тот код, который ему нужен, или я должен разместить только необходимый код в каждом контейнере и каким-то образом разделить мои tasks.py и celery_config.py между контейнерами?
Я также не уверен, как управлять версиейконтроль в этом случае, должен ли я иметь один .git в корне моего проекта, или я должен иметь одно git-репо для каждого компонента?Принимая во внимание, что несколько компонентов довольно большие и сложные.
Мой инстинкт заключается в том, чтобы рассматривать каждый компонент как отдельный проект со своим собственным контролем версий ... но тогда я не уверен, как их связатьвместе с докером сочинять и делиться своими задачами с сельдереем между ними.Любые идеи о лучших практиках в этом случае будут с благодарностью.