Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

ปรับปรุงคุณภาพของ Software ด้วย Continuous Integration Process กันนะ

$
0
0

build

build วันนี้มีโอกาสได้แบ่งปันความรู้เรื่อง Continuous Integration (CI) สำหรับปรับปรุงคุณภาพของการพัฒนา Software ให้ดีขึ้น โดยหัวใจของ CI นั้นประกอบไปด้วย 2 คำคือ
  1. Continuous หรือ Frequent คือ ทำบ่อย ๆ อย่างต่อเนื่อง
  2. Integrate หรือ Merge คือ การรวมกันของสิ่งต่าง ๆ ในระบบ
รวมกันก็หมายความว่า ให้ทำการรวมกันบ่อย ๆ อย่างต่อเนื่อง มีคำถามที่น่าสนใจคือ
  • อะไรที่ต้องนำมารวมกันบ้าง ?
  • ทำการรวมกันที่ไหน ?
ตอบได้ง่าย ๆ คือ
  • source code ไงล่ะ
  • รวมกันที่ Version Control System หรือ Repository ไงละ
ดังนั้น CI เป็นกระบวนการที่นำการเปลี่ยนแปลงต่าง ๆ ของ source code ไปรวมกันไว้ที่ Version Control System บ่อย ๆ และ อย่างต่อเนื่อง
ปล. ถ้าใครไม่ใช้งาน Version Control System เช่น Git, SVN เป็นต้น ก็น่าจะบาปอย่างแรงส์ !!

สิ่งที่ขาดไม่ได้เลยในกระบวนการของ CI คือ คำว่าคุณภาพ

เราจะรู้ได้อย่างไรว่า แต่ละการเปลี่ยนแปลงนั้น
  • ระบบยังสามารถทำงานได้อย่างถูกต้องหรือไม่ ?
  • ระบบยังสามารถทำงานได้ตามความคาดหวังหรือไม่ ?
ขอเน้นย้ำว่าทุกการเปลี่ยนแปลงนะ หนึ่งในนั้นคือ การทดสอบนั่นเอง แน่นอนว่า ต้องเป็นการทดสอบแบบอัตโนมัติอย่างแน่นอน (Automated testing) ไม่ว่าจะเป็น Unit testing, Integration testing และ Functional testing ส่งผลให้สามารถทดสอบได้บ่อย ๆ ส่งผลให้สามารถรู้สถานะของระบบได้ตลอดเวลา ส่งผลให้ได้ feedback ของระบบอยู่อย่างเสมอ ไม่ว่าจะดีหรือร้าย ทำให้ทุกคนเห็นความคืบหน้าของการพัฒนา

มาดูกันหน่อยว่าขั้นตอนใน CI ควรเป็นอย่างไรบ้าง ?

อาจจะเรียกว่า Continuous Integration Process หรือบางคนอาจจะเรียกว่า Build pipeline ซึ่งผมขออธิบายตั้งแต่เรื่องพัฒนาของ Developer แต่ละคนกันเลย มีขั้นตอนดังนี้
  1. Developer แต่ละคนต้องสามารถ build, test และ run ระบบที่เครื่องตัวเองได้
  2. เมื่อทำการพัฒนา feature เสร็จ แน่นอนว่าต้องมีชุดการทดสอบแบบอัตโนมัติด้วยเสมอ
  3. Developer ต้องทำการ build, test และ run บนเครื่องของตัวเอง เพื่อทำให้แน่ใจว่าระบบทำงานได้ถูกต้อง
  4. Developer ต้องทำการ build, test และ run บนเครื่องของตัวเอง เพื่อทำให้แน่ใจว่าสิ่งที่เปลี่ยนแปลงไม่กระทบส่วนอื่น ๆ
  5. ให้ทำการดึง source code ล่าสุดจาก Repository ของระบบ เพื่อตรวจสอบว่ามีการเปลี่ยนแปลงหรือไม่
  6. ถ้ามีการเปลี่ยนแปลงก็ให้ทำการรวม หรือ merge ที่เครื่องของ Devleoper ก่อน จากนั้นจึงทำการ build, test และ run อีกรอบ
  7. แต่ถ้าเกิดปัญหา หรือ ข้อขัดแย้งต่าง ๆ ก็ให้ทำการแก้ไขที่เครื่อง Developer ก่อนเสมอ
  8. เมื่อทุกอย่างผ่านทั้งหมด ให้ทำการส่งการเปลี่ยนแปลงไปยัง Repository กลาง
  9. เมื่อ Repository กลางมีการเปลี่ยนแปลง จะต้องมีระบบ CI ทำการ build, test และ run อีก เพื่อทำให้มั่นใจต่อระบบ
  10. แต่ถ้าเกิดความผิดพลาดบนระบบ CI จะทำการแจ้งไปยังทีมพัฒนา เพื่อให้ทุกคนหยุด เพื่อทำการแก้ไขให้ผ่าน
  11. เมื่อทุกอย่างบนระบบ CI ทำงานเรียบร้อยก็สามารถส่งผลลัพธ์ไปยังส่วนการทำงานอื่นต่อไป เช่น การทดสอบ และ การ deploy หรือส่งต่อไปยังระบบ Continuous Delivery เป็นต้น
โดยกระบวนการต่าง ๆ เหล่านี้ น่าจะทำให้เรา ทีม และ คนอื่น ๆ มีความเชื่อมั่นต่อระบบมากขึ้น บางครั้งอาจจะช่วยลดคำพูดต่าง ๆ ลงไปเยอะ เช่น
  • ระบบจะไม่พังจริง ๆ หรอ ?
  • สิ่งที่แก้ไขจะไม่กระทบส่วนอื่น ๆ จริงหรอ ?
  • เสร็จจริง ๆ หรอ ?
  • .....

มาดูประโยชน์ของ Continuous Integration กันบ้าง

  • รู้และเห็นข้อผิดพลาดได้อย่างรวดเร็ว
  • ลดจำนวน Bug ลงไป
  • ทำให้ทุกคนทุกทีมเห็นความคืบหน้าของการพัฒนา
  • ทำให้เราเห็นขั้นตอนการพัฒนา
  • ทำให้เราเห็นขั้นตอนการทดสอบ
  • ทำให้เราเห็นปัญหา และ ปรังปรุงได้อย่างทันท่วงที
  • ลดค่าใช้จ่ายในเรื่องต่าง ๆ ทั้งการแก้ไขข้อผิดพลาด ทั้งการทดสอบซ้ำ ๆ ทั้งปัญหาจากความเข้าใจผิดต่าง ๆ
ถ้าอยากรู้ว่าจริงหรือไม่ ก็ให้ลงมือทำด้วยมือของตัวเองสิ
ปล. การทดสอบแบบอัตโนมัตินั้น ควรครอบคลุมทั้ง Functional และ Non-functional requirement

โดย Continuous Integration (CI) นั้น

เป็นพื้นฐานที่สำคัญอย่างยิ่งของ Continuous Delivery และ Continuous Deployment ทำให้เราพร้อมที่จะ deploy และ release ระบบงานได้ตามที่ต้องการ โดยเรื่องคุณภาพนั้นมันไม่สามารถต่อรองได้เลย ต้อง Build-in อยู่ในทุกขั้นตอนของการพัฒนา สามารถอ่านเรื่อง 10 แนวปฏิบัติที่ดีของ Continuous Integration ได้ ปิดท้ายด้วยเรื่องของเครื่องมือสำหรับระบบ CI ก็ลองไปดูเพิ่มเติ่มได้ที่ List of CI Tools
แต่เหนือสิ่งอื่นใดทุกสิ่งทุกอย่างมันถูกสร้างมาจากคน ดังนั้นเรื่องคุณภาพของคนจึงสำคัญอย่างมาก

Viewing all articles
Browse latest Browse all 1997

Trending Articles