เอกสารสรุปผลการวิเคราะห์และออกแบบสถาปัตยกรรมระบบ

บทคัดย่อ

เอกสารฉบับนี้จัดทำขึ้นเพื่อสรุปผลการวิเคราะห์และออกแบบสถาปัตยกรรมโครงสร้างพื้นฐานของระบบ โดยมีวัตถุประสงค์เพื่อแบ่งแยกภาระงาน (Workload) และลดความเสี่ยงที่อาจเกิดขึ้นจากการดำเนินงานส่วนต่างๆ ผลการวิเคราะห์นำเสนอโครงสร้างแบบ 2-Host ซึ่งแต่ละ Host มีหน้าที่และความรับผิดชอบที่ชัดเจน เพื่อให้ระบบโดยรวมมีเสถียรภาพ ความปลอดภัย และประสิทธิภาพสูงสุด

ภาพรวมสถาปัตยกรรม

สถาปัตยกรรมที่นำเสนอประกอบด้วยเซิร์ฟเวอร์ (Host) จำนวน 2 ระบบ โดยมีการแบ่งหน้าที่หลักออกเป็น "ส่วนปฏิสัมพันธ์กับผู้ใช้" (Web-Facing) และ "ส่วนประมวลผลเบื้องหลัง" (Backend Processing) การแบ่งแยกนี้ช่วยให้สามารถบริหารจัดการทรัพยากรและขยายระบบ (Scalability) ได้อย่างมีประสิทธิภาพ

Host 1: เซิร์ฟเวอร์สำหรับส่วนหน้าและฐานข้อมูล (Web-Facing & Data Host)

บทบาทหลัก: รับผิดชอบการทำงานที่เกี่ยวข้องกับการโต้ตอบกับผู้ใช้โดยตรง (User-facing services) และการจัดการข้อมูลหลักของระบบ

องค์ประกอบหลัก (Components):

เหตุผลในการออกแบบ:

การติดตั้งระบบฐานข้อมูลบน Host เดียวกันกับ Web Application เป็นการออกแบบที่มุ่งเน้นการลดค่าความหน่วงของเครือข่าย (Network Latency) ให้ต่ำที่สุด ส่งผลให้การตอบสนองต่อผู้ใช้เป็นไปอย่างรวดเร็ว เนื่องจากแอปพลิเคชันสามารถเรียกใช้ข้อมูลจากฐานข้อมูลได้ภายในเครื่องเดียวกัน ซึ่งเป็นปัจจัยสำคัญต่อประสบการณ์ผู้ใช้ (User Experience)

แผนภาพสถาปัตยกรรมระบบ (System Architecture Diagram)

            flowchart TD
                subgraph host1 ["Host 1 (Web-Facing & Data Host)"]
                    direction LR
                    U["👤
User"] --> WA["🌐
Web Application"] WA <--> PG["🐘
PostgreSQL"] WA <--> AR["🥑
ArangoDB"] end subgraph host2 ["Host 2 (Backend Processing Host)"] direction LR S["🤖
Selenium"] --> EW["🌍
External Websites"] AI["🧠
AI Services
(Ollama, Embeddings)"] end WA -.->|"API Call"| AI style U fill:#e3f2fd,stroke:#333,stroke-width:2px style WA fill:#c8e6c9,stroke:#333,stroke-width:2px style PG fill:#b3e5fc,stroke:#333,stroke-width:2px style AR fill:#f0f4c3,stroke:#333,stroke-width:2px style S fill:#ffcdd2,stroke:#333,stroke-width:2px style AI fill:#ffecb3,stroke:#333,stroke-width:2px style EW fill:#eee,stroke:#333,stroke-width:2px

Host 2: เซิร์ฟเวอร์สำหรับประมวลผลเบื้องหลัง (Backend Processing Host)

บทบาทหลัก: รับผิดชอบงานประมวลผลที่ใช้ทรัพยากรสูง (Computationally Intensive) และงานที่มีความเสี่ยงสูงต่อการถูกจำกัดการเข้าถึงจากภายนอก

องค์ประกอบหลัก (Components):

เหตุผลในการออกแบบ:

  1. การแยกภาระทรัพยากร (Resource Isolation): งานประมวลผล AI และ Web Scraping ใช้ทรัพยากร CPU และ Memory ในปริมาณมาก การแยกงานเหล่านี้ออกมาไว้ที่ Host 2 ช่วยป้องกันไม่ให้ประสิทธิภาพของ Web Application บน Host 1 ได้รับผลกระทบ
  2. การแยกความเสี่ยงด้านเครือข่าย (IP Risk Isolation): การทำ Web Scraping มีความเสี่ยงที่ IP Address ของเซิร์ฟเวอร์จะถูกจำกัดการเข้าถึงหรือขึ้นบัญชีดำ (Blacklist) จากเว็บไซต์เป้าหมาย การใช้ Host 2 สำหรับงานนี้ช่วยให้ IP Address ของ Host 1 ซึ่งเป็นที่อยู่ของ Web Application หลักยังคงปลอดภัยและให้บริการได้ตามปกติ

บทสรุป

สถาปัตยกรรมแบบ 2-Host ที่นำเสนอนี้เป็นการแบ่งแยกหน้าที่ความรับผิดชอบ (Separation of Concerns) ที่ชัดเจน ส่งผลให้ระบบมีความยืดหยุ่น (Flexibility) ปลอดภัย (Security) และง่ายต่อการบำรุงรักษาและขยายระบบในอนาคต โดย Host 1 มุ่งเน้นที่ความเร็วในการตอบสนองต่อผู้ใช้ ในขณะที่ Host 2 ทำหน้าที่เป็นหน่วยประมวลผลเบื้องหลังที่ทรงพลังและแยกออกจากความเสี่ยงภายนอก