ป้ายกำกับ: Cloud

  • DevOps: DevOps (Development + Operations) คืออะไร

    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)


    อ่านเพิ่มเติม