หากคุณไปที่บริการขนาดเล็กเพื่อรับประโยชน์จากความยืดหยุ่นในการปรับขยายการเชื่อมต่อแบบหลวมและการปรับเปลี่ยนแต่ละบริการอย่างอิสระคุณควรยึดติดกับส่วนนั้นให้มากที่สุดเท่าที่จะทำได้
สถาปัตยกรรมโดยรวม
ฉันคิดว่าวิธีการที่ดีที่สุดคือ:
- มี microservice สำหรับการจัดการข้อมูลผู้ใช้ทั่วไป
- เก็บข้อมูลผู้ใช้ microservice เฉพาะ (เช่นโปรไฟล์การอนุญาตการกำหนดค่าตามความชอบ) ในแต่ละ microservice (โดยใช้การอ้างอิงของ id ทั่วไป)
อ่านเพิ่มเติม:
- บทความนี้อธิบายสถาปัตยกรรมและเหตุผลประเภทนี้ได้ดีมากโดยมีกรณีเฉพาะของการอนุญาต
- บทความนี้อธิบายถึงความท้าทายและแนวทางแก้ไขสำหรับการจัดการข้อมูลผู้ใช้เพื่อหลีกเลี่ยงบริการทั้งหมดในการเข้าถึงที่เก็บข้อมูลเดียวกัน
- บทความนี้จะอธิบายถึงการใช้ JWT เพื่อส่งต่อตัวตนของผู้ใช้ระหว่างการบริการ (สังเกตว่าข้อมูลพื้นฐานบางอย่างสามารถให้ในโทเค็น id ซึ่งหลีกเลี่ยงการสอบถามบริการผู้ใช้อีกครั้งหลังจากเข้าสู่ระบบอย่างน้อยขั้นพื้นฐาน ข้อมูล).
การแบ่งปันรหัส
ตอนนี้ถ้าคุณเห็นด้วยกับการแก้ปัญหาข้างต้นเรามีผู้ใช้ microservice (ห่อหุ้มแบบจำลองโดเมนสำหรับผู้ใช้) และบริการอื่น ๆ ทั้งหมดเป็นผู้บริโภคของ microservice เดียวกัน คำถามคือรู้ว่าถ้าคุณต้องการ:
- microservice แต่ละตัวเพื่อสร้างรหัสผู้บริโภคใหม่ตามหลักการของการแยกที่แข็งแกร่งเพื่อให้วงจรการปล่อยมีความยืดหยุ่นและแตกต่างกัน
- หรือจะแบ่งปันรหัสผู้บริโภคเป็นส่วนหนึ่งของห้องสมุดพิจารณาว่าข้อมูลพื้นฐานนี้เป็นส่วนขยายของ"ถัง" รูปแบบโครงสร้างพื้นฐาน
ฉันจะไม่รับตำแหน่งที่ชัดเจนในเรื่องนี้เนื่องจากมีสงครามความคิดเห็นที่รับรองโดยละเอียดในหัวข้อการแบ่งปันรหัสนี้และฉันไม่คิดว่าฉันอยู่ในฐานะที่จะรับตำแหน่งที่เป็นวัตถุประสงค์ได้ นี่คือการอ่านเพิ่มเติมบางส่วนแล้ว:
- บทความนี้คิดว่าไม่มีทางออกที่ดีที่สุดและทุกอย่างขึ้นอยู่กับวัตถุประสงค์ของคุณ
- ตำแหน่งของบทความนี้คือการใช้รหัสร่วมนั้นไม่ดีเฉพาะในกรณีที่สร้างการเชื่อมต่อที่รัดกุมและการใช้รหัสร่วมกันอาจนำมาซึ่งการทำงานร่วมกันบางอย่าง
- บทความนี้ (ของคนที่ใช้ microservices ระดับ) ยืนยันถึงความจำเป็นที่จะต้องสร้างบิลด์แยกต่างหากและปัญหาการรื้อถอนที่อาจเกิดขึ้นของโค้ดเก่า การมีไลบรารี่ที่ใช้ร่วมกันเพื่อการบริโภคด้วยการจัดการเวอร์ชันที่เป็นของแข็งไม่ได้ป้องกันแนวปฏิบัติที่ดีเหล่านี้
ความคิดเห็นของฉันเกี่ยวกับเรื่องนี้คือคุณไม่ควรแบ่งปันรหัสระหว่างผู้ให้บริการผู้ใช้และผู้ใช้ของผู้ใช้เพื่อหลีกเลี่ยงข้อต่อที่แน่นหนา อย่างไรก็ตามคุณสามารถแบ่งปันรหัสการใช้ของผู้ใช้ระหว่างผู้บริโภคหากคุณมีการจัดการเวอร์ชันที่ดี วิธีการนี้จะมีข้อดีบางประการ:
- microservices ที่ใช้โดยผู้ใช้ที่แตกต่างกันสามารถสร้างได้ด้วยรหัสการสิ้นเปลืองผู้ใช้ที่ใช้ร่วมกันในเวอร์ชันต่างๆ ความยืดหยุ่นเช่นเดียวกันกับการปรับแต่งล้อ แต่ให้ประสิทธิภาพที่สูงขึ้น
- คุณสามารถเปลี่ยนบริการผู้ให้บริการของคุณได้อย่างอิสระโดยไม่มีผลกระทบต่อผู้บริโภค
- หากพบข้อผิดพลาดทางด้านปริมาณการใช้คุณสามารถแก้ไขได้ครั้งเดียวและปรับใช้ผู้บริโภคทั้งหมดให้เหมาะสมที่สุด (ขอบคุณการจัดการเวอร์ชัน) นี่อาจนำไปสู่การบริการที่มีคุณภาพสูงขึ้น
- หากด้วยเหตุผลที่คุณจำเป็นต้องอัปเดต API ของผู้ใช้ผู้ให้บริการคุณสามารถปรับใช้การบริโภคของผู้ใช้ที่อัปเดตได้มากขึ้น คุณใช้บริการของผู้ให้บริการเก่าและใหม่ในช่วงการเปลี่ยนภาพความเป็นไปได้ในการแบ่งปันนี้อาจช่วยให้สามารถรื้อถอนเวอร์ชันเก่าของผู้ให้บริการผู้บริโภคได้เร็วขึ้น