วันนี้ได้รับ email เรื่องเกี่ยวกับ Architecture จาก InfoQ 
ทำการสรุปสถาปัตยกรรมที่เปลี่ยนไปของ Istio 1.5
ซึ่งเปลี่ยนจากแนวคิดที่แบ่งเป็น component ย่อย ๆ
ใน control plane ตามแนวทาง Microservices
มาเป็น component เดียว หรือ Monolithic นั่นเอง

สิ่งที่น่าสนใจคือ เหตุผลของการเปลี่ยนแปลง
มาดูว่าเป็นอย่างไรกันบ้าง

https://www.infoq.com/news/2020/03/istio-announces-istiod/

จาก Istio 1.4 นั้น ในส่วนของ Control plane จะแยกการพัฒนาออกเป็น component ย่อย ๆ ดังนี้

แต่ใน Istio 1.5 นั้น รวมเข้าด้วยกันเป็น Istiod ดังรูป

เหตุผลของการเปลี่ยนแปลงคืออะไร ?

ทั้ง ๆ ที่ Istio นั้น ถูกสร้างขึ้นมาเพื่อ
ใช้จัดการการติดต่อสื่อสารระหว่าง service หรือ Microservices นั่นเอง
ทำให้การออกแบบช่วงเริ่มต้นแยกเป็น service หรือ component ย่อย ๆ
เพื่อจัดการในแต่ละเรื่อง
นั่นคือมีหน้าที่รับผิดชอบเรื่องเดียวไปเลย

แต่ทำไมถึงต้องเปลี่ยน ?
ด้วยการนำมารวมกันเป็น component เดียวคือ Istiod ด้วยละ
มันดูย้อนแย้งไหม
นี่คือ คำถามที่ถูกถามอย่างมาก

เหตุผลของการเปลี่ยนแปลง กลับไปที่เป้าหมายของ Istio

เป้าหมายเพื่อช่วยจัดการงานที่ยาก ๆ ให้ง่ายขึ้น
คือการติดต่อสื่อสารระหว่าง service
แต่การสร้างตัวจัดการให้ง่ายนั้นกลับไปง่าย
แถมยังมีความซับซ้อนเป็นอย่างมาก    

เนื่องจาก Istio นั้นมีหลาย component ที่แยกกัน

ทำให้มี Working group ที่เยอะ แค่เห็นนี่ก็เหนื่อยเลย
แต่ข้อดีคือ แยกกันพัฒนาไปเลย
แสดงดังรูป

https://github.com/istio/community/blob/master/WORKING-GROUPS.md

แต่สุดท้ายแล้วจะใช้งานต้องติดตั้ง component ต่าง ๆ ที่ต้องการใช้งานไปด้วยเสมอ

มันไม่เป็นมิตรต่อการใช้งาน
รวมทั้งการ release ต่าง ๆ ของ Istio ทำได้ยาก
เพราะว่า ต้องรอกันในหลาย ๆ component 
(แสดงว่าแต่ละ component มีความสัมพันธ์กัน แล้วแยกกันไปทำไมนะ)

การจะ install และ upgrade ก็ไม่ง่ายเลย
เพราะว่าต้องทำให้ครบทุก component
หรือเมื่อเกิดปัญหา ก็ทำการ debug หรือหายากอีก
การติดต่อสื่อสารระหว่าง component ก็มี overhead อีก

จึงเกิดคำถามว่า แยกไปทำไม ?
ติดตั้งที่เดียวได้ครบเลยดีไหม
น่าจะส่งผลดีต่อ Istio มากกว่าหรือไม่
นั่นคือ ที่มาของการเปลี่ยนแปลงนั่นเอง 

สิ่งที่เห็นได้ชัดจากการเปลี่ยนแปลงนี้คือ

การรู้ตัวที่รวดเร็ว และเข้าใจว่าต้องการอะไรนั่นคือ เป้าหมายหลัก
ไม่ใช่บอกว่า Microservices หรือ Monolithic นั้นผิด
มันอยู่ที่คนนำมาใช้งานมากกว่า 
ว่านำมาใช้แล้วสร้างประโยชน์หรือโทษกันแน่ ( Value to Complexity )

อีกเรื่องที่น่าสนใจคือ
ถ้ารู้ว่าผลจากการตัดสินใจ
มันทำให้เรามีปัญหาแล้วก็น่าจะต้องกลับมาคิด และ ปรับปรุง
ดีกว่าทน ๆ ทำไปเหมือนเดิมนะ จริงไหม ?

แล้วคุณละ ทำไมถึงเปลี่ยน หรือ ไม่เปลี่ยน ?

Reference Websites