3
ตรรกะทางธุรกิจที่ควรนั่งในสถาปัตยกรรมบริการไมโคร?
ยังคงพยายามคลุมหัวของฉันรอบ ๆ สถาปัตยกรรมไมโครบริการเนื่องจากฉันคุ้นเคยกับวิธีการแบบเสาหิน สมมติว่าเราพยายามสร้างระบบการจอง Uber ที่ง่ายมาก เพื่อลดความซับซ้อนของสิ่งที่เราสมมติว่าเรามี 3 บริการและ API ประตูสำหรับไคลเอนต์: Booking, Drivers, Notificationและเรามีขั้นตอนการทำงานต่อไปนี้: เมื่อสร้างการจองใหม่: ตรวจสอบว่าผู้ใช้ปัจจุบันมีการจองแล้ว รับรายการไดรเวอร์ที่มี ส่งการแจ้งเตือนไปยังผู้ขับขี่เพื่อรับการจอง คนขับรับการจอง สมมติว่าการส่งข้อความทั้งหมดทำได้ผ่านการโทร http แทนที่จะส่งข้อความบัสเช่นคาฟคาเพื่อให้ทุกอย่างง่ายขึ้น ดังนั้นในกรณีนี้ฉันคิดว่าBookingบริการสามารถทำการตรวจสอบการจองที่มีอยู่ แต่ใครจะได้รับรายชื่อของไดรเวอร์และการแจ้งเตือนที่มีอยู่ ฉันกำลังคิดที่จะทำในระดับเกตเวย์ แต่ตอนนี้ตรรกะแบ่งออกเป็นสองที่: Gateway - รับรายการไดรเวอร์ที่มีอยู่ + ส่งการแจ้งเตือน Booking - ตรวจสอบการจองที่มีอยู่ และฉันค่อนข้างแน่ใจว่าเกตเวย์ไม่ใช่สถานที่ที่เหมาะสมที่จะทำ แต่ฉันรู้สึกว่าถ้าเราทำในBookingบริการมันจะกลายเป็นคู่แน่น? เพื่อให้มันซับซ้อนยิ่งขึ้นจะเกิดอะไรขึ้นถ้าเรามีโครงการอื่นที่ต้องการนำระบบการจองกลับมาใช้ใหม่ แต่ด้วยตรรกะทางธุรกิจของมันเอง นั่นเป็นเหตุผลที่ฉันคิดว่าจะทำในระดับเกตเวย์เพื่อให้เกตเวย์โครงการใหม่สามารถมีตรรกะทางธุรกิจของตัวเองแยกต่างหากจากที่มีอยู่ อีกวิธีหนึ่งในการทำฉันคิดว่าแต่ละโครงการมีบริการจองของตัวเองที่จะพูดคุยกับบริการจองหลัก แต่ฉันไม่แน่ใจว่าวิธีที่ดีที่สุดที่นี่ :-)