우리는 독립적 인 마이크로 서비스 (RapidMq 버스를 통해 연결된)를 기반으로 시스템을 설계하고 있습니다. 코드는 (최소한 구성 요소의 경우) python (python2 및 python3)으로 작성됩니다. 우리는 이미 마이크로 서비스로 리팩토링하고 확장하려는 일부 비즈니스 로직을 구현하는 단일 응용 프로그램을 가지고 있습니다. 나를 걱정하는 한 가지 질문은 다음과 같습니다.
다른 마이크로 서비스간에 코드를 공유하는 가장 좋은 방법은 무엇입니까? 우리는 여러 마이크로 서비스에서 사용해야하는 공통 도우미 기능 (데이터 처리, 로깅, 구성 구문 분석 등)이 있습니다.
마이크로 서비스 자체는 별도의 프로젝트 (git repositories)로 개발 될 예정입니다. 공통 라이브러리도 자체 포함 된 프로젝트로 개발할 수 있습니다. 마이크로 서비스간에 이러한 라이브러리를 어떻게 공유합니까?
몇 가지 접근 방식이 있습니다.
- 각 마이크로 서비스에 필요한 라이브러리 버전을 복사하고 필요에 따라 업데이트
- 공용 라이브러리를 내부 PyPi에 릴리스하고 해당 라이브러리를 마이크로 서비스 요구 사항의 종속성으로 나열
- 라이브러리 저장소를 자식 서브 모듈로 포함
진행 방법을 결정하기 전에 제안 된 접근 방식, 모범 사례, 과거 경험에 대해 조금 더 읽고 싶습니다. 당신은 어떤 제안이나 링크가 있습니까?
fib(n)
(피보나치 시리즈의 구현). 각 마이크로 서비스에서 해당 구현을 반복하고 싶지 않습니다. 이것은 utils
라이브러리에 속합니다 (기능 및 버그 수정 버전). 그것은 분산 된 모놀리스가 아니라 공통 기능의 계층 일뿐입니다. 내 질문은 구현 수준 에서이 계층을 처리하는 방법입니다.