Governance (Governance)
เมื่อ architecture นี้ยังเป็นที่นิยม holistic testing แบบสมัยใหม่ยังไม่เป็นที่แพร่หลาย ทีมมักไม่ค่อย ทดสอบ SOA นอกเหนือจาก quality-assurance-level testing แบบเป็นทางการ ดังนั้นผู้สร้าง tool และ framework จึงแทบไม่ได้คำนึงถึงการอำนวยความสะดวกในการทดสอบแต่ละส่วนแยกกัน มี testing framework บางตัวเกิดขึ้นเพื่อ สร้าง mock และ stub สำหรับกลไกขนาดใหญ่ของ message bus และส่วนประกอบที่เกี่ยวข้อง แต่มันก็ยุ่งยากและไม่ สม่ำเสมออยู่เสมอ
Governance ก็ประสบปัญหาข้อจำกัดแบบเดียวกัน แนวคิดเรื่องการทำ automated architectural governance นั้น แปลกใหม่ยิ่งกว่าการ automate testing เสียอีก ในยุคนั้น “governance” หมายถึง framework ที่หนักอึ้ง การ ประชุม และ code review—ซึ่งล้วนทำด้วยมือทั้งสิ้น
อย่างไรก็ตาม สถาปนิกยังคงใช้ ESB อย่างมีกลยุทธ์ในองค์กรที่ต้องการ capability ผสมผสานเฉพาะที่มันมอบให้ โดยเฉพาะบริษัทจำนวนมากที่มี legacy system ที่ต้องโต้ตอบกับระบบที่ทันสมัยกว่า โดยมักจะรวมผลลัพธ์และรวบรวม พฤติกรรมเข้าด้วยกัน—ซึ่งทั้งหมดนี้อธิบายถึงฟังก์ชันหลักของ ESB ในสถานการณ์เหล่านี้ fitness function สามารถมีบทบาทสำคัญในการป้องกันไม่ให้ข้อมูลหรือ bounded context “รั่วไหล” ข้ามส่วนต่าง ๆ ของ ecosystem ที่ไม่ควรปรากฏ
ตัวอย่างเช่น ลองพิจารณาระบบที่ใช้ ESB เพื่อประสานงานระหว่าง package enterprise resource planning (ERP), เครื่องมือขายออนไลน์ และ Accounting service ที่ใช้ microservices ที่ทันสมัยกว่า ในสถานการณ์นี้ ระบบควรอ่านข้อมูลจากระบบ ERP และ sales เท่านั้น และควรเขียนไปยัง Accounting microservices เท่านั้น สถาปนิกสามารถเริ่มด้วยการสร้าง fitness function ที่รับประกันว่าการสื่อสารทั้งหมด ถูกเขียนลง log อย่างสม่ำเสมอ จากนั้นเขียน fitness function ทำนองนี้ (แสดงเป็น pseudocode ที่นี่):
READ logs for ERP into ERP-logs for past 24 hours
READ logs for Sales into Sales-logs for past 24 hours
FOREACH entry IN ERP-logs
IF 'operation' is 'update' and 'target' != 'accounting' THEN
raise fitness function violation
"Invalid communication between integration points"
END IF
FOREACH entry IN Sales-logs
IF 'operation' is 'update' and 'target' != 'accounting' THEN
raise fitness function violation
"Invalid communication between integration points"
END IF
fitness function นี้อ่าน log entry จากทั้งสอง integration point เพื่อรับประกันว่าจะไม่มี update operation ใดเกิดขึ้นที่มี target ไม่ใช่ระบบ Accounting .
ด้วยการใช้ fitness function แบบนี้ สถาปนิกสามารถใช้ tool อย่าง ESB ได้อย่างมีกลยุทธ์ พร้อมกับสร้าง guardrail รอบจุดที่ทีมมักใช้งานมันผิดวิธี .