Задать вопрос
Vindicar
@Vindicar
RTFM!

Как организовать локальную разработку микросервисной системы в PyCharm?

Если я локально разрабатываю монолит в PyCharm, то вопросов нет. Виртуальное окружение, git по вкусу, и вперёд, проектировать и кодить.
Но вот если я хочу поэкспериментировать с разработкой микросервисной системы, ситуация усложняется. Допустим, я хочу потрогать разработку event-oriented систем. Значит, мне нужен брокер сообщений. Но, скажем, тот же rabbitmq - это не питоновский пакет, его в виртуальное окружение не засунешь. Ставить глобально? Как-то звучит не очень.
Запускать систему из 3+ сервисов тоже невесело, хотя это как раз можно накостылить.

Засовывать всё в докер, и сразу писать compose-файл? Но можно ли это всё потом интегрировать с IDE? Как вообще принято делать такие вещи?
  • Вопрос задан
  • 2551 просмотр
Подписаться 7 Простой Комментировать
Решения вопроса 1
fenrir1121
@fenrir1121
Начни с документации
Засовывать всё в докер, и сразу писать compose-файл? Но можно ли это всё потом интегрировать с IDE?
Да все верно. В нижней панели, там же где терминал и питон консоль есть вкладка Services, там и логи и управление всеми запущенными (микро)сервисами.
В compose достаточно стрелку ткнуть, он тебя первый раз попросить конфиг настроить и все.
66c8250c766ad116037154.png

Так же можно с ssh работать так что можно хоть локально запускать, хоть на удаленной машине
66c8269e763a0228875878.png
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar Автор вопроса
RTFM!
Нашел один вариант - может, и не лучший, но приемлемый для учебных задач.
1. Брокер сообщений
Пакет kombu реализует работу с брокерами сообщений в Celery. Помимо типовых транспортов типа RabbitMQ и Redis, у него есть транспорт filesystem, причём позволяющий общаться именно разным процессам. Транспорт in-memory работает только для одного процесса. И тот, и другой транспорты не требуют отдельного брокера - они сами себе брокеры.
На мой неопытный взгляд, потом сменить транспорт на "взрослый" будет несложно. А значит, вполне можно на эту библиотеку опираться, начиная с этапа прототипа.
Единственное "но" - под виндой надо дополнительно поставить pywin32, kombu его сам не подтаскивает.
2. Запуск системы
PyCharm, оказывается, умеет создавать конфигурации запуска для нескольких скриптов.
Нужно сначала создать конфигурации под каждый сервис в системе. Можно использовать автосозданные, а можно вручную. А затем добавить конфигурацию типа Compound, и добавить в неё компонентами нужные "одиночные" конфигурации. Они запустятся параллельно, и остановить их тоже можно все сразу. У каждого сервиса даже будет своя консоль вывода.

Если никто не предложит варианта получше - на этом и остановлюсь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы