Извлечение утилит в библиотеки для приложений Python MicroService - PullRequest
0 голосов
/ 15 октября 2018

TL; DR: какие-либо советы или ресурсы по извлечению кода в многократно используемые, хорошо структурированные и поддерживаемые библиотеки?

Я работаю над приложениями на python в архитектуре в стиле микросервиса, где мы будем разрабатыватьи развертывание множества небольших приложений, каждое из которых решает определенные проблемы, возможно (или, возможно, нет), взаимодействуя с другими приложениями / внешними службами.

Мы только начали переходить на эту микросервисную архитектуру, поэтому у нас уже есть довольнонемного кода в монолитном проекте.Поскольку мы добавляем новые микросервисы, становится очевидным, что нам нужно извлекать общий код (например, утилиты, базовые классы, ...) в библиотеки, чтобы избежать повторной реализации или копирования-вставки кода, который затем необходимо будет поддерживать отдельно.Поскольку я пытаюсь сделать это (чего я никогда раньше не делал), я понимаю, что это не тривиально и может довольно быстро усложниться, и я мог бы потратить некоторое время на обдумывание этого тоже.

Так чтоЯ ищу советы или указатели на ресурсы по передовым методам, связанным с этой ситуацией, т.е. пишу хорошо структурированные библиотеки python, упаковываю и распространяю библиотеки, делюсь кодом в микросервисной архитектуре и избегаю ошибок, которые могут поставить меня в проблемные ситуации.

Конкретные проблемы / проблемы, с которыми я сталкиваюсь:
* Как лучше группировать / разделять код в управлении версиями.Мол, один репозиторий на пакет?Количество хранилищ может взорваться довольно быстро ...

1 Ответ

0 голосов
/ 18 октября 2018

Для разделяемых библиотек вы можете опубликовать их в git в отдельных репозиториях и настроить их на использование менеджеров пакетов Python для их установки в вашем проекте.

Что касается развертывания приложений, служебных зависимостей и т. Д., Я бы посоветовал вам взглянуть на Docker для контейнерной обработки, docker-compose для служебных зависимостей локально, Artifactory или ECR для реестров образов Docker и оркестровки контейнеров.платформы, такие как Kubernetes.

Контейнеры похожи на виртуальные машины, но на более детальном уровне - уровне процесса.Это эффективно позволит вам совместно запускать сервисы для их тестирования и развертывания.Больше не имело бы значения, что каждый сервис находится в отдельном репозитории.

Если у вас не слишком много микросервисов, вы определенно могли бы использовать моно-репо, но если ваша инженерная организация велика, это довольно дорого обходитсяскачать все обновления для всех сервисов.В качестве альтернативы у вас могут быть ваши услуги, которые разделены в соответствующих ограниченных контекстах, все живут в одном репо, чтобы устранить этот сдерживающий фактор.Короче говоря, это действительно зависит от того, что вы найдете полезным.В конце концов, самыми большими проблемами никогда не являются количество репозиториев Git, которые вы имеете, это то, как вы определяете границы своих сервисов, связь между сервисами и инфраструктуру для развертывания сервисов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...