PlusMagi's Blog By Pitt Phunsanit Backend,Cloud Computing,Database CI/CD 101: ความแตกต่างระหว่าง Continuous Integration, Continuous Delivery และ Continuous Deployment

CI/CD 101: ความแตกต่างระหว่าง Continuous Integration, Continuous Delivery และ Continuous Deployment

ในยุคที่การเปลี่ยนแปลงของซอฟต์แวร์เกิดขึ้นอย่างรวดเร็ว ความสามารถในการส่งมอบฟีเจอร์ใหม่ๆ ให้ถึงมือผู้ใช้งานได้อย่างรวดเร็วและเชื่อถือได้คือหัวใจสำคัญของความสำเร็จทางธุรกิจ การพัฒนาระบบแบบเดิมที่ต้องรอรอบการปล่อยเวอร์ชัน (Release Cycle) ที่ยาวนาน ทำให้เกิดความเสี่ยงและคอขวดมากมาย การทำความเข้าใจแนวคิดของการทำงานอัตโนมัติในการพัฒนา (DevOps) จึงเป็นสิ่งจำเป็นสำหรับวิศวกรทุกคน โดยเฉพาะอย่างยิ่งเมื่อต้องทำงานกับระบบฐานข้อมูลที่ซับซ้อนอย่าง PostgreSQL

CI/CD คืออะไร? การทำงานอัตโนมัติในการพัฒนาซอฟต์แวร์

CI/CD คือชุดแนวปฏิบัติและเครื่องมือที่ช่วยให้ทีมพัฒนาสามารถรวมโค้ด (Integrate) ทดสอบ และส่งมอบ (Deliver/Deploy) การเปลี่ยนแปลงได้อย่างสม่ำเสมอและอัตโนมัติ หัวใจหลักของกระบวนการนี้คือการลดความเสี่ยงจากการทำงานร่วมกันของโค้ดจำนวนมาก

1. Continuous Integration (CI): รากฐานของการรวมโค้ด

CI คือจุดเริ่มต้นที่สำคัญที่สุด นักพัฒนาทุกคนต้องรวมโค้ดของตนเข้าสู่ Repository หลักอย่างสม่ำเสมอ และระบบ CI จะทำการรันชุดทดสอบอัตโนมัติ (Automated Tests) ทันที เพื่อให้มั่นใจว่าการเปลี่ยนแปลงล่าสุดไม่ได้ทำให้ส่วนอื่น ๆ ของระบบพัง (Broken Build) เมื่อใช้ PostgreSQL ใน CI เรามักจะเน้นการทดสอบ Schema Migration และ Unit Test ของฟังก์ชันฐานข้อมูล

ตัวอย่างการทดสอบ Schema Migration ใน CI:

SQL

-- ตรวจสอบว่าการเพิ่มคอลัมน์ใหม่ไม่ทำให้ Query เดิมพัง<br>ALTER TABLE users ADD COLUMN status VARCHAR(50);

2. Continuous Delivery (CDel): พร้อมส่งมอบด้วยการอนุมัติของมนุษย์

CDel คือการที่ทีมมั่นใจว่าซอฟต์แวร์พร้อมที่จะถูกปล่อยไปยัง Production ได้ตลอดเวลา แต่ยังคงต้องมีขั้นตอนการอนุมัติจากมนุษย์ (Manual Approval) ก่อนที่จะกดปุ่ม Deploy จริงๆ ขั้นตอนนี้มักใช้สำหรับการทดสอบในสภาพแวดล้อม Staging ที่เลียนแบบ Production อย่างสมบูรณ์

ตัวอย่างการทดสอบ Integration Test ใน CDel:

เราอาจรันสคริปต์ที่ทดสอบการทำงานร่วมกันของโมดูลต่างๆ โดยใช้ข้อมูลตัวอย่างที่กำหนดไว้

SQL

SELECT * FROM users WHERE user_id IN ('1', '2', '3');

3. Continuous Deployment (CDep): อัตโนมัติถึง Production

CDep คือระดับสูงสุดของการพัฒนาอัตโนมัติ หมายถึงการที่โค้ดที่ผ่านการทดสอบทั้งหมด (ทั้ง CI และ CDel) จะถูกปล่อยไปยัง Production โดยอัตโนมัติ 100% โดยไม่มีการแทรกแซงจากมนุษย์ใดๆ ซึ่งต้องอาศัยความเชื่อมั่นในระบบทดสอบที่สูงมาก

ตัวอย่างการ Deploy Function ใหม่ใน CDep:

เมื่อระบบมั่นใจว่าฟังก์ชันใหม่ทำงานได้ถูกต้อง จะมีการ Deploy โค้ดที่อัปเดต Stored Procedure หรือ Function ทันที

SQL

CREATE OR REPLACE FUNCTION calculate_tax(amount NUMERIC) RETURNS NUMERIC AS $$ BEGIN RETURN amount * 0.07; END; $$ LANGUAGE plpgsql;

ตารางสรุปความแตกต่างที่สำคัญ

  • CI: เน้นการรวมโค้ดและการทดสอบเบื้องต้น (Unit Tests)
  • CDel: พร้อม Deploy แต่ต้องรอการอนุมัติจากคน (Manual Gate)
  • CDep: Deploy อัตโนมัติ 100% ไม่มีคนมาอนุมัติ

บทสรุป

CI/CD ไม่ใช่แค่เครื่องมือ แต่เป็นวัฒนธรรมการทำงานที่เน้นการส่งมอบคุณค่าทางธุรกิจอย่างต่อเนื่อง การเข้าใจความแตกต่างระหว่าง CI, CDel และ CDep จะช่วยให้ทีมพัฒนาสามารถวางแผน Pipeline การทำงานได้อย่างเหมาะสม เพื่อให้มั่นใจว่าการเปลี่ยนแปลงทุกครั้ง ไม่ว่าจะเป็นการอัปเดต Schema หรือการเพิ่มฟังก์ชันใหม่ใน PostgreSQL จะถูกส่งมอบอย่างรวดเร็ว ปลอดภัย และมีประสิทธิภาพสูงสุด

Exit mobile version