Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Correct information in software architecture section #60

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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 ค่ะ
โดยในช่วงเวลาหลังๆ นอกจากจะเป็นเครื่องมือที่ใช้ในการสื่อสารเกี่ยวกับการออกแบบระบบแล้ว software architecture ได้เข้ามามีบทบาทสำคัญในการออกแบบทีมในองค์กรสมัยใหม่ โดยมีแนวคิดต่างๆ เช่นการปรับเปลี่ยนรูปแบบทีมให้เข้ากับ architecture ที่ต้องการ ซึ่งช่วยให้ทีมต่างๆสามารถทำงานร่วมกันได้อย่างมีประสิทธิภาพและช่วยลดคอขวดในการสื่อสารและการดำเนินงาน หากสนใจหัวข้อดังกล่าว ขอแนะนำหนังสือ [Team Topologies](https://teamtopologies.com/) โดยคุณ Matthew Skelton และคุณ Manuel Pais ค่ะ
Loading