เรากำลังออกแบบระบบโดยใช้ไมโครไซต์อิสระ (เชื่อมต่อผ่านบัส RabbitMq) รหัสจะ (สำหรับส่วนประกอบแรกอย่างน้อย) เขียนเป็น python (ทั้ง python2 และ python3) เรามีแอปพลิเคชั่นก้อนเดียวที่ใช้ตรรกะทางธุรกิจบางอย่างซึ่งเราต้องการ refactor เป็น microservices และขยาย คำถามหนึ่งที่ทำให้ฉันกังวลก็คือ:
เป็นวิธีที่ดีที่สุดในการแบ่งปันรหัสระหว่างไมโครไซต์ต่างๆ เรามีฟังก์ชั่นผู้ช่วยทั่วไป (การประมวลผลข้อมูลการบันทึกการแยกวิเคราะห์การกำหนดค่า ฯลฯ ) ซึ่งจะต้องใช้โดยไมโครไซต์หลายรายการ
Microservices จะพัฒนาเป็นโครงการแยกต่างหาก (git repositories) ห้องสมุดทั่วไปสามารถพัฒนาเป็นโครงการที่มีในตัวเองได้เช่นกัน ฉันจะแชร์ไลบรารีเหล่านี้ระหว่างไมโครไซต์ได้อย่างไร
ฉันเห็นหลายวิธี:
- คัดลอกเวอร์ชันของไลบรารีที่จำเป็นสำหรับแต่ละ microservice และอัพเดตตามต้องการ
- ปล่อยไลบรารีทั่วไปไปยัง PyPi ภายในและแสดงรายการไลบรารีเหล่านั้นเป็นการอ้างอิงในข้อกำหนดของ microservice
- รวมที่เก็บไลบรารีเป็น submodule git
ฉันต้องการอ่านเพิ่มเติมเกี่ยวกับแนวทางที่แนะนำวิธีปฏิบัติที่ดีที่สุดประสบการณ์ที่ผ่านมาก่อนที่จะตัดสินใจเลือกวิธีดำเนินการ คุณมีข้อเสนอแนะหรือลิงค์หรือไม่?
fib(n)
(การใช้งานของชุดฟีโบนักชี) คุณไม่ต้องการที่จะทำซ้ำการใช้งานในแต่ละไมโครบริการ ที่เป็นของutils
ห้องสมุด (รุ่นสำหรับคุณสมบัติและแก้ไขข้อบกพร่อง) นั่นไม่ใช่ monolith แบบกระจายนั่นเป็นเพียงเลเยอร์ของฟังก์ชันการทำงานทั่วไป คำถามของฉันคือวิธีจัดการเลเยอร์นี้ในระดับการติดตั้ง