3.1 Infrastructure & Deployment
3. Infrastructure & Deployment
3.1 Server Setup & Deployment
อ้างอิง TOR:
- 3.1.7 ระบบสามารถติดตั้งบนเครื่องเซิฟเวอร์ที่ทางโรงพยาบาลทำการจัดเตรียม
วัตถุประสงค์:
Module นี้เป็นพื้นฐานโครงสร้างระบบทั้งหมด รับผิดชอบการติดตั้ง กำหนดค่า และ Deploy ระบบทั้งหมดบน Windows Server ที่โรงพยาบาลจัดเตรียมไว้ ต้องให้ความสำคัญกับความเสถียร ความปลอดภัย และความพร้อมใช้งาน (Availability) ของระบบ
3.1.1 ติดตั้งระบบบน Windows Server
TOR Reference: 3.1.7, 3.1.7.4
คำอธิบาย: การติดตั้งระบบครั้งแรกบน Windows Server ที่โรงพยาบาลจัดเตรียมไว้ โดยต้องตรวจสอบ Hardware Specification ให้เป็นไปตามข้อกำหนด และติดตั้งซอฟต์แวร์ที่จำเป็นทั้งหมดเพื่อให้ระบบสามารถทำงานได้อย่างสมบูรณ์
ข้อกำหนด Hardware (ตาม TOR 3.1.7):
- CPU: ไม่น้อยกว่า 4 Cores
- RAM: ไม่น้อยกว่า 8 GB
- Storage: ไม่น้อยกว่า 100 GB
- OS: Windows Server (2016 หรือสูงกว่า แนะนำ 2019/2022)
การทำงาน:
-
การตรวจสอบเบื้องต้น:
-
ตรวจสอบ Hardware Specification ว่าเป็นไปตามข้อกำหนดขั้นต่ำ
- ตรวจสอบ Windows Server version และ Service Pack
- ตรวจสอบ Network configuration (IP Address, DNS, Gateway)
-
ตรวจสอบ Firewall settings และ Port ที่จำเป็น (80, 443, 1433)
-
ติดตั้ง Prerequisites:
-
ติดตั้ง .NET Framework (หรือ .NET Core Runtime ตามเทคโนโลจีที่เลือก)
- ติดตั้ง IIS (Internet Information Services) สำหรับ Web Server
- ติดตั้ง URL Rewrite Module สำหรับ IIS
-
ติดตั้ง Web Deploy สำหรับการ Deploy แอปพลิเคชัน
-
การกำหนดค่า IIS:
-
สร้าง Application Pool ใหม่สำหรับแอปพลิเคชัน
- กำหนดค่า Identity และ .NET CLR Version
- สร้าง Website ใหม่และกำหนด Port (แนะนำ 80 สำหรับ HTTP, 443 สำหรับ HTTPS)
-
กำหนด Physical Path ไปยังโฟลเดอร์ที่เก็บแอปพลิเคชัน
-
การสร้างโครงสร้างโฟลเดอร์:
-
สร้างโฟลเดอร์หลัก เช่น
C:\inetpub\HISNotificationSystem - สร้างโฟลเดอร์สำหรับ Logs:
C:\Logs\HISNotification - สร้างโฟลเดอร์สำหรับ Uploads/Files:
C:\Data\HISNotification -
กำหนดสิทธิ์ (Permissions) ให้เหมาะสม
-
การทดสอบ:
-
ทดสอบเปิด Website ผ่าน Browser (http://localhost)
- ทดสอบการเข้าถึงจาก Network ภายนอก
- ตรวจสอบ Event Viewer และ IIS Logs
UI/UX Requirements:
- N/A (เป็นงาน Infrastructure ไม่มี UI)
3.1.2 กำหนดค่า Database (SQL Server)
TOR Reference: 3.1.7, 3.7
คำอธิบาย: การติดตั้งและกำหนดค่า SQL Server สำหรับเก็บข้อมูลของระบบ รวมทั้งการสร้างฐานข้อมูล ตาราง Stored Procedures และการตั้งค่า Security ต่างๆ เพื่อให้ระบบสามารถจัดเก็บและดึงข้อมูลได้อย่างมีประสิทธิภาพและปลอดภัย
การทำงาน:
-
ติดตั้ง SQL Server:
-
ติดตั้ง SQL Server (แนะนำ 2017 หรือสูงกว่า) หรือใช้ SQL Server Express (ฟรี)
- ติดตั้ง SQL Server Management Studio (SSMS) สำหรับจัดการฐานข้อมูล
- กำหนดค่า SQL Server Authentication (Mixed Mode: Windows + SQL)
- ตั้งค่า TCP/IP Protocol และ Port (Default: 1433)
-
เปิด Firewall สำหรับ Port 1433
-
สร้างฐานข้อมูล:
-
สร้าง Database ใหม่:
HISNotificationDB - กำหนด Initial Size และ Autogrowth สำหรับ Data File และ Log File
- กำหนด Recovery Model (แนะนำ SIMPLE หรือ FULL)
-
สร้าง Database User และกำหนดสิทธิ์ (db_owner หรือจำกัดเฉพาะที่จำเป็น)
-
สร้าง Database Schema:
-
ตารางหลัก:
- Users - จัดเก็บข้อมูลผู้ใช้งาน
- Patients - ข้อมูลผู้ป่วยที่ลงทะเบียน LINE
- Appointments - ข้อมูลนัดหมาย (Sync จาก HIS)
- Notifications - ข้อมูลการแจ้งเตือนที่ส่งออกไป
- NotificationResponses - การตอบกลับจากผู้ป่วย
- MessageTemplates - Template ข้อความ
- NotificationGroups - กลุ่มการแจ้งเตือน
- SystemSettings - การตั้งค่าระบบ
- ActivityLogs - Log การใช้งาน
- Reports - ข้อมูลรายงานที่ Generate แล้ว
-
สร้าง Stored Procedures:
-
SP สำหรับ CRUD operations ของแต่ละตาราง
- SP สำหรับ Query ข้อมูลที่ซับซ้อน (เช่น รายงาน, Dashboard)
- SP สำหรับ Sync ข้อมูลจาก HIS Database
-
SP สำหรับ Cleanup ข้อมูลเก่า (Archive/Delete)
-
การตั้งค่า Backup:
-
กำหนด Backup Schedule (Full Backup ทุกวัน, Differential Backup ทุก 6 ชั่วโมง)
- กำหนดตำแหน่งเก็บ Backup Files
-
ทดสอบ Restore จาก Backup
-
Performance Tuning:
-
สร้าง Index ที่เหมาะสมสำหรับ Query ที่ใช้บ่อย
- กำหนด Statistics Update Schedule
- Monitor และ Optimize Slow Queries
UI/UX Requirements:
- N/A (เป็นงาน Infrastructure ไม่มี UI)
3.1.3 Setup SSL Certificate
TOR Reference: ความปลอดภัยของระบบ (implied จาก TOR)
คำอธิบาย: การติดตั้ง SSL/TLS Certificate เพื่อเข้ารหัสการสื่อสารระหว่าง Client และ Server ผ่าน HTTPS ทำให้ข้อมูลผู้ป่วยและการสื่อสารมีความปลอดภัย ไม่ถูกดักฟังหรือแก้ไขระหว่างทาง
การทำงาน:
-
การขอ SSL Certificate:
-
กรณีใช้ภายใน (Internal): สร้าง Self-Signed Certificate หรือใช้ Internal CA
- กรณีเปิดให้ใช้งานจาก Internet: ขอ Certificate จาก Certificate Authority (CA) เช่น Let's Encrypt (ฟรี), DigiCert, Thawte
-
เตรียม CSR (Certificate Signing Request) พร้อม Domain Name
-
ติดตั้ง Certificate บน IIS:
-
Import Certificate File (.pfx หรือ .cer) เข้า Certificate Store
- เปิด IIS Manager > เลือก Website > Bindings
- Add HTTPS Binding (Port 443) และเลือก SSL Certificate
-
กำหนด Require SSL (optional แต่แนะนำ)
-
การตั้งค่า Redirect HTTP to HTTPS:
-
ติดตั้ง URL Rewrite Module (ถ้ายังไม่มี)
- สร้าง Redirect Rule: HTTP (Port 80) → HTTPS (Port 443)
-
ทดสอบว่า Redirect ทำงานถูกต้อง
-
การตั้งค่าเพิ่มเติม:
-
เปิดใช้งาน HSTS (HTTP Strict Transport Security) Header
- กำหนดค่า TLS Version (แนะนำ TLS 1.2 ขึ้นไป, ปิด SSL 3.0, TLS 1.0)
-
ตั้งค่า Cipher Suites ที่ปลอดภัย
-
การทดสอบ:
-
ทดสอบเข้า Website ผ่าน HTTPS (https://domain.com)
- ตรวจสอบ Certificate ว่า Valid และไม่มี Warning
- ทดสอบด้วย SSL Labs (https://www.ssllabs.com/ssltest/) เพื่อตรวจสอบคุณภาพ
UI/UX Requirements:
- N/A (เป็นงาน Infrastructure ไม่มี UI)
3.1.4 Deploy Web Application
TOR Reference: การติดตั้งระบบ (implied จาก TOR)
คำอธิบาย: การ Deploy แอปพลิเคชัน Back Office และ LINE Webhook API ขึ้นบน IIS เพื่อให้ระบบสามารถทำงานได้จริง รวมทั้งการกำหนดค่า Configuration Files และการทดสอบการทำงานของระบบ
การทำงาน:
-
เตรียม Application Files:
-
Build แอปพลิเคชันในโหมด Production/Release
- รวม Dependency Files ทั้งหมด
- สร้าง Configuration File สำหรับ Production (appsettings.json หรือ web.config)
- กำหนดค่าการเชื่อมต่อฐานข้อมูล (Connection Strings)
-
กำหนดค่า LINE Messaging API (Channel Access Token, Channel Secret)
-
Deploy to IIS:
-
วิธีที่ 1 - Manual Copy:
- Copy ไฟล์ทั้งหมดไปยัง Physical Path ของ IIS Website
- ตรวจสอบสิทธิ์ (Permissions) ของโฟลเดอร์
-
วิธีที่ 2 - Web Deploy:
- ใช้ Visual Studio Publish หรือ MSDeploy Command Line
- กำหนดค่า Publish Profile
- Deploy ผ่าน Web Deploy Protocol
-
กำหนดค่า Application:
-
ตั้งค่า Connection String ให้ชี้ไปยัง SQL Server
- กำหนด LINE API Credentials
- ตั้งค่า Logging (Log Level, Log File Path)
- กำหนดค่า Email/SMS Gateway (ถ้ามี)
-
ตั้งค่า CORS (Cross-Origin Resource Sharing) ถ้าจำเป็น
-
Database Migration:
-
รัน Database Schema Migration Scripts
- Insert Master Data/Seed Data (เช่น Admin User, Default Settings)
-
Verify ข้อมูลเริ่มต้นในฐานข้อมูล
-
การทดสอบหลัง Deploy:
-
ทดสอบเปิด Back Office ผ่าน Browser
- ทดสอบ Login ด้วย Admin Account
- ทดสอบ LINE Webhook Endpoint (ใช้ Postman หรือ LINE Developer Console)
- ทดสอบการเชื่อมต่อฐานข้อมูล
- ทดสอบการส่ง LINE Message (Push Message)
-
ตรวจสอบ Log Files ว่าไม่มี Error
-
Monitoring Setup:
-
ติดตั้ง Application Performance Monitoring (ถ้ามี)
- ตั้งค่า Error Logging และ Alert
- สร้าง Health Check Endpoint
UI/UX Requirements:
- N/A (เป็นงาน Infrastructure ไม่มี UI)
3.1.5 Setup Scheduler Service
TOR Reference: 3.4.5, 3.5
คำอธิบาย: การติดตั้งและกำหนดค่า Background Service (Windows Service หรือ Task Scheduler) สำหรับทำงานตามกำหนดเวลา เช่น ดึงข้อมูลนัดหมายจาก HIS, ส่งการแจ้งเตือนอัตโนมัติ, ทำ Data Cleanup และสร้างรายงานตามตารางเวลา
การทำงาน:
-
สร้าง Scheduler Service:
-
ทางเลือก 1 - Windows Service:
- สร้าง Windows Service Application (.NET Core Worker Service หรือ Windows Service)
- Install Service ด้วย sc.exe หรือ InstallUtil.exe
- ตั้งค่า Service เป็น Auto Start
-
ทางเลือก 2 - Windows Task Scheduler:
- สร้าง Console Application สำหรับแต่ละ Task
- สร้าง Scheduled Task ใน Task Scheduler
- กำหนด Trigger (เวลาที่ต้องการให้ทำงาน)
-
Jobs ที่ต้องมี:
A. Sync Appointment Job (ดึงข้อมูลนัดหมายจาก HIS):
- Schedule: ทุก 1 ชั่วโมง หรือตามที่ TOR 3.4.5 กำหนด
-
การทำงาน:
- Query ข้อมูลนัดหมายจาก HIS Database (หรือ API)
- เปรียบเทียบกับข้อมูลในระบบ (Insert/Update/Delete)
- บันทึก Log การ Sync
B. Send Notification Job (ส่งการแจ้งเตือนอัตโนมัติ):
- Schedule: ตามที่กำหนดในระบบ (เช่น ทุกเช้า 8:00 น.)
-
การทำงาน:
- Query นัดหมายที่จะถึงกำหนดตาม Notification Settings
- กรองเฉพาะผู้ป่วยที่ลงทะเบียนและเปิดการแจ้งเตือน
- สร้างข้อความจาก Template
- ส่ง LINE Push Message
- บันทึก Notification Log
C. Data Cleanup Job (ลบหรือ Archive ข้อมูลเก่า):
- Schedule: ทุกวัน เวลา 02:00 น.
-
การทำงาน:
- ลบ Notification Logs ที่เก่ากว่า 1 ปี
- Archive ข้อมูลนัดหมายที่เสร็จสิ้นแล้ว
- ลบ Temporary Files
D. Report Generation Job (สร้างรายงานตามตารางเวลา):
- Schedule: ทุกวันจันทร์ เวลา 07:00 น. (รายงานสัปดาห์)
-
การทำงาน:
- สร้างรายงานสรุปประจำสัปดาห์
- Export เป็น Excel/PDF
- ส่งอีเมลแจ้งเจ้าหน้าที่ (ถ้ามี)
-
การกำหนดค่า Job:
-
ตั้งค่าเวลาทำงานของแต่ละ Job
- กำหนด Retry Policy (กรณี Job ล้มเหลว)
- ตั้งค่า Timeout สำหรับแต่ละ Job
-
กำหนด Concurrency (จำนวน Job ที่ทำงานพร้อมกัน)
-
Logging และ Monitoring:
-
บันทึก Log ทุกครั้งที่ Job ทำงาน (Start Time, End Time, Status)
- บันทึก Error Log กรณี Job ล้มเหลว
- Alert เจ้าหน้าที่กรณีมี Error (Email หรือ LINE Notify)
-
สร้าง Dashboard แสดงสถานะ Jobs
-
การทดสอบ:
-
ทดสอบ Manual Run แต่ละ Job
- ตรวจสอบ Log ว่าทำงานถูกต้อง
- ทดสอบกรณี Error Handling
- ตรวจสอบว่า Schedule ทำงานตามเวลาที่กำหนด
UI/UX Requirements:
- N/A (เป็นงาน Infrastructure ไม่มี UI แต่อาจมี Admin Panel สำหรับดูสถานะ Jobs)
สรุป Module 3: Infrastructure & Deployment
ความสำคัญ: Module นี้เป็นรากฐานของระบบทั้งหมด ต้องทำให้ดีและถูกต้องตั้งแต่เริ่มต้น เพราะจะส่งผลต่อความเสถียร ความปลอดภัย และประสิทธิภาพของระบบในระยะยาว ครอบคลุมข้อกำหนดใน TOR 3.1.7, 3.4.5
Timeline Summary:
- SA: 13 ชั่วโมง
- UI Design: 0 ชั่วโมง
- Backend Dev: 56 ชั่วโมง
- Frontend Dev: 8 ชั่วโมง
- Testing: 48 ชั่วโมง
- PM: 10 ชั่วโมง
- Marketing Officer: 0 ชั่วโมง
การทำงาน:
- Server Setup: 32h
- Database Setup: 24h
- SSL Configuration: 13h
- Deployment: 37h
- Scheduler Service: 29h