นี่คือสรุปเนื้อหาโดยละเอียดจากการบรรยายของคุณเม (Cloud Engineer จาก Krungsri Nimble) โดยแบ่งเป็นหัวข้อหลักพร้อมรายละเอียดเชิงลึกครับ
DevOps คือวัฒนธรรม: ไม่ใช่แค่ชื่อตำแหน่ง แต่เป็นกระบวนการที่ทีม Development (ผู้เขียนโค้ด/ออกแบบ) และทีม Operation (ผู้วางระบบเซิร์ฟเวอร์) ทำงานร่วมกันเพื่อลดช่องว่าง (Gap) ในการทำงาน
CI (Continuous Integration): คือการนำโค้ดที่นักพัฒนาเขียนมา Build และตรวจสอบคุณภาพ (Code Quality) รวมถึงหาข้อบกพร่องของซอฟต์แวร์โดยอัตโนมัติ
- CD (Continuous Deployment & Delivery):
Deployment: การนำแอปพลิเคชันขึ้นเซิร์ฟเวอร์โดยอัตโนมัติหลังจากผ่านขั้นตอน CI
Delivery: ความสามารถในการส่งมอบงานให้ลูกค้าได้อย่างต่อเนื่องและรวดเร็ว
Infrastructure as Code (IaC): การจัดการโครงสร้างพื้นฐาน (เช่น VM หรือ Server) ผ่านการเขียนโค้ดแทนการกดตั้งค่าด้วยมือ
-
ช่วยให้เห็นประวัติการแก้ไขผ่าน Git (Version Control)
-
ลดความผิดพลาดจากมนุษย์ (Human Error) และสามารถทำซ้ำ (Reproducible) ได้ง่าย
ข้อดีของ Cloud: มีความยืดหยุ่นสูง จ่ายตามการใช้งานจริง (Pay-per-use) และขยายระบบ (Scale) ได้รวดเร็ว
-
การเพิ่มทรัพยากรบน Cloud ทำได้ในไม่กี่นาที ในขณะที่ On-premise อาจใช้เวลาจัดซื้อและติดตั้งนาน 1-2 เดือน
-
ประเภทของ Cloud:
Public Cloud: เข้าถึงได้ทั่วโลกผ่านอินเทอร์เน็ต เช่น AWS, Azure, Google Cloud
Local Cloud: ผู้ให้บริการภายในประเทศ เช่น INET, AIS, True IDC
Private Cloud: ระบบที่ล้อมรั้วไว้ใช้เฉพาะในองค์กรเพื่อความปลอดภัยสูงสุด ไม่สามารถเข้าถึงจากอินเทอร์เน็ตทั่วไปได้
Hybrid Cloud: การใช้งานร่วมกันระหว่าง Public และ Private Cloud
- Service Models:
IaaS (Infrastructure as a Service): เช่าใช้ทรัพยากรพื้นฐาน เช่น Storage, Network และ VM
PaaS (Platform as a Service): เช่าใช้แพลตฟอร์มสำหรับรันแอปพลิเคชัน เช่น Google Service หรือ App Service
SaaS (Software as a Service): ซอฟต์แวร์สำเร็จรูปพร้อมใช้งาน เช่น Office 365, อีเมล, ปฏิทิน
- เครื่องมือหลัก (Stack):
GitLab: ใช้เก็บ Source Code และทำ Version Control
Jenkins: ใช้เป็นเครื่องมือหลักในการรัน Pipeline สำหรับ Build และ Deploy
Harbor: ระบบเก็บ Docker Image แบบ Private (ใช้แทน Docker Hub เพื่อความปลอดภัยและความเป็นส่วนตัวขององค์กร)
SonarQube: ตรวจสอบคุณภาพโค้ด (Code Smell/Bugs) โดยทีมจะตั้งเกณฑ์ว่าต้องได้คะแนน "A" เท่านั้นถึงจะผ่าน
การสแกนความปลอดภัย: ใช้ Dependency Check เพื่อค้นหาช่องโหว่ (CVE) ใน Docker Image ก่อนนำไปใช้งาน
- บริการ AWS ที่สำคัญ:
VPC (Virtual Private Cloud): เปรียบเสมือนการแบ่งห้องหรือคณะในมหาวิทยาลัย เพื่อแยกโปรเจกต์ออกจากกัน
EC2: เครื่องเซิร์ฟเวอร์เสมือน (VM) สำหรับรันระบบ
S3: ระบบเก็บข้อมูลประเภท Object Storage (ไฟล์รูปภาพ, วิดีโอ)
EKS (Elastic Kubernetes Service): บริการจัดการ Kubernetes บน AWS
หัวใจสำคัญ: ทำหน้าที่เป็น Orchestrator หรือวาทยกรที่คอยควบคุมจังหวะการทำงานของคอนเทนเนอร์จำนวนมาก
- ความสามารถหลัก:
Auto Scaling: เพิ่ม/ลดจำนวนโหนดอัตโนมัติตามโหลดของผู้ใช้งาน (เช่น เพิ่มโหนดในช่วงเวลาที่คนเข้าแอปธนาคารเยอะๆ และลดลงเมื่อคนใช้น้อยเพื่อประหยัดค่าใช้จ่าย)
Self-Healing: เมื่อระบบตรวจพบว่าคอนเทนเนอร์ทำงานผิดปกติ (Unhealthy) จะทำการลบและสร้างใหม่ให้เองโดยอัตโนมัติ
Zero Downtime: การอัปเดตเวอร์ชันใหม่จะทำแบบค่อยเป็นค่อยไป ทำให้ผู้ใช้งานไม่รู้สึกว่าระบบหยุดทำงาน
Load Balancing: กระจายการทำงานไปยังคอนเทนเนอร์หลายๆ ตัวเพื่อให้ระบบรับโหลดได้ดีขึ้น
SLA (Service Level Agreement): ธนาคารมีข้อตกลงระดับการให้บริการที่เข้มงวด เช่น ระบบล่มได้ไม่เกินกี่นาทีต่อปี (หากเกินอาจมีค่าปรับหรือผลกระทบสูง)
- DC/DR (Data Center & Disaster Recovery):
DC: ศูนย์ข้อมูลหลัก
DR: ศูนย์ข้อมูลสำรองกรณีเกิดภัยพิบัติ โดยปกติธนาคารจะมีสำรองไว้อย่างน้อย 3 แห่ง
- ลำดับการซัพพอร์ต (Support Tiers):
Tier 1: Call Center รับเรื่อง
Tier 2: ทีม Monitor ตรวจสอบเบื้องต้น
Tier 3: ทีม Engineer (เช่น ทีมของคุณเม) ที่เป็นคน Implement และแก้ปัญหาเชิงลึก รวมถึงสลับระบบไปยังศูนย์สำรอง
การสื่อสาร (Communication): เป็นทักษะอันดับหนึ่ง เพราะต้องทำหน้าที่เป็นคนกลางในการ "แปลภาษาเทคนิค" ให้เป็น "ภาษาคน" เพื่อคุยกับทีม PM, Business และ Developer ให้เข้าใจตรงกัน
การเรียนรู้ด้วยตัวเอง: ทักษะการรีเสิร์ชเครื่องมือใหม่ๆ อย่างรวดเร็วเป็นสิ่งจำเป็น เพราะเทคโนโลยี Cloud เปลี่ยนแปลงตลอดเวลา
ความรู้พื้นฐาน: ควรศึกษาเรื่อง Network (OSI 7 Layers) ให้แม่นยำ เพราะจะช่วยให้ Debug ปัญหาได้ง่ายขึ้นมาก
คุณสนใจที่จะให้ผมช่วยเจาะลึกรายละเอียดเกี่ยวกับขั้นตอนการทำ Pipeline ใน Jenkins หรือวิธีการตั้งค่า VPC บน AWS เพิ่มเติมไหมครับ?