คำปฏิเสธ
ฉันหวังว่าฉันจะไม่เหยียบนิ้วเท้าของใครก็ตาม
พื้นหลัง
ฉันค้นหาความแตกต่างที่แท้จริงระหว่าง Service Oriented Architecture และ Microservices โดยไม่ต้องค้นหาคำตอบที่ชัดเจน
ฉันอ่านสิ่งที่ชอบ:
- ผลข้างเคียงของ SOA
- SOA เป็นรูปแบบการต่อต้าน
- Microservices มาเพื่อแก้ไขความล้มเหลวของ SOA
- ESB ไม่ใช่ ESB จริง ๆ แทนที่จะเป็น EAI
- พึ่งพาโบรกเกอร์ข้อความมากเกินไป
- ผู้ขายใช้ความคิดในทางที่ผิดของ SOA และพยายามขายผลิตภัณฑ์ของตน
- SOA เติบโตอย่างไม่สามารถควบคุมได้
แต่ถึงกระนั้นก็ไม่มีอะไรกำหนดความแตกต่างทางสถาปัตยกรรมอย่างชัดเจนระหว่าง Service Oriented Architecture (เป็นแนวคิด) และ Microservices (เป็นแนวคิด)
ตามที่ฉันเข้าใจพวกเขาทั้งสองมี:
- ผู้ให้บริการทำสิ่งเดียวเท่านั้น
- Service Gateway / ESB เปิดเผยบริการเหล่านั้นต่อผู้บริโภค
- ผู้บริโภคบริการเข้าถึงบริการผ่าน ESB / เกตเวย์บริการ
คำถาม
ดังนั้นจะมีอะไรที่แตกต่างไปจากการติดฉลาก SOA ใหม่ใน Microservices บ้างไหม? เป็นข้อ จำกัด ทางเทคโนโลยีหรือไม่ที่จะ จำกัด Microservices ไม่ให้กลายเป็นมาโคร
หมายเหตุ: ฉันไม่ได้มองหาความคิดเห็นเพียงข้อเท็จจริงยากหวังว่าในหัวข้อย่อย
อ้างอิง
- คำถามวิศวกรรมซอฟต์แวร์
- เว็บไซต์ Martin Fowler (ฉันคิดว่าเขาเกลียดครั้งใหญ่)
- ข้อมูลโลก
- เว็บไซต์ Michael Fethers
- กองคำถามล้น
ปรับปรุง
ดูเหมือนว่าการอภิปรายที่คล้ายกันเกิดขึ้นในคำถามล้นสแต็คโดยความคิดเห็นที่ถูกแบ่งออกหรือไม่ Microservices คือ Service Oriented Architecture โดยซ่อนเร้น
บทสรุปจากคำถาม SO:
- MS เป็นกรณีพิเศษของ SOA
- MS รับรองแอปพลิเคชันที่ให้บริการโฮสต์ที่มีขนาดเล็กลง
- MS ขึ้นอยู่กับเทคโนโลยี (การใช้ HTTP มากกว่าตัวเลือกโปรโตคอลแบบเปิด)
- MS อาศัยเทคโนโลยีในการบังคับใช้ระเบียบวินัย (การปรับใช้บริการโดยอัตโนมัติ)
- MS พิจารณาESB (ร้าย) แต่ใช้เกตเวย์ API ซึ่ง IMHO เป็น ESB ประเภทหนึ่ง
สรุปว่า MS คือ SOA หากสิ่งต่อไปนี้เป็นจริง:
- MS สนับสนุนแนวคิดเรื่อง Orchestration หรือไม่? กระบวนการหลักหนึ่งกระบวนการขึ้นไปจัดการเวิร์กโฟลว์
- มีเลเยอร์นายหน้าข้อความใน MS หรือไม่? ชุดของอะแดปเตอร์แปลรูปแบบข้อความจากพื้นที่ข้อความของผู้ผลิตบริการไปยังผู้ใช้บริการ
- microservices สามารถอ่านข้อมูลจากแอพพลิเคชั่นองค์กรขนาดใหญ่ได้หรือไม่? มันเป็น API ของแอพพลิเคชั่นแบบเสาหินหรือไม่? หรือจะต้องเป็นแอพพลิเคชั่นที่มีอยู่ในตัวเองสามารถทำงานได้อย่างอิสระ?
หากคำตอบของคำถามสุดท้ายกลายเป็นไม่แสดงว่า Microservices จะไม่สามารถจัดการระบบเวิร์กโฟลว์ที่ซับซ้อนเช่นระบบการจัดการบัตรเครดิตหรือระบบกระทบยอด
Martin Fowler's Site (I think he hates it big time)
นั่นไม่ใช่ความรู้สึกของฉันเมื่อฉันไปพูดที่บาร์เซโลนา เขาตระหนักถึงการแลกเปลี่ยนและวิธีการที่ผู้คนเปลี่ยนมาใช้สถาปัตยกรรมนี้โดยไม่คำนึงว่า MS ไม่เหมาะสำหรับทุกคน