Skip to content

Commit

Permalink
Merge pull request #27 from yerinadler/add-software-architecture-section
Browse files Browse the repository at this point in the history
  • Loading branch information
ponggun authored Aug 6, 2024
2 parents becb9fd + cc71f4b commit 2bc32ea
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 0 deletions.
23 changes: 23 additions & 0 deletions .vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ export default defineConfig({
base: "/paths/practices/",
items: sidebarPractices()
},
"/paths/software-architecture": {
base: "/paths/software-architecture/",
items: sidebarSoftwareArchitecture()
}
},
socialLinks: [
{ icon: "github", link: "https://github.com/ThaiProgrammer/tpa-path" },
Expand Down Expand Up @@ -429,4 +433,23 @@ function sidebarPractices(): DefaultTheme.SidebarItem[] {
]
}
]
}

function sidebarSoftwareArchitecture(): DefaultTheme.SidebarItem[] {
return [
{
text: "Software Architecture",
items: [
{
text: "Introduction",
collapsed: true,
base: "/paths/software-architecture/introduction/",
items: [
{ text: "What is software architecture?", link: "software-architecture-intro" },
{ text: "Styles & Patterns", link: "styles-n-patterns" },
]
}
]
}
]
}
3 changes: 3 additions & 0 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,7 @@ features:
- title: Azure
details: รวบรวมเนื้อหาที่เกี่ยวกับการใช้งาน Microsoft Cloud - Azure ในการพัฒนาระบบ
link: /paths/azure
- title: Software Architecture
details: เนื้อหาเกี่ยวกับ Software Architecture รูปแบบต่างๆที่ใช้ในการพัฒนาซอฟต์แวร์
link: /paths/software-architecture
---
13 changes: 13 additions & 0 deletions paths/software-architecture/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
outline: deep
title: 'Software Architecture'
description: เนื้อหาและรูปแบบต่างๆของ software architecture
---

# Software Architecture Guideline
เนื้อหาในส่วนนี้จะอธิบายเกี่ยวกับ Software Architecture ซึ่งเป็นส่วนสำคัญส่วนหนึ่งในการสร้างและออกแบบซอฟต์แวร์ที่มีคุณภาพ

โดยที่เนื้อหาในส่วนนี้จะมีการแนะนำและอธิบาย architectural styles และ patterns ต่างๆที่พบเจอได้โดยทั่วไปในการออกแบบ ระบบรวมถึงตัวอย่างการนำไปใช้งานจริง

หวังว่าเนื้อหาที่แนะนำจะมีประโยชน์ต่อผู้อ่านทุกคนนะคะ

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# 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 ค่ะ
Loading

0 comments on commit 2bc32ea

Please sign in to comment.