DevOps (Development + Operations) เป็นหนึ่งในคำที่คนสายไอทีพูดถึงบ่อยที่สุด แต่หลายคนอาจจะยังเห็นภาพไม่ชัดเจนว่าตกลงแล้วคนทำ DevOps หรือตำแหน่ง DevOps Engineer เขานั่งทำอะไรกันแน่ในแต่ละวัน?
ถ้าให้สรุปสั้น ๆ DevOps คือ “สะพานเชื่อม” ที่ทลายกำแพงระหว่างฝั่งพัฒนาซอฟต์แวร์ (Developer) และฝั่งดูแลระบบ (Operations) เพื่อให้ทีมสามารถส่งมอบงานได้เร็วขึ้น เสถียรขึ้น และมีข้อผิดพลาดน้อยที่สุดครับ
นี่คือหน้าที่หลัก ๆ ว่าคนทำ DevOps เขาทำอะไรกันบ้าง
วางระบบ CI/CD (Continuous Integration / Continuous Deployment)
นี่คือหัวใจหลักของ DevOps เลยก็ว่าได้ แทนที่จะให้ Developer ต้องมานั่ง Compile โค้ด, รัน Test, และกดอัปโหลดไฟล์ขึ้นเซิร์ฟเวอร์เองแบบแมนนวล DevOps จะสร้าง Automated Pipeline ขึ้นมา
- CI (Continuous Integration): ทุกครั้งที่ Dev ตรวจโค้ดเสร็จและ Push เข้าระบบ ระบบจะดึงโค้ดไปรันสคริปต์ตรวจสอบความถูกต้อง (Linting) และรัน Unit Test อัตโนมัติทันที เพื่อเช็กว่าไม่มีอะไรพัง
- CD (Continuous Deployment): ถ้าเทสผ่านหมด ระบบจะนำโค้ดนั้นไป Deploy ขึ้นเซิร์ฟเวอร์ (Staging หรือ Production) ให้โดยอัตโนมัติ
เครื่องมือที่ใช้บ่อย: Jenkins, GitLab CI, GitHub Actions, ArgoCD
จัดการโครงสร้างระบบด้วยโค้ด (Infrastructure as Code – IaC)
สมัยก่อนเวลาจะตั้งเซิร์ฟเวอร์ใหม่ เราต้องคลิกสร้างในหน้าเว็บ Cloud หรือเดินไปเปิดเครื่องในห้อง Data Center แต่สาย DevOps จะมองโครงสร้างพื้นฐาน (Infrastructure) เป็นโค้ดทั้งหมด
- สามารถเขียนสคริปต์เพื่อสั่งสร้าง Server, Database, เครือข่าย (Network) หรือ Firewall ได้ภายในไม่กี่นาที
- ข้อดีคือทำซ้ำได้ง่ายมาก (Replicable) และถ้ามีปัญหาก็สามารถย้อนกลับ (Rollback) ไปเวอร์ชันก่อนหน้าได้เหมือนการเขียนโค้ด
เครื่องมือที่ใช้บ่อย: Terraform, OpenToFu, Ansible
ทำระบบ Containerization และ Orchestration
เพื่อแก้ปัญหาคลาสสิกของ Developer ที่ชอบบอกว่า “เครื่องผมรันได้นะ แต่ทำไมบนเซิร์ฟเวอร์รันไม่ได้?” DevOps จึงนำเทคโนโลยี Container เข้ามาช่วย
- แพ็กโค้ดและสภาพแวดล้อมทั้งหมด (Environment) มัดรวมกันเป็นก้อน (Container) เพื่อให้มั่นใจว่ารันที่ไหนก็ผลลัพธ์เหมือนกัน
- เมื่อระบบใหญ่ขึ้น มีเป็นร้อยเป็นพัน Container ก็ต้องใช้ระบบ Orchestration ในการจัดการ คอยสั่งเปิด-ปิด ย้ายเครื่อง หรือสเกลระบบอัตโนมัติเวลามีผู้ใช้งานเข้ามาเยอะ ๆ
เครื่องมือที่ใช้บ่อย: Docker, Kubernetes (K8s)
เฝ้าระวังและเก็บสถิติระบบ (Monitoring and Logging)
ระบบที่เสถียรไม่ใช่ระบบที่ไม่เคยล่ม แต่คือระบบที่เวลามีปัญหาแล้วทีมรู้ตัวก่อนลูกค้า และแก้ไขได้ทันท่วงที DevOps มีหน้าที่วางระบบ Monitor เพื่อดูความพร้อมใช้งาน
- Metrics: ดูภาพรวมของเซิร์ฟเวอร์ เช่น CPU, RAM, Network เกินขีดจำกัดไหม
- Logging: รวม Log จากทุก ๆ บริการมารวมไว้ที่เดียว เพื่อให้ง่ายต่อการค้นหาต้นตอเวลาเกิด Error
- Alerting: ตั้งระบบแจ้งเตือน (เช่น เข้า Slack หรือ LINE) ทันทีเมื่อระบบเกิดสิ่งผิดปกติ
เครื่องมือที่ใช้บ่อย: Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana)
อ่านเพิ่มเติม