diff --git a/paths/software-architecture/introduction/software-architecture-intro.md b/paths/software-architecture/introduction/software-architecture-intro.md index a99a19c..845f30c 100644 --- a/paths/software-architecture/introduction/software-architecture-intro.md +++ b/paths/software-architecture/introduction/software-architecture-intro.md @@ -1,12 +1,15 @@ # Software Architecture + Software Architecture หรือสถาปัตยกรรมซอฟต์แวร์ คือ **โครงสร้างและความสัมพันธ์ขององค์ประกอบต่างๆในระบบรวมถึง หลักการและแนวคิดในการออกแบบ** ที่ช่วยให้บรรลุเป้าหมายทั้งในด้านประสิทธิภาพ คุณภาพ การบริหารจัดการ และการบำรุงรักษาที่คาดหวัง เพื่อช่วย**ให้ทุกฝ่ายเข้าใจภาพรวมของระบบและสื่อสารการตัดสินใจที่มีร่วมกัน** ในปัจจุบัน มีรูปแบบของ architecture ที่ใช้งานกันแพร่หลาย เช่น **microservices** หรือ **monolith** โดยรูปแบบต่างๆนี้เรียกว่า **architectural styles** โดยการออกแบบ software architecture อาจเป็นการผสมผสาน architectural styles และ principles ต่างๆเข้ามาไว้ด้วยกันเพื่อสร้างระบบที่มีความยืดหยุ่นและสามารถตอบโจทย์กลยุทธ์ขององค์กรได้ตามความเหมาะสม โดยพิจารณาจากประโยชน์ ข้อดี ข้อเสีย รวมถึงข้อจำกัดต่างๆที่มี Software Architecture ที่ดีจะต้อง**ไม่ใช่สิ่งตายตัว ไม่ได้ออกแบบมาครั้งเดียวแต่จะต้องสามารถเปลี่ยนแปลงและวิวัฒนาการได้**ตามกลยุทธ์และทิศทางของโครงการหรือองค์กรที่มักจะเปลี่ยนแปลงไปตามกาลเวลา การมี software architecture ที่ดีจะเป็นส่วนสำคัญในการสร้างซอฟต์แวร์ที่มีคุณภาพและตอบโจทย์ความต้องการในด้านต่างๆ ทั้งในเชิงกลยุทธ์ การพัฒนาผลิตภัณฑ์ การทดสอบ รวมถึงการบริหารจัดการ และที่สำคัญที่สุดคือผู้ใช้งานหรือลูกค้า ซึ่งจะช่วยสร้างความสามารถในการแข่งขันให้กับองค์กรได้ + ## ความสำคัญของ Software Architecture + Software Architecture เปรียบเสมือน blueprint ที่ใช้สื่อสารแนวทางการตัดสินใจที่มีร่วมกันระหว่างผู้มีส่วนได้ส่วนเสีย ซึ่งอาจจะเป็นลูกค้า ผู้บริหารโครงการ ทีมพัฒนาผลิตภัณฑ์ และรวมถึงฝ่ายบริหารต่างๆด้วย โดยมักจะถูกใช้ในการสื่อสารเกี่ยวกับทิศทาง กลยุทธ์ และแนวคิดต่างๆเพื่อให้เกิดความเข้าใจในทิศทางเดียวกัน โดย software architecture ช่วยให้ผู้ที่เกี่ยวข้องสามารถ**วิเคราะห์ และประเมินความเสี่ยงต่างๆ เช่น ความเสี่ยงด้านความปลอดภัย ด้านงบประมาณ ด้านเวลา รวมถึงความสอดคล้องกับทิศทางและกลยุทธขององค์กร**ก่อนที่จะลงมือสร้างผลิตภัณฑ์ออกมาอีกด้วย โดย software architecture ที่ดีจะช่วยให้ทุกฝ่ายเข้าใจระบบในทิศทางเดียวกัน ทั้งในด้านการพัฒนา การจัดการ การทดสอบ และการพัฒนาต่อยอดในอนาคตอีกด้วย เช่นการเพิ่มความสามารถใหม่ๆ หรือการ scale ระบบให้รองรับผู้ใช้งานที่มากขึ้น -โดยในช่วงเวลาหลังๆ นอกจากจะเป็นเครื่องมือที่ใช้ในการสื่อสารเกี่ยวกับการออกแบบระบบแล้ว software architecture ได้เข้ามามีบทบาทสำคัญในการออกแบบทีมในองค์กรสมัยใหม่ โดยมีแนวคิดต่างๆ เช่นการปรับเปลี่ยนรูปแบบทีมให้เข้ากับ architecture ที่ต้องการ ซึ่งช่วยให้ทีมต่างๆสามารถทำงานร่วมกันได้อย่างมีประสิทธิภาพและช่วยลดคอขวดในการสื่อสารและการดำเนินงาน หากสนใจหัวข้อดังกล่าว ขอแนะนำหนังสือ [Team Topologies](https://teamtopologies.com/) เขียนโดยคุณ Ruth Malan ค่ะ \ No newline at end of file +โดยในช่วงเวลาหลังๆ นอกจากจะเป็นเครื่องมือที่ใช้ในการสื่อสารเกี่ยวกับการออกแบบระบบแล้ว software architecture ได้เข้ามามีบทบาทสำคัญในการออกแบบทีมในองค์กรสมัยใหม่ โดยมีแนวคิดต่างๆ เช่นการปรับเปลี่ยนรูปแบบทีมให้เข้ากับ architecture ที่ต้องการ ซึ่งช่วยให้ทีมต่างๆสามารถทำงานร่วมกันได้อย่างมีประสิทธิภาพและช่วยลดคอขวดในการสื่อสารและการดำเนินงาน หากสนใจหัวข้อดังกล่าว ขอแนะนำหนังสือ [Team Topologies](https://teamtopologies.com/) โดยคุณ Matthew Skelton และคุณ Manuel Pais ค่ะ