Please enable JavaScript.
Coggle requires JavaScript to display documents.
พื้นฐานของวงการ - Coggle Diagram
พื้นฐานของวงการ
1 Software Architecture Design
🏛️ วัตถุประสงค์การเรียน:
🔹 Meeting Requirements: ทำให้แน่ใจว่าความต้องการทั้ง Functional และ Non-Function ในภาพรวมตรงความต้องการ
🔹 Guidance for Development: วางแนวปฏิบัติและพัฒนาตามทิศทางที่วางไว้
🔹 Flexibility and Maintainability: ช่วยให้การแก้ไขและขยายระบบทำได้ง่ายขึ้น
🔹 Risk Mitigation: ระบุและจัดการกับความท้าทายตั้งแต่เนิ่นๆ
🔹 Communication: อำนวยความสะดวกในการทำความเข้าใจระหว่างผู้มีส่วนได้ส่วนเสีย
🔹 Cost and Time Efficiency: ลดเวลาและค่าใช้จ่ายในการพัฒนาแบบไม่มีทิศทาง
🔹 Scalability and Performance Optimization: ทำให้แน่ใจว่าระบบสามารถรองรับการเติบโตและทำงานได้ดี
🔹 Structure and Organization: วางโครงการการจัดการภาพรวมทั้งระบบ
SWA Goal:
👥 Role / Responsibility
🔄 Software Evolution
🏢 Enterprise Architecture
🎨 Software Architecture Styles
🧩 Software Architecture Patterns
🧠 Understand importance of Software Architecture
รูปแบบสถาปัตยกรรมซอฟต์แวร์ที่สำคัญ
ข้อดี ข้อเสีย และกรณีการใช้งาน 🖥️
1️⃣ Client-Server 🌐
👎 ข้อเสีย: อาจมีปัญหาด้านการขยายขนาด
🔧 ใช้สำหรับ: เว็บแอปพื้นฐาน, แอปองค์กรขนาดเล็ก
👍 ข้อดี: ง่ายต่อการเข้าใจ, แยกส่วนการทำงาน
2️⃣ Layer 🥞
👍 ข้อดี: แยกส่วนชัดเจน, ง่ายต่อการบำรุงรักษา
👎 ข้อเสีย: อาจมีประสิทธิภาพต่ำหากมีเลเยอร์มากเกินไป
🔧 ใช้สำหรับ: ระบบองค์กรขนาดใหญ่, แอปที่มีความซับซ้อน
3️⃣ Pipe and Filter 🚰
👍 ข้อดี: ยืดหยุ่นสูง, ง่ายต่อการเพิ่มฟังก์ชัน
👎 ข้อเสีย: อาจซับซ้อนเกินไปสำหรับงานง่ายๆ
🔧 ใช้สำหรับ: ระบบประมวลผลข้อมูล, แปลงรูปแบบข้อมูล
4️⃣ Domain Driven Design 🧩
👍 ข้อดี: สอดคล้องกับความต้องการทางธุรกิจ, ลดความซับซ้อน
👎 ข้อเสีย: ต้องใช้เวลาในการวิเคราะห์และออกแบบ
🔧 ใช้สำหรับ: ระบบธุรกิจซับซ้อน, โครงการระยะยาว
5️⃣ Monolothic 🏛️
👍 ข้อดี: ง่ายต่อการพัฒนาและติดตั้ง
👎 ข้อเสีย: ยากต่อการขยายขนาด
🔧 ใช้สำหรับ: โครงการขนาดเล็ก, ต้นแบบ
6️⃣ Microsevices 🔬
👍 ข้อดี: ขยายขนาดได้ดี, ยืดหยุ่นสูง
👎 ข้อเสีย: ซับซ้อนในการจัดการ, ต้องการทีมที่มีทักษะสูง
🔧 ใช้สำหรับ: แอปขนาดใหญ่ที่ต้องการความยืดหยุ่น, บริการคลาวด์
7️⃣ Event Driven 🎭
👍 ข้อดี: ตอบสนองรวดเร็ว, การเชื่อมต่อยืดหยุ่นข้อมูลโครงสร้างหลากหลาย
👎 ข้อเสีย: อาจซับซ้อนในการติดตามและแก้ไขข้อผิดพลาด
🔧 ใช้สำหรับ: ระบบเรียลไทม์, IoT, App ที่รับโหลดสูงๆ ช่วยชะลอให้หลังบ้านทำงานทัน
8️⃣ Strem Processing 🙂
👍 ข้อดี : ประมวลผลแบบเรียลไทม์,ขยายขนาดได้ดี,ความน่าเชื่อถือสูง,ลดความล่าช้า,ยืดหยุ่น และมีประสิทธิภาพสูง
👎 ข้อเสีย : ซับซ้อน, จัดการ State ยาก, ทดสอบยาก, อาจมีต้นทุนสูง ต้องระวังความถูกต้องของข้อมูล และจัดการข้อมูลที่มาไม่ตรงเวลา
🔧 การใช้งาน : ตรวจจับการฉ้อโกง, วิเคราะห์โซเชียล, ระบบเมืองอัจฉริยะ, IoT, แนะนำสินค้าเรียลไทม์, วิเคราะห์พฤติกรรมผู้ใช้, เฝ้าระวังภัยพิบัติ และซื้อขายหุ้นอัตโนมัติ
9️⃣ Serverless☁️λ
👍 ข้อดี: ประหยัดต้นทุน, ขยายขนาดอัตโนมัติ
👎 ข้อเสีย: อาจมีข้อจำกัดด้านประสิทธิภาพ, ขึ้นกับผู้ให้บริการคลาวด์
🔧 ใช้สำหรับ: แอปที่มีโหลดไม่แน่นอน, ฟังก์ชันเฉพาะทาง
📊 สรุปแนวคิดเกี่ยวกับ Load Balancer 🔀
.
🔹 Load Balancer คืออะไร? 🤔
ช่วยเพิ่มความสามารถในการรองรับงานและความพร้อมใช้งาน 📈🔄
เป็นบริการอาจจะเป็นฮาร์ดแวร์หรือซอฟท์แวรืที่พัฒนาขึ้น ที่ทำหน้าที่กระจาย Request เข้ามาไปยังเซิร์ฟเวอร์หลายๆ เครื่อง 🖥️➡️🖥️🖥️🖥️
🔹 ประเภทของ Load Balancer 🔀
Layer 4: จัดการเฉพาะข้อมูลเครือข่ายพื้นฐาน เช่น IP, พอร์ต 🌐
Layer 7: สามารถวิเคราะห์ข้อมูลจาก Request เพื่อตัดสินใจไปยังเครื่องที่ทำหน้าที่ประมวลผลได้ 🧠
🔹 อัลกอริทึมการกระจายโหลด 🔄
Round Robin:
หมุนเวียน Request สลับๆไปยังเซิร์ฟเวอร์ต่างๆ 🔁
Sticky Round Robin:
ส่งคำขอจากผู้ใช้เดิมไปยังเซิร์ฟเวอร์เดิมเสมอ 🍯
Weighted Round Robin:
แล้วแต่น้ำหนักที่ให้แต่ละเซิร์ฟเวอร์ ⚖️
Hash-Based:
ใช้ค่าแฮชเพื่อกำหนดเซิร์ฟเวอร์ #️⃣
Least Connections:
ส่งไปยังเซิร์ฟเวอร์ที่มีการเชื่อมต่อน้อยที่สุด 📉
Least Response Time:
ส่งไปยังเซิร์ฟเวอร์ที่ตอบสนองเร็วที่สุด ⚡
🔹 ประโยชน์ของ Load Balancer 💪
กระจายภาระงาน 📊
เพิ่มความทนทานรับโหลดได้มากขึ้นไม่ให้ระบบล่มเร็วกว่าเดิมเมื่อเทียบกับแบบไม่มีการกระจายโหลด 🛡️
🔹 การ Scale ขนาด Load Balancer 🚀
ใช้ DNS Round Robin 🌐
จัดกลุ่ม Load Balancer 🔀
ใช้ GSLB (Global Server Load Balancing) 🌍
ตั้งค่าแบบ Active-Passive 🔋
ใช้ Anycast Load Balancing 📡
ปรับขนาดอัตโนมัติ 📏