Projektujemy system oparty na niezależnych mikrousługach (połączonych przez magistralę RabbitMq). Kod (przynajmniej dla pierwszych składników) zostanie napisany w python (zarówno python2, jak i python3). Mamy już aplikację monolitową implementującą logikę biznesową, którą chcemy refaktoryzować i rozszerzyć. Jedno pytanie, które mnie martwi, to:
Jaki jest najlepszy sposób udostępniania kodu między różnymi mikrousługami. Mamy wspólne funkcje pomocnicze (przetwarzanie danych, logowanie, parsowanie konfiguracji itp.), Z których musi korzystać kilka mikrousług.
Same mikrousługi zostaną opracowane jako osobne projekty (repozytoria git). Wspólne biblioteki można również opracować jako samodzielny projekt. Jak współdzielić te biblioteki między mikrousługami?
Widzę kilka podejść:
- skopiuj wersję biblioteki potrzebną dla każdej mikrousługi i zaktualizuj w razie potrzeby
- zwolnij wspólne biblioteki do wewnętrznego PyPi i umieść te biblioteki jako zależności w wymaganiach mikrousługi
- dołącz repozytorium biblioteki jako podmoduł git
Przed podjęciem decyzji o dalszym postępowaniu chciałbym przeczytać nieco więcej na temat sugerowanych podejść, najlepszych praktyk i wcześniejszych doświadczeń. Czy masz jakieś sugestie lub link?
fib(n)
(implementacja serii Fibonacciego). Nie chcesz powtarzać tej implementacji w każdej mikrousługie. Należy do utils
biblioteki (w wersji, dla funkcji i poprawek błędów). To nie jest rozproszony monolit, to tylko warstwa wspólnej funkcjonalności. Moje pytanie dotyczy sposobu obsługi tej warstwy na poziomie wdrożenia?