6 ธันวาคม 2557

มารู้จัก Continuous Integration กัน

จากปัญหาในการพัฒนา software ตอนที่ผมเรียนอยู่ซึ่งโอกาสล้มเหลวสูง ว่าง่ายๆคือ ที่ผมทำสมัยเรียนไม่มีชิ้นไหนเป็นผลิตภัณฑ์ได้เลย (ปล.รู้สึกผิดกับเพื่อนและอาจารย์ในทีมพัฒนาจริงๆ) จนผมมีความรู้สึกว่าต้องมีวิธีที่ทำให้แม่นยำขึ้นกว่าเดิม เรื่องนี้ต้องเท้าความถึงวิชาที่ผมไม่ได้ชื่นชอบอะไรเลยอย่าง Software Engineering ผมก็ดูมันแบบผ่านๆมา จนกระทั้งมีคนแนะนำให้กลับไปดู ตอนนี้หละ ผมเห็นอะไรที่มันดูใช้งานได้จริงๆไม่ได้เอาทฤษฎีมาเล่น
Continuous integration (CI) ที่ผมรู้จักมานานนี้อยู่ในส่วนของ Agile process ซึ่งได้เรียนมาหลายปีแล้ว (Orz เพิ่งรู้จักมัน) แต่ขอละ Agile ไว้ก่อน
CI นั้นมีหน้าที่แสดงหน้าตาผลงานที่เราได้เขียนแบบอัตโนมัต โดยอาศัยหลักการที่ว่าจะมีการ Build Software อย่างต่อเนื่องในการทำงาน ซึ่งการ Build นี่แหละจะทำให้เราเห็นหน้าตาของ Software ที่เรากำลังทำอยู่โดยนอกจากจะได้ Software แล้วยังสามารถช่วยทดสอบ Software ของเราให้ด้วยเมื่อทำการทดสอบแล้วก็ทำการรายงานผลให้กับ dev ด้วย เป็นไงเหมือนมี Tester เพิ่มอีกคน (LOL) อย่าเพิ่งเซ็งเพราะมันหมายความว่าเป็นการป้องกัน Bug ไม่ให้หลุดจาก Dev. (มากเกินไป) นี่เอง win มั้ยหละ และถ้าเป็น Agile ก็อาจจะไม่จะเป็นต้องมี tester โดยตำแหน่งเลย (Tester จะปนไปกับ Dev.) โดยเมื่อรู้ผลแล้วก็ต้องแก้ให้เร็วที่สุด เมื่อแก้ผ่านเราก็จะได้ Software ตัวน้อยๆ ที่ทำงานได้ในระดับหนึ่ง(ฟังก์ชันยังไม่ครบ) ส่วนจะเริ่มเขียนยังไงที่ทำให้ใช้ CI ได้นี้จะยกไปหัวข้ออื่นนะครับ
รูปที่ผมสรุปตามความเข้าใจของตัวเองนะครับ

จากรูปคือการทำงานในหนึ่งช่วงเวลา(แล้วแต่ อาจจะหลักชั่วโมงหรือเป็นวัน) โดยส่วน CI ที่เป็นเครื่องมือใว้ไช้ในกระบวนการมีอยู่สองส่วน คือ ส่วน Test จะสามารถใช้หลักการ TDD Test-driven development และประกอบกับ CI Server ซึ่งทำหน้าที่ Build และ report ให้ Dev โดยเครื่องมือ CI นี้มีหลายตัวได้แก่... ไม่บอกผมขอละไว้เพราะเยอะพอสมควร ลอง Google ดู "continuous integration tools"ส่วนอื่น feature กับ code คนเป็น Dev. คงรู้อยู่แล้ว และอีกส่วนที่อาจจะมองไม่เห็นคือ Software version control เช่น CVS git bazaar ซึ่งส่วนนี้มองเป็นส่วนไว้ช่วยจัดการ Code ก็ได้
สรุป จุดประสงค์การทำ CI
-เพื่อให้ได้ Software ที่ทำงานได้ในระดับหนึ่งอยู่ตลอดเวลา
-เพื่อตรวจสอบปัญหาที่มองไม่เห็นซึ่งอาจจะเกิดขึ้น
-เพื่อช่วยหา Bug โดยอัตโนมัติ(เร็วขึ้นและไม่ต้องออกแรงเยอะ)
-เพื่อทดสอบทวน Code เก่าทุกครั้งที่มีการเพิ่ม Code ใหม่

เท่าที่ดูมาเหมือนจะอยู่ในบทเรียนทั้งนั้นทำเอารู้สึกผิดกับอาจารย์เลย T-T
อ้างอิง
http://en.wikipedia.org/wiki/Extreme_programming
http://en.wikipedia.org/wiki/Scrum_%28software_development%29
เพิ่มเติม
http://www.martinfowler.com/articles/continuousIntegration.html
http://guide.agilealliance.org/guide/ci.html
https://www.ibm.com/developerworks/rational/library/continuous-integration-agile-development/



ไม่มีความคิดเห็น:

แสดงความคิดเห็น