โดยการละทิ้ง REST คุณจะเสียมากกว่าแค่ HATEOAS หาก microservices ของคุณเป็นสาธารณะ (และเป็นความคิดที่ดีสำหรับพวกเขาที่จะเป็นสาธารณะหรืออย่างน้อยก็มีแนวโน้มที่จะเป็นสาธารณะในวันหนึ่ง) การใช้สิ่งอื่นนอกเหนือจาก REST และ SOAP จะเป็นปัญหา:
นักพัฒนาบางคนไม่เคยใช้ AMQP
บางคนใช้ AMQP แต่มักคุ้นเคยกับ REST และ SOAP มากกว่า
ห้องสมุด AMQP สำหรับบางภาษานั้นไม่ตรงไปตรงมาโดยเฉพาะ
การทดลองใช้บริการด้วยตนเองมีข้อ จำกัด มาก: ฉันสามารถใช้ CURL เพื่อทำคำขอใด ๆ กับ Amazon S3; ฉันควรติดตั้งอะไรบนเครื่องของฉันหากฉันต้องการเล่นกับตัวแปร AMQP ของ S3
การดีบัก REST และ SOAP เป็นเรื่องง่าย ฉันเพียงแค่ติดตามการแลกเปลี่ยน HTTP และวิเคราะห์พวกเขา ไม่แน่ใจว่าเครื่องมือใดที่ฉันควรใช้เพื่อดูการดีบักการแลกเปลี่ยน AMQP
AMQP นั้นยอดเยี่ยม แต่ทำเพื่อจุดประสงค์ที่เฉพาะเจาะจงในการแลกเปลี่ยนตามเหตุการณ์ แม้ว่าจะเป็นไปได้ในทางเทคนิคที่จะทำ RPC กับ AMQP แต่มันไม่ได้เป็นวัตถุประสงค์หลัก
ลักษณะอะซิงโครนัสก็มีความสำคัญเช่นกัน บางครั้งมันก็มีประโยชน์: ฉันไม่ต้องการบล็อกส่วนต่อประสานผู้ใช้ของแอพในขณะที่ทำการร้องขอไปยังเซิร์ฟเวอร์ บางครั้งมันก็ทำให้สิ่งที่ยากกว่าที่พวกเขาต้อง: ถ้าฉันต้องการกู้คืนไฟล์สำรองจาก Amazon S3 เพราะท้องถิ่นนั้นเสียหายแล้วคืนค่าการสำรองข้อมูลแฟ้มแบตช์ของฉันจำเป็นต้องมี CURL เพื่อทำงานให้เสร็จก่อนที่จะดำเนินการต่อไป และการดำเนินการแบบซิงโครนัส (ด้วยการหมดเวลาที่เฉพาะเจาะจง) ทำให้รู้สึกที่สมบูรณ์แบบ
เก็บ REST ไว้สำหรับการดำเนินการหลัก:
รับผลิตภัณฑ์
จัดเก็บใบแจ้งหนี้
และใช้ AMQP สำหรับงานที่การรับส่งข้อความใช้งานได้จริง:
ประมวลผลใบแจ้งหนี้ทั้งหมดตั้งแต่เดือนกันยายนและแจ้งให้แอปทราบเมื่อรายงานพร้อมที่จะแสดง (โดยปกติการดำเนินการจะใช้เวลาสองถึงสิบนาที)
ประโยชน์ของ AMQP ที่นี่คือแง่มุมแบบอะซิงโครนัส คำขอ HTTP ที่รอดำเนินการเป็นเวลาสิบนาทีมีโอกาสดีที่จะทำให้เกิดการหมดเวลาและปัญหาอื่น ๆ
การส่งข้อมูลที่การสำรองข้อมูลเสียหายกับทุกคนที่อาจสนใจเช่นผู้สนับสนุนผู้ดูแลฐานข้อมูลทีมตรวจสอบผู้พัฒนาแอปพลิเคชันที่ใช้ฐานข้อมูลนี้เป็นต้น
ประโยชน์ของ AMQP ในที่นี้คือความสามารถในการเพิ่มสมาชิกโดยไม่ต้องเปลี่ยนแอพพลิเคชั่นที่ติดตามการสำรองข้อมูลและเรียกใช้การแจ้งเตือนเมื่อพบว่ามีความเสียหาย
¹บริการเว็บสาธารณะไม่จำเป็นต้องใช้โดยผู้ใช้นอก บริษัท ใน บริษัท ขนาดใหญ่หรือขนาดกลางบริการของคุณมักจะถูกใช้โดยหน่วยงานอื่น ๆ ของ บริษัท เดียวกันและมีข้อกำหนดเช่นเดียวกับ บริษัท อื่นที่จะใช้โดยบุคคลที่สาม: มันควรจะไม่ไว้ใจการโทรใด ๆ (ความจริงที่ว่า ได้ยินว่าใครเรียกบริการของคุณทำงานใน บริษัท เดียวกับที่คุณไม่ได้หมายความว่าเขาจะไม่ใช้ประโยชน์จากปัญหาด้านความปลอดภัยของมันจึงควรมีการบันทึกไว้อย่างถูกต้อง (เพราะคนอินเดียคนเดียวกันไม่จำเป็นต้องรู้หมายเลขโทรศัพท์ของคุณ รู้ภาษาอังกฤษ) ฯลฯ