Style Characteristics (คุณลักษณะของสไตล์)
สถาปัตยกรรมสไตล์ microservices มีคะแนนสุดขั้วหลายด้านบน rating scale มาตรฐานของเรา ดังแสดงใน Figure 18-16 คะแนนหนึ่งดาวหมายความว่าคุณลักษณะสถาปัตยกรรมนั้นไม่ได้รับการสนับสนุนที่ดีในสถาปัตยกรรมนี้ ในขณะที่คะแนนห้าดาว หมายความว่าคุณลักษณะนั้นเป็นหนึ่งในจุดแข็งที่สุดของสถาปัตยกรรมสไตล์นี้ นิยามของแต่ละคุณลักษณะที่ระบุใน scorecard สามารถดูได้ใน Chapter 4
Microservices สนับสนุนแนวปฏิบัติทางวิศวกรรมสมัยใหม่อย่างเห็นได้ชัด เช่น automated deployment และ testability Microservices จะไม่มีทางเกิดขึ้นได้เลยหากไม่มีการปฏิวัติของ DevOps ที่มุ่งมั่นทำให้เรื่องปฏิบัติการเป็น automation อย่างไม่หยุดยั้ง
Figure 18-16. คะแนนคุณลักษณะของ microservices
ธรรมชาติที่เป็นอิสระ ทำหน้าที่เดียว และด้วยเหตุนี้จึงละเอียดของ service ในสถาปัตยกรรมสไตล์นี้ มักนำไปสู่ fault tolerance ที่สูง จึงเป็นเหตุผลที่คุณลักษณะนี้ได้คะแนนสูง
จุดเด่นอื่น ๆ ของสถาปัตยกรรมนี้คือ scalability, elasticity และ evolvability ระบบที่ scale ได้ดีที่สุดบางระบบ เคยใช้ microservices จนประสบความสำเร็จอย่างมาก ในทำนองเดียวกัน เนื่องจากสไตล์นี้พึ่งพา automation อย่างมาก และผสานรวมกับ operation อย่างชาญฉลาด สถาปนิกจึงสามารถออกแบบให้รองรับ elasticity ได้ เนื่องจากสถาปัตยกรรมนี้เอื้อ ต่อการ decouple ในระดับที่ค่อยเป็นค่อยไป มันยังสนับสนุนแนวปฏิบัติทางธุรกิจสมัยใหม่เรื่องการเปลี่ยนแปลงเชิงวิวัฒนาการ แม้กระทั่งในระดับสถาปัตยกรรมเอง ธุรกิจสมัยใหม่เคลื่อนไหวเร็ว และการพัฒนาซอฟต์แวร์ก็ดิ้นรนตามให้ทัน สถาปัตยกรรมที่ ประกอบด้วยหน่วย deploy ขนาดเล็กและ decoupled สูงมาก ๆ สามารถรองรับอัตราการเปลี่ยนแปลงที่รวดเร็วกว่าได้
Performance มักเป็นปัญหาใน microservices สถาปัตยกรรมแบบ distributed ต้องเรียกผ่านเครือข่ายจำนวนมากเพื่อให้งานสำเร็จ ซึ่งมี overhead ด้าน performance สูง พวกมันยังต้องเรียกใช้การตรวจสอบความปลอดภัยเพื่อยืนยันตัวตนและสิทธิ์การเข้าถึง ในทุก endpoint ซึ่งเพิ่ม latency เข้าไปอีก Microservices ยังประสบปัญหา data latency เมื่อ request หนึ่งต้องการให้หลาย service ประสานงานกัน นั่นหมายถึงการเรียกฐานข้อมูลหลายครั้ง
ด้วยเหตุนี้ โลกของ microservices จึงมี architecture pattern มากมายเพื่อเพิ่ม performance รวมถึงการทำ data caching และ replication อย่างชาญฉลาดเพื่อป้องกันการเรียกเครือข่ายมากเกินไป Performance ก็เป็นอีกเหตุผลหนึ่งที่ microservices มักใช้ choreography มากกว่า orchestration เพราะ coupling ที่น้อยกว่าทำให้สื่อสารได้เร็วขึ้นและมี bottleneck น้อยลง
Microservices เป็นสถาปัตยกรรมที่แบ่งตามโดเมน (domain-partitioned) อย่างชัดเจน โดยขอบเขต service แต่ละอันควรตรงกับ โดเมน ด้วย bounded context มันยังมี quanta ที่แยกจากกันชัดเจนที่สุดในบรรดาสถาปัตยกรรมสมัยใหม่ ในหลาย ๆ แง่ มันคือตัวอย่างของสิ่งที่ตัวชี้วัด quantum ประเมิน ปรัชญาขับเคลื่อนของการ decouple แบบสุดขั้วสร้างความปวดหัว แต่ก็ให้ผลตอบแทนมหาศาลเมื่อทำได้ดี เหมือนกับสถาปัตยกรรมใด ๆ สถาปนิกต้องเข้าใจกฎก่อนจึงจะทำลายมันได้อย่างชาญฉลาด