Update photo for deployment
|
|
@ -1,8 +1,8 @@
|
|||
# บทนำ
|
||||
# การจัดการระบบ
|
||||
|
||||
การพัฒนาและจัดการแอปพลิเคชันในยุคปัจจุบันได้มีการเปลี่ยนแปลงไปจากวิธีการเดิมๆ ด้วยการนำเทคโนโลยีใหม่ๆ มาใช้ ซึ่งทำให้กระบวนการพัฒนาและการดูแลระบบมีประสิทธิภาพมากขึ้น โดยเฉพาะการใช้ Container, Docker, Microservice, และ API Gateway ซึ่งแต่ละเทคโนโลยีก็มีบทบาทที่สำคัญในการสร้างแอปพลิเคชันที่สามารถปรับตัวได้ง่ายและสามารถขยายได้อย่างยืดหยุ่น
|
||||
|
||||
# Container คืออะไร?
|
||||
## Container คืออะไร?
|
||||
|
||||
Container คือ เทคโนโลยีที่ทำให้การรันแอปพลิเคชันเป็นไปอย่างมีประสิทธิภาพโดยการแยกแอปพลิเคชันและไลบรารีที่จำเป็นออกจากระบบปฏิบัติการหลัก (Host OS) ไว้ในสภาพแวดล้อมที่เป็นอิสระ Container จะบรรจุโค้ด ไลบรารี และการตั้งค่าทั้งหมดที่จำเป็นต้องใช้สำหรับการทำงาน ทำให้แอปพลิเคชันนั้นสามารถทำงานได้ไม่ว่าจะรันในสภาพแวดล้อมไหนก็ตาม เช่น บนเครื่องพัฒนาของโปรแกรมเมอร์ หรือบนเซิร์ฟเวอร์การผลิต
|
||||
|
||||
|
|
@ -12,11 +12,11 @@ Container คือ เทคโนโลยีที่ทำให้การ
|
|||
- **ปรับขนาดได้ง่าย** ด้วยการโคลน Container เพิ่มเมื่อมีความต้องการใช้งานสูง
|
||||
- **การจัดการทรัพยากรมีประสิทธิภาพขึ้น** เนื่องจาก Container ใช้ทรัพยากรของระบบปฏิบัติการร่วมกัน ลดความซ้ำซ้อนของระบบที่ต้องจัดเตรียมทรัพยากรแยกเหมือนใน Virtual Machine
|
||||
|
||||
# เปรียบเทียบระหว่างเทคโนโลยี Container และ Virtual Machine
|
||||
## เปรียบเทียบระหว่างเทคโนโลยี Container และ Virtual Machine
|
||||
|
||||
การเปรียบเทียบระหว่าง Container และ Virtual Machine (VM) เป็นหัวข้อสำคัญในการเลือกใช้สถาปัตยกรรมสำหรับการรันแอปพลิเคชัน เนื่องจากทั้งสองเทคโนโลยีนี้มีวิธีการทำงานและประโยชน์ที่แตกต่างกัน การทำความเข้าใจความแตกต่างระหว่าง Container และ VM จะช่วยให้ผู้พัฒนาและผู้ดูแลระบบสามารถเลือกใช้เทคโนโลยีที่เหมาะสมกับงานมากที่สุด
|
||||
|
||||
# ภาพรวมของ Container และ Virtual Machine
|
||||
## ภาพรวมของ Container และ Virtual Machine
|
||||
|
||||
Virtual Machine (VM) คือ การจำลองระบบคอมพิวเตอร์ทั้งหมดที่รันอยู่บนฮาร์ดแวร์เสมือน โดย VM จะมีระบบปฏิบัติการที่แยกต่างหากจากระบบปฏิบัติการหลัก (Host OS) และทำงานได้อย่างอิสระในลักษณะของคอมพิวเตอร์เสมือน
|
||||
Container คือ เทคโนโลยีที่แบ่งแยกแอปพลิเคชันและไลบรารีที่จำเป็นออกจากระบบปฏิบัติการหลักในรูปแบบที่เบากว่า VM โดย Container ใช้ระบบปฏิบัติการร่วมกับ Host OS และมีการแยกแอปพลิเคชันจากกันในระดับของโปรเซส
|
||||
|
|
@ -58,7 +58,7 @@ Container คือ เทคโนโลยีที่แบ่งแยกแ
|
|||
- **VM**: VM มีการแยกความปลอดภัยที่ดีกว่า เนื่องจาก Guest OS แต่ละตัวมี Kernel เป็นของตนเอง และทำงานในลักษณะอิสระ การโจมตีจาก VM หนึ่งไปยัง VM อื่นหรือ Host OS จึงทำได้ยากกว่า
|
||||
- **Container**: Container มีการแยกความปลอดภัยในระดับโปรเซส ซึ่งไม่สมบูรณ์เท่า VM เนื่องจากทุก Container ใช้ Host OS ร่วมกัน ทำให้หากมีการเจาะระบบหรือโจมตีในระดับ Kernel ของ Host OS อาจส่งผลต่อ Container ทั้งหมดได้
|
||||
|
||||
# สรุปเปรียบเทียบ
|
||||
## สรุปเปรียบเทียบ
|
||||
|
||||
| **คุณลักษณะ** | **Virtual Machine (VM)** | **Container** |
|
||||
|-------------------------|-----------------------------------------------|--------------------------------------------|
|
||||
|
|
@ -75,15 +75,15 @@ Container คือ เทคโนโลยีที่แบ่งแยกแ
|
|||
| **ตัวอย่างเครื่องมือ** | VMware, Hyper-V, VirtualBox | Docker, Kubernetes, Podman |
|
||||
|
||||
|
||||
# Docker คืออะไร?
|
||||
## Docker คืออะไร?
|
||||
|
||||
Docker เป็นแพลตฟอร์มที่ช่วยให้การพัฒนาและจัดการแอปพลิเคชันเป็นไปอย่างรวดเร็วและมีประสิทธิภาพ โดย Docker ใช้เทคโนโลยี Containerization เพื่อสร้างและรันแอปพลิเคชันในรูปแบบที่เรียกว่า Container ซึ่งเป็นหน่วยการทำงานที่มีความเป็นอิสระและมีทุกสิ่งที่จำเป็นสำหรับการทำงานของแอปพลิเคชัน เช่น โค้ด, ไลบรารี, ระบบไฟล์ และตัวแปรที่จำเป็น ทำให้สามารถพกพาและรันได้อย่างยืดหยุ่นในทุกระบบที่ติดตั้ง Docker ไว้
|
||||
|
||||
# แนวคิดเบื้องต้นเกี่ยวกับ Docker
|
||||
### แนวคิดเบื้องต้นเกี่ยวกับ Docker
|
||||
|
||||
Docker เป็นแพลตฟอร์มที่ช่วยให้การสร้าง รัน และจัดการแอปพลิเคชันในรูปแบบ Container เป็นไปอย่างสะดวกและมีประสิทธิภาพ ซึ่งแตกต่างจากการใช้งาน Virtual Machine ที่ต้องจำลองระบบปฏิบัติการแยกกัน Docker จะใช้เคอร์เนลของ Host OS ร่วมกันในระดับโปรเซส ดังนั้น Container จึงมีน้ำหนักเบาและใช้ทรัพยากรน้อยกว่า VM อย่างมาก ทำให้สามารถรันหลายๆ Container พร้อมกันได้บนฮาร์ดแวร์เดียว
|
||||
|
||||
# ส่วนประกอบสำคัญของ Docker
|
||||
### ส่วนประกอบสำคัญของ Docker
|
||||
|
||||
1. **Docker Engine**: เป็นซอฟต์แวร์หลักของ Docker ที่ทำหน้าที่รันและจัดการ Container ประกอบด้วยสองส่วนสำคัญ คือ
|
||||
|
||||
|
|
@ -98,14 +98,14 @@ Docker เป็นแพลตฟอร์มที่ช่วยให้ก
|
|||
|
||||
5. **Docker Hub**: เป็นบริการคลังเก็บ Image ที่มีอยู่บนอินเทอร์เน็ต Docker Hub ช่วยให้ผู้ใช้สามารถดาวน์โหลด Image ที่มีอยู่แล้ว หรืออัปโหลด Image ของตัวเองได้ ซึ่งทำให้นักพัฒนาสามารถเข้าถึง Image ต่างๆ ได้อย่างสะดวกโดยไม่ต้องสร้าง Image ใหม่จากศูนย์
|
||||
|
||||
# การทำงานของ Docker
|
||||
### การทำงานของ Docker
|
||||
|
||||
1. สร้าง Image จาก Dockerfile: นักพัฒนาสามารถสร้าง Docker Image โดยใช้ Dockerfile ซึ่งเป็นไฟล์ที่ประกอบไปด้วยคำสั่งและขั้นตอนการติดตั้งและการตั้งค่าต่างๆ เช่น การติดตั้งไลบรารี การคัดลอกไฟล์ และการกำหนดคำสั่งที่ต้องรันเมื่อเริ่มต้น Container
|
||||
2. สร้างและรัน Container: เมื่อมี Image แล้ว สามารถสร้าง Container ได้โดยการใช้คำสั่ง เช่น docker run ซึ่งจะสร้าง Instance ของ Image ที่ทำงานอยู่จริง Container นี้จะทำงานเป็นแอปพลิเคชันที่แยกออกจากระบบปฏิบัติการหลัก แต่ยังสามารถสื่อสารกับ Host ได้ตามการตั้งค่า
|
||||
3. การจัดการ Container ด้วย Docker Compose: หากแอปพลิเคชันต้องการหลาย Container ทำงานร่วมกัน เช่น มีทั้งฐานข้อมูลและ API นักพัฒนาสามารถใช้ Docker Compose เพื่อสร้างและจัดการ Container หลายๆ ตัวพร้อมกันได้ ทำให้การตั้งค่าทั้งหมดถูกรวมอยู่ในไฟล์เดียว และสามารถเรียกใช้ทุก Container ได้ด้วยคำสั่งเดียว (docker-compose up)
|
||||
4. การจัดการและการปรับแต่ง Container: Docker รองรับการควบคุมการใช้ทรัพยากรของ Container เช่น CPU และ RAM ซึ่งช่วยให้การทำงานของแอปพลิเคชันมีประสิทธิภาพมากขึ้น โดยสามารถกำหนดการใช้ทรัพยากรให้เหมาะสมตามความต้องการ
|
||||
|
||||
# ข้อดีของ Docker
|
||||
### ข้อดีของ Docker
|
||||
|
||||
1. พกพาสะดวกและสภาพแวดล้อมคงที่: Docker ช่วยให้นักพัฒนาสามารถรันแอปพลิเคชันใน Container เดียวกันในทุกๆ สภาพแวดล้อม เช่น การพัฒนา การทดสอบ และการใช้งานจริง โดยที่ไม่ต้องปรับแต่งใหม่
|
||||
2. การจัดการทรัพยากรที่มีประสิทธิภาพ: Container ใช้ทรัพยากรน้อยกว่า Virtual Machine เพราะไม่ต้องมี Guest OS ทำให้สามารถรันหลายๆ Container พร้อมกันบนเครื่องเดียวได้อย่างมีประสิทธิภาพ
|
||||
|
|
@ -115,11 +115,11 @@ Docker เป็นแพลตฟอร์มที่ช่วยให้ก
|
|||
|
||||
Docker เป็นเทคโนโลยีที่ช่วยให้การพัฒนาและการจัดการแอปพลิเคชันเป็นไปอย่างรวดเร็วและยืดหยุ่นด้วยการใช้ Container ซึ่งเป็นหน่วยการทำงานที่เบากว่า Virtual Machine ช่วยให้การพัฒนาแอปพลิเคชันหลายๆ ส่วนทำงานอย่างเป็นอิสระในรูปแบบ Microservices แต่การใช้งาน Docker ก็มีข้อจำกัดเช่นกัน ซึ่งควรพิจารณาตามความเหมาะสม
|
||||
|
||||
# Microservice คืออะไร?
|
||||
## Microservice คืออะไร?
|
||||
|
||||
Microservices คือสถาปัตยกรรมการออกแบบซอฟต์แวร์ที่เน้นการแบ่งแยกส่วนของระบบออกเป็นบริการย่อยๆ (Service) ที่เป็นอิสระต่อกัน โดยแต่ละบริการจะรับผิดชอบเฉพาะงานหรือฟังก์ชันหนึ่งๆ ของระบบ และสามารถสื่อสารกับบริการอื่นๆ ผ่านโปรโตคอล API (เช่น HTTP/REST, gRPC, หรือ Message Queue) ทำให้ระบบมีความยืดหยุ่นสูง สามารถพัฒนา ทดสอบ และปรับปรุงแต่ละส่วนแยกกันได้ รวมทั้งมีความสามารถในการสเกล (Scale) ตามความต้องการได้ดีกว่าการออกแบบระบบแบบ Monolithic ที่รวมทุกฟังก์ชันไว้ในแอปพลิเคชันเดียว
|
||||
|
||||
# แนวคิดและการทำงานของ Microservices
|
||||
### แนวคิดและการทำงานของ Microservices
|
||||
|
||||
ในการออกแบบแบบ Microservices ระบบจะถูกแบ่งเป็นบริการย่อยๆ ซึ่งแต่ละบริการจะรับผิดชอบหน้าที่อย่างใดอย่างหนึ่ง เช่น การจัดการข้อมูลผู้ใช้ การประมวลผลข้อมูล การจัดการคำสั่งซื้อ เป็นต้น การแบ่งแยกแบบนี้ทำให้ทุกบริการมีความเป็นอิสระ สามารถปรับแต่งและพัฒนาแยกจากกันได้โดยไม่กระทบส่วนอื่นๆ ของระบบ ตัวอย่างเช่น:
|
||||
|
||||
|
|
@ -127,7 +127,7 @@ Microservices คือสถาปัตยกรรมการออกแบ
|
|||
- **Product Service** – จัดการข้อมูลสินค้า
|
||||
- **Order Service** – จัดการข้อมูลคำสั่งซื้อ
|
||||
|
||||
# องค์ประกอบสำคัญของ Microservices
|
||||
### องค์ประกอบสำคัญของ Microservices
|
||||
|
||||
1. **การแยกเป็นอิสระ (Decentralized Services)**: แต่ละบริการจะทำงานแยกจากกันโดยสมบูรณ์ สามารถพัฒนาและปรับปรุงโดยทีมงานที่ดูแลเฉพาะบริการนั้นๆ ได้โดยไม่ส่งผลกระทบต่อบริการอื่นๆ
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ Microservices คือสถาปัตยกรรมการออกแบ
|
|||
|
||||
6. **การติดตั้งและปรับปรุงง่าย (Continuous Deployment)**: แต่ละบริการสามารถปรับปรุง แก้ไข และติดตั้งใหม่ได้อิสระ โดยไม่จำเป็นต้องปล่อยซอฟต์แวร์ทั้งหมดใหม่ ซึ่งช่วยให้การปรับปรุงหรือแก้ไขบั๊กสามารถทำได้ทันที
|
||||
|
||||
# ข้อดีของ Microservices
|
||||
### ข้อดีของ Microservices
|
||||
|
||||
1. **ความยืดหยุ่นในการพัฒนาและการทำงานเป็นทีม**: ทีมพัฒนาสามารถรับผิดชอบเฉพาะบริการที่ตนพัฒนาได้โดยตรง ทำให้แต่ละทีมสามารถเลือกเทคโนโลยีและการทำงานที่เหมาะสมได้ ช่วยให้ระบบพัฒนาได้เร็วขึ้นและมีคุณภาพสูงขึ้น
|
||||
|
||||
|
|
@ -151,7 +151,7 @@ Microservices คือสถาปัตยกรรมการออกแบ
|
|||
|
||||
4. **ความทนทาน (Fault Tolerance)**: หากบริการหนึ่งล้มเหลว บริการอื่นๆ ที่เหลือจะยังทำงานต่อไปได้ ซึ่งช่วยลดผลกระทบจากปัญหาที่เกิดขึ้นกับบริการบางส่วน
|
||||
|
||||
# ข้อเสียของ Microservices
|
||||
### ข้อเสียของ Microservices
|
||||
|
||||
1. **ความซับซ้อนในการออกแบบและจัดการ**: เนื่องจาก Microservices ต้องมีการเชื่อมโยงบริการหลายๆ ตัว การออกแบบและจัดการสถาปัตยกรรมจึงซับซ้อนมากขึ้น ทำให้ต้องมีการวางแผนที่ดีในเรื่องของการจัดการบริการ การตรวจสอบ และการบำรุงรักษา
|
||||
|
||||
|
|
@ -161,7 +161,7 @@ Microservices คือสถาปัตยกรรมการออกแบ
|
|||
|
||||
4. **การทดสอบยากขึ้น**: การทดสอบ Microservices ต้องตรวจสอบการทำงานของแต่ละบริการและการทำงานร่วมกัน ซึ่งทำให้ต้องออกแบบการทดสอบที่ซับซ้อนมากขึ้น รวมถึงต้องใช้เครื่องมือเฉพาะสำหรับการทดสอบระบบที่มีหลายบริการ
|
||||
|
||||
# การใช้งาน Microservices ในโลกจริง
|
||||
### การใช้งาน Microservices ในโลกจริง
|
||||
|
||||
1. **การพัฒนาแอปพลิเคชันแบบ Cloud-native**: Microservices เป็นพื้นฐานของการพัฒนาแอปพลิเคชันแบบ Cloud-native ที่ใช้ Cloud Infrastructure ในการบริหารจัดการ เช่น การใช้ Kubernetes เพื่อจัดการบริการในรูปแบบ Container ซึ่งทำให้การปรับขนาดและการจัดการทรัพยากรเป็นไปอย่างมีประสิทธิภาพ
|
||||
|
||||
|
|
@ -169,7 +169,7 @@ Microservices คือสถาปัตยกรรมการออกแบ
|
|||
|
||||
3. **การนำมาใช้ในองค์กรที่มีการเปลี่ยนแปลงบ่อย**: เนื่องจาก Microservices สามารถปรับปรุงเฉพาะส่วนได้ จึงเหมาะกับองค์กรที่ต้องการเปลี่ยนแปลงและปรับปรุงซอฟต์แวร์อย่างต่อเนื่องเพื่อรองรับตลาดหรือการพัฒนาใหม่ๆ
|
||||
|
||||
# การเปรียบเทียบ Microservices กับ Monolithic
|
||||
### การเปรียบเทียบ Microservices กับ Monolithic
|
||||
|
||||
| **คุณสมบัติ** | **Monolithic Architecture** | **Microservices Architecture** |
|
||||
| --------------------------- | ----------------------------------------- | ----------------------------------------- |
|
||||
|
|
@ -185,11 +185,11 @@ Microservices คือสถาปัตยกรรมการออกแบ
|
|||
|
||||
Microservices เป็นสถาปัตยกรรมที่ช่วยให้แอปพลิเคชันมีความยืดหยุ่นและสามารถปรับเปลี่ยนตามความต้องการขององค์กรได้ ทำให้แต่ละส่วนของระบบเป็นอิสระจากกัน ซึ่งเหมาะกับการพัฒนาแอปพลิเคชันที่มีการเปลี่ยนแปลงบ่อย หรือแอปพลิเคชันขนาดใหญ่ที่ต้องการประสิทธิภาพในการจัดการทรัพยากรและการสเกล
|
||||
|
||||
# API Gateway คืออะไร?
|
||||
## API Gateway คืออะไร?
|
||||
|
||||
API Gateway คือส่วนกลางในการจัดการการสื่อสารระหว่างผู้ใช้ (Client) และบริการต่างๆ ภายในระบบที่ใช้สถาปัตยกรรมแบบ Microservices โดยมีหน้าที่รับคำขอจากผู้ใช้ ส่งต่อคำขอนั้นไปยังบริการต่างๆ ที่เกี่ยวข้อง และส่งผลลัพธ์กลับไปยังผู้ใช้ ซึ่งช่วยให้การสื่อสารภายในระบบเป็นไปอย่างมีประสิทธิภาพและง่ายต่อการจัดการ นอกจากนี้ API Gateway ยังมีฟังก์ชันในการจัดการการควบคุมการเข้าถึง (Access Control), การรักษาความปลอดภัย (Security), การจัดการการสเกล (Load Balancing) และการแคชข้อมูล (Caching) ทำให้เป็นส่วนสำคัญของระบบ Microservices ที่มีการจัดการหลายบริการ
|
||||
|
||||
# หน้าที่และการทำงานของ API Gateway
|
||||
### หน้าที่และการทำงานของ API Gateway
|
||||
|
||||
1. การควบคุมเส้นทาง (Routing): API Gateway ทำหน้าที่จัดการเส้นทางของคำขอที่เข้ามา โดยจะแยกแยะและส่งคำขอนั้นไปยังบริการที่เกี่ยวข้อง เช่น หากผู้ใช้ขอข้อมูลผู้ใช้งาน API Gateway จะส่งคำขอนั้นไปยัง User Service เป็นต้น
|
||||
|
||||
|
|
@ -205,7 +205,7 @@ API Gateway คือส่วนกลางในการจัดการ
|
|||
|
||||
7. การตรวจสอบและวิเคราะห์ (Monitoring & Analytics): API Gateway สามารถรวบรวมข้อมูลการใช้งาน เช่น จำนวนคำขอ, ระยะเวลาการตอบกลับ, และสถิติการใช้งาน ซึ่งข้อมูลเหล่านี้สามารถนำไปวิเคราะห์เพื่อปรับปรุงบริการและแก้ไขปัญหาที่อาจเกิดขึ้นได้
|
||||
|
||||
# ข้อดีของการใช้ API Gateway
|
||||
### ข้อดีของการใช้ API Gateway
|
||||
|
||||
1. เพิ่มความปลอดภัยให้กับระบบ: API Gateway ช่วยให้สามารถรวมการจัดการด้านความปลอดภัยไว้ในจุดเดียว เช่น การจัดการการตรวจสอบสิทธิ์ (Authentication), การกำหนดนโยบายการเข้าถึง (Authorization Policy) ช่วยลดความเสี่ยงจากภัยคุกคาม
|
||||
|
||||
|
|
@ -217,7 +217,7 @@ API Gateway คือส่วนกลางในการจัดการ
|
|||
|
||||
5. รวมการตรวจสอบการใช้งานไว้ในจุดเดียว: ช่วยให้นักพัฒนาสามารถตรวจสอบการใช้งานระบบแบบรวมศูนย์ ซึ่งช่วยในการตรวจหาปัญหาได้รวดเร็ว รวมถึงการบันทึกข้อมูลการใช้งานที่ช่วยวิเคราะห์และปรับปรุงบริการได้
|
||||
|
||||
# ข้อเสียของการใช้ API Gateway
|
||||
### ข้อเสียของการใช้ API Gateway
|
||||
|
||||
1. เป็น Single Point of Failure: หาก API Gateway เกิดปัญหา ระบบทั้งหมดอาจไม่สามารถทำงานได้ ดังนั้นจึงต้องมีการวางแผนการทำงานแบบสำรอง (Redundancy) หรือการกระจายการใช้งานเพื่อป้องกันปัญหา
|
||||
|
||||
|
|
@ -225,7 +225,7 @@ API Gateway คือส่วนกลางในการจัดการ
|
|||
|
||||
3. เกิดความล่าช้าเพิ่มขึ้น (Latency): การที่คำขอทั้งหมดต้องผ่าน API Gateway ก่อนที่จะไปยังบริการปลายทาง อาจทำให้เกิดความล่าช้าในระบบโดยเฉพาะหากมีการแปลงข้อมูลหรือแคชที่ซับซ้อน
|
||||
|
||||
# การใช้งาน API Gateway ในโลกจริง
|
||||
### การใช้งาน API Gateway ในโลกจริง
|
||||
|
||||
- การจัดการการเข้าถึงหลายบริการในระบบ Microservices: API Gateway ช่วยให้ผู้ใช้สามารถเข้าถึงบริการต่างๆ ของระบบที่มีโครงสร้างแบบ Microservices ได้ผ่านจุดเดียว เช่น การเข้าสู่ระบบผู้ใช้ ที่ API Gateway สามารถรับคำขอและส่งต่อไปยังบริการย่อย เช่น บริการตรวจสอบตัวตน บริการจัดการข้อมูลผู้ใช้ เป็นต้น
|
||||
|
||||
|
|
@ -235,7 +235,7 @@ API Gateway คือส่วนกลางในการจัดการ
|
|||
|
||||
API Gateway เป็นส่วนสำคัญในระบบ Microservices ที่ช่วยจัดการการสื่อสารระหว่างผู้ใช้และบริการต่างๆ ภายในระบบ ทำให้การจัดการการเข้าถึงมีความปลอดภัย และระบบมีความเป็นระเบียบและสามารถปรับแต่งตามความต้องการได้ เช่น การควบคุมการเข้าถึง การแปลงข้อมูล การจัดการการแคชและการกระจายโหลด การใช้ API Gateway ช่วยให้การจัดการระบบขนาดใหญ่ที่มีหลายบริการเป็นไปอย่างมีประสิทธิภาพ
|
||||
|
||||
# สรุปการนำเอาเทคโนโลยี Container, Docker, Microservices และ API Gateway มาใช้ในการพัฒนาระบบ
|
||||
## สรุปการนำเอาเทคโนโลยี Container, Docker, Microservices และ API Gateway มาใช้ในการพัฒนาระบบ
|
||||
|
||||
การใช้ Docker Containers, Microservices, และ API Gateway เป็นแนวทางการพัฒนาแอปพลิเคชันในยุคปัจจุบันเป็นแนวทางที่ได้รับความนิยมสูงมาก เนื่องจากมันช่วยปรับปรุงในหลายๆ ด้าน ทั้งในเรื่อง ประสิทธิภาพ, ความทันสมัย, และ ความปลอดภัย นี่คือการสรุปข้อดีของการใช้แนวทางเหล่านี้:
|
||||
|
||||
|
|
@ -261,26 +261,28 @@ API Gateway เป็นส่วนสำคัญในระบบ Microservi
|
|||
|
||||
การนำเทคโนโลยีเหล่านี้มาปรับใช้ในการพัฒนาระบบทำให้การสร้างแอปพลิเคชันที่มีความยืดหยุ่นสูง, ปรับขยายได้ตามต้องการ และตอบสนองต่อความปลอดภัยในยุคดิจิทัลได้เป็นอย่างดี
|
||||
|
||||
# ขั้นตอนการติดตั้งระบบ
|
||||
## ขั้นตอนการติดตั้งระบบ
|
||||
|
||||
ผู้อ่านจำเป็นต้องมีความรู้และเข้าใจคำสั่ง และระบบไฟล์ของ Linux เป็นอย่างดีมาก่อน เอกสารจะแสดงวิธีการติดตั้งระบบของ BMA HRMS บนเทคโนโลยีคอนเทนเนอร์ มีการปูพื้นคำสั่งพื้นฐานของ Docker ที่จำเป็นให้ ลักษณะการติดตั้งและใช้งานจะอยู่ในรูปแบบเดียวกัน ทำให้สามารถจัดการบริการเพิ่มเติมที่จะเกิดขึ้นอนาคตได้ นอกจากการใช้งานผ่านคำสั่งแล้วสามารถใช้ Portainer จัดการผ่าน Web UI ได้ การติดตั้งจะอยู่ในเอกสารนี้
|
||||
|
||||

|
||||

|
||||
|
||||
## Linux VM
|
||||
เครื่องโฮสเป็น debian 12 แบบมาตรฐาน ตั้งค่า locale และ Time Zone ให้เหมาะสำหรับประเทศไทย
|
||||
*ในสารนี้ในรูปแบบ Web, MS Word หรือ PDF อาจจะมีการบังคับตัดขึ้นบรรทัดใหม่, ใส่รูปแบบข้อความ, White space ฯลฯ ซึ่งอาจจะกระทบการทำงานของคำสั่ง หรือไฟล์สำหรับตั้งค่าระบบได้ การ Copy/Pate ควรตรวจสอบความถูกต้องทุกครั้งก่อนนำไปใช้งาน เอกสารจาก Markdown หรือไฟล์สคริปต์หรือคอนฟิกของระบบจริงๆ จะมีโอกาสผิดพลาดน้อยกว่า*
|
||||
|
||||
### Linux VM
|
||||
เครื่องโฮสเป็น debian 12 แบบมาตรฐาน ติดตั้งด้วยวิธีการของ Data Center ตั้งค่า locale และ Time Zone ให้เหมาะสำหรับประเทศไทย
|
||||
```
|
||||
sudo dpkg-reconfigure locales
|
||||
sudo timedatectl set-timezone Asia/Bangkok
|
||||
date
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
## ติดตั้ง Docker
|
||||
### ติดตั้ง Docker
|
||||
|
||||
Docker คอนเทนเนอร์สามารถเรียนรู้ ตั้งค่า ดูแล รักษาได้ง่ายและรวดเร็ว รองรับการขยายตัว สามารถเพิ่มคลัสเตอร์ได้ง่าย และสามารถปรับเปลี่ยนเป็น Kubernates ได้ในอนาคต
|
||||
สำหรับเอกสารนี้จะเป็นการติดตั้ง Docker บน debian 12 สำหรับบนวินโดว์(เพื่อการทดสอบเท่านั้น)ให้ติดตั้ง docker บน WSL2
|
||||
|
|
@ -297,7 +299,7 @@ sudo usermod -aG sudo user_name
|
|||
|
||||
แทน user_name ด้วยยูสเซอร์ที่ใช้ดูแลระบบ ในตัวอย่างจะให้อยู่ในกลุ่ม docker และ sudo เพื่อให้มีสิทธิ์ในจัดการ service และไฟล์ที่เกิดจาก docker
|
||||
|
||||
## คำสั่ง Docker พื้นฐาน
|
||||
### คำสั่ง Docker พื้นฐาน
|
||||
|
||||
คำสั่งพื้นฐานของ docker ที่ใช้
|
||||
|
||||
|
|
@ -309,11 +311,11 @@ docker network ls # แสดงรายการเน็ต
|
|||
docker network create [network_name] # สร้างเน็ตเวิร์กของ docker
|
||||
```
|
||||
|
||||
# การใช้งานไฟล์ Docker Compose
|
||||
## Docker Compose File คืออะไร?
|
||||
### การใช้งานไฟล์ Docker Compose
|
||||
#### Docker Compose File คืออะไร?
|
||||
**Docker Compose File** เป็นไฟล์ที่มีรูปแบบเป็น YAML (มักมีชื่อไฟล์ docker-compose.yml หรือ compose.yaml) ซึ่งใช้สำหรับการกำหนดค่าและจัดการการทำงานของ **หลายคอนเทนเนอร์** ในโปรเจกต์เดียวกัน ช่วยให้นักพัฒนาสามารถกำหนดบริการต่างๆ ที่คอนเทนเนอร์จะต้องรัน เช่น ฐานข้อมูล เว็บเซิร์ฟเวอร์ และบริการอื่นๆ ได้ในที่เดียว
|
||||
|
||||
## Docker Compose File มีไว้ทำไม?
|
||||
#### Docker Compose File มีไว้ทำไม?
|
||||
1. จัดการบริการหลายตัวพร้อมกัน
|
||||
เมื่อโปรเจกต์มีหลายคอนเทนเนอร์ เช่น ฐานข้อมูล (MySQL), แอปพลิเคชัน (Node.js), และเครื่องมืออื่นๆ Docker Compose จะช่วยจัดการทุกอย่างในไฟล์เดียว
|
||||
|
||||
|
|
@ -326,7 +328,7 @@ docker network create [network_name] # สร้างเน็ตเวิร
|
|||
4. ทำให้การพกพาและย้ายโปรเจกต์ง่ายขึ้น
|
||||
แชร์ docker-compose.yml ไฟล์ให้ผู้อื่นเพื่อสร้างสภาพแวดล้อมที่เหมือนกันได้อย่างง่ายดาย
|
||||
|
||||
## Docker Compose File ใช้งานเพื่ออะไร?
|
||||
#### Docker Compose File ใช้งานเพื่ออะไร?
|
||||
1. การตั้งค่าบริการในระบบที่ซับซ้อน
|
||||
เช่น การตั้งค่าแอปพลิเคชันที่ต้องใช้ฐานข้อมูล Redis และ RabbitMQ ร่วมกัน
|
||||
|
||||
|
|
@ -339,7 +341,7 @@ docker network create [network_name] # สร้างเน็ตเวิร
|
|||
4. รองรับการสเกลระบบ
|
||||
สามารถเพิ่มจำนวนคอนเทนเนอร์ในแต่ละบริการได้ง่ายโดยใช้ docker-compose up --scale
|
||||
|
||||
## ตัวอย่างของไฟล์ docker-compose.yaml
|
||||
#### ตัวอย่างของไฟล์ docker-compose.yaml
|
||||
เป็นตัวอย่างแบบง่ายเพื่อใช้งาน เซอร์วิส web ใช้อิมเมจโปรแกรม nginx เนื้อหาไฟล์ในโฟลเดอร์ ./html จะไปปรากฏบนคอนเทนเนอร์ที่ /usr/share/nginx/html เปิดพอร์ต 9082 บนเครื่องโฮส ถ้าไม่สั่งหยุดการทำงาน nginx จะเริ่มตัวเองเองถ้าโฮสเปิดขึ้นเครื่องใหม่ ทำงานในเน็ตเวิร์ก hrms ที่สร้างจากภายนอก
|
||||
|
||||
การใช้งานใช้เว็บเบราว์เซอร์ไปที่ http://IP:9082
|
||||
|
|
@ -360,7 +362,7 @@ networks:
|
|||
external: true
|
||||
```
|
||||
|
||||
## การใช้งานคำสั่ง docker compose
|
||||
#### การใช้งานคำสั่ง docker compose
|
||||
|
||||
docker compose จะรันคอนเทนเนอร์ของ docker หลายๆตัวพร้อมกันได้ โดยดูการตั้งค่าจากไฟล์ compose.yaml หรือ docker-compose.yaml
|
||||
ที่อยู่ในโฟลเดอร์ที่เรียกคำสั่ง ในการทำงานทั่วไปเพื่อง่ายต่อการใช้งานจะใช้ docker compose เป็นหลัก ซึ่งจะมีผลเฉพาะ service ที่เขียนไว้ในไฟล์ compose
|
||||
|
|
@ -817,6 +819,10 @@ MANAGEMENT_ROLE=storage_management
|
|||
|
||||
docker/bmahrms/be.env แก้ค่าของ DB_PASSWORD,AUTH_PUBLIC_KEY, MINIO_KEY, MINIO_SECRET, STORAGE_SECRET,KC_SERVICE_ACCOUNT_SECRET,REDIS_HOST,KEYCLOAK_KEY,AUTH_PUBLIC_KEY, PUBLIC_KEY
|
||||
|
||||
ค่าของ public key ของ keycloak ให้สำเนาจากส่วนนี้
|
||||
|
||||

|
||||
|
||||
```
|
||||
# Backend Global
|
||||
TZ=Asia/Bangkok
|
||||
|
|
@ -1262,7 +1268,7 @@ services:
|
|||
## Configuration
|
||||
|
||||
การตั้งค่าเฉพาะของแต่ละ service มีสองส่วน
|
||||
- เป็นการตั้งค่าเฉพาะโปรแกรมแตกต่างกันไปตามโปรแกรม
|
||||
- เป็นการตั้งค่าเฉพาะโปรแกรม จะแตกต่างกันไปตามโปรแกรม
|
||||
- ตั้งค่า route สำหรับโดเมนต่างๆ (สำหรับ Frontend) และ Microservice (เป็นการรวมหลาย backend เข้าในโดเมนเดียวกันแต่อยู่คนละ Subfolder)
|
||||
|
||||
### Keycloak (bmahrms-id)
|
||||
|
|
@ -1478,7 +1484,7 @@ curl http://127.0.0.1:9180/apisix/admin/consumers \
|
|||
|
||||
```
|
||||
|
||||
# บทสรุป
|
||||
## บทสรุป
|
||||
ในยุคดิจิทัลที่เทคโนโลยีเปลี่ยนแปลงอย่างรวดเร็ว การออกแบบระบบซอฟต์แวร์ให้ตอบสนองความต้องการที่ซับซ้อนและเปลี่ยนแปลงได้ตลอดเวลาเป็นสิ่งจำเป็น สถาปัตยกรรม Microservice เป็นหนึ่งในแนวทางที่ได้รับการยอมรับอย่างกว้างขวาง เนื่องจากมีจุดเด่นด้านความยืดหยุ่น การปรับขยาย และการแยกส่วนการทำงานของระบบให้เป็นอิสระต่อกัน การนำเทคโนโลยีทันสมัยอย่าง Docker, RabbitMQ, Keycloak และ MinIO มาร่วมใช้งานใน Microservice ทำให้ระบบมีประสิทธิภาพยิ่งขึ้น ทั้งในด้านการพัฒนา การจัดการ และการรองรับการใช้งานในระดับสูง
|
||||
|
||||
การผสมผสานเทคโนโลยีอย่าง Docker, RabbitMQ, Keycloak และ MinIO ช่วยยกระดับความสามารถของระบบให้สอดคล้องกับความต้องการทางธุรกิจในยุคที่การแข่งขันสูง สถาปัตยกรรมนี้ไม่เพียงตอบสนองต่อความซับซ้อนของการพัฒนา แต่ยังช่วยเพิ่มความเร็ว ความเสถียร และความปลอดภัยของระบบ ทำให้ Microservice เป็นทางเลือกที่ทันสมัยและเหมาะสมสำหรับการพัฒนาระบบในยุคปัจจุบัน
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 134 KiB |
BIN
public/images/buildanddeploy/chapter4-2_build-locale-eng-US.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
public/images/buildanddeploy/chapter4-3_build-locale-final.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 106 KiB |