Skip to main content

CI คืออะไร?

CI ย่อมาจากคำภาษาอังกฤษว่า "Continuous Integration" แปลเป็นภาษาไทยอย่างตรงตัวได้ว่า "การบูรณาการอย่างต่อเนื่อง" หลายคนอ่านคำแปลแล้วก็ยังคงงงต่อไป เนื่องจากมันไม่ได้ตอบคำถามว่า CI คืออะไร

ก่อนจะพูดถึง CI เราลองมานึกถึงการทำซอฟต์แวร์แบบเก่าๆ กันก่อน

เมื่อพูดถึงกระบวนการพัฒนาซอฟต์แวร์ ทุกตำราต้องกล่าวถึงตำนานอันยิ่งใหญ่ของ Waterfall Model อย่างขาดไม่ได้ ขั้นตอนต่างๆ ของ Waterfall Model ประกอบไปด้วย
  1. การเก็บความต้องการของผู้ใช้
  2. นำความต้องการที่ได้มาออกแบบให้เป็นระบบ
  3. ลงมือพัฒนาระบบ
  4. นำทุกระบบมารวมกัน
  5. ทดสอบ และแก้ไขข้อผิดพลาดจากการทำงาน
  6. นำระบบไปติดตั้ง ใช้งานจริง
  7. บำรุงรักษาระบบ
ข้อเสียอย่างหนึ่งของ Waterfall Model คือ กระบวนการต่างๆ ย้อนกลับไม่ได้ เฉกเช่นเดียวกับน้ำตก ที่ไม่สามารถไหลย้อนกลับได้ ฉันใดฉันนั้น ดังนั้น เมื่อเกิดข้อผิดพลาดในขั้นตอนการรวมทุกระบบเข้าด้วยกัน ก็เกือบจะสายเกินไปแล้ว เพราะอาจทำให้เราต้องออกแบบระบบใหม่ตั้งแต่ต้นเลยก็เป็นได้



ผมเคยเจอข้อสอบถามประมาณว่า ทำไมการเจอข้อผิดพลาดในการทำงานของซอฟต์แวร์ก่อน จึงเสียค่าใช้จ่ายในการแก้ไขน้อยกว่าการเจอภายหลัง ผมแทบตอบไม่ถูกเลย เพราะมันเป็นสามัญสำนึกอยู่แล้ว ไม่คิดว่าจะต้องมีการอธิบายเหตุผลให้ยืดยาว


ใช่ครับ การเจอข้อผิดพลาดให้เร็วที่สุด จะช่วยลดค่าใช้จ่ายต่างๆ ที่จะตามมาได้ เราสามารถแก้ไขปัญหานั้นได้อย่างรวดเร็ว ยิ่งเจอตอนระบบยังไม่ซับซ้อน การแก้ไขก็ทำได้ง่าย การเจอหลังๆ อาจทำให้ต้องรื้อระบบใหม่เลยทีเดียว

เมื่อเรารู้แล้วว่าการรอให้ต่างคนต่างพัฒนา แล้วค่อยมารวมกันทีหลัง จะทำให้เกิดปัญหาแล้ว วิธีแก้คืออะไรครับ? ผู้อ่านลองช่วยกันคิดในใจดู

ไม่รู้ว่าทุกคนคิดเหมือนกันรึเปล่า วิธีแก้ปัญหาคือการรวม code กันให้บ่อยที่สุดที่จะเป็นไปได้ นั่นจึงเป็นที่มาของ Continuous Integration หรือเรียกย่อๆ ว่า CI

Continuous Integration คือ หลักปฏิบัติในการพัฒนาซอฟต์แวร์ หนึ่งใน Extreme Programming (XP, เป็นหนึ่งในของ Agile อีกที) ซึ่งสมาชิกในทีมจะรวบรวมงานเข้าด้วยกันบ่อยๆ วันละครั้งเป็นอย่างน้อย ไปจนถึงหลายๆ ครั้งต่อวัน ไม่เพียงแต่นำโค้ดของแต่ละคนมารวมกันเท่านั้น ยังต้องมีการทดสอบด้วยว่า ระบบที่ได้นั้นใช้การได้จริงหรือไม่ ด้วยการทำ automated test ตรงนี้จะช่วยให้เราเจอข้อผิดพลาดของระบบได้เร็วที่สุดที่จะเป็นไปได้



หลายทีมพบว่ากระบวนการนี้ช่วยลดปัญหาที่จะเกิดขึ้นเมื่อรวมระบบ และยังข่วยให้การพัฒนาเร็วขึ้นอีกด้วย

หลายทีมนี่มีใครบ้าง? อันนี้เป็นคำถามที่ยากครับ ผมคงไม่สามารถนั่งไล่ได้ว่ามีใครใช้หรือไม่ใช้บ้าง แต่จะลองยกตัวอย่างที่ดังๆ ให้แล้วกันครับ

ท่านทั้งหลายที่คร่ำหวอดในการพัฒนาซอฟต์แวร์ ต้องเคยได้ยินคำว่า nightly build อย่างแน่นอน ทำไมถึงเรียก nightly? เพราะมัน build ทุกคืนยังไงล่ะครับ นั่นแปลว่าทีมที่ทำซอฟต์แวร์ตัวนั้นมีการทำรวมระบบและทดสอบอัตโนมัติทุกวันเป็นอย่างน้อย ตัวอย่างที่เป็นที่รู้จักกันดีก็เช่น Firefox, CyanogenMod, Chromium เป็นต้น ซอฟต์แวร์ที่ยกตัวอย่างมานี้เปิดให้ผู้ใช้ดาวน์โหลด nightly build ไปลองใช้งานกันดู แต่ก็จะออกตัวกันไว้ก่อนว่ายังไม่สมบูรณ์ เพราะยังไม่ได้ทำการทดสอบอย่างจริงจังนั่นเอง

นอกจากนี้ยังมีอีกหลายบริษัทที่นำกระบวนการ CI ไปใช้งาน แต่ไม่ได้เปิดให้ผู้ใช้อย่างเราเข้าถึง build นั้น

วันนี้พอแค่นี้ก่อนแล้วกันครับ เริ่มจะยาวเกินไปแล้ว เชื่อว่าผู้อ่านคงต้องขี้เกียจอ่านกันเป็นแน่แท้ คราวหน้ามาต่อกันด้วยวิธีการทำ CI ดีกว่าครับ

Comments

Popular posts from this blog

วิธีการแก้ไขปัญหาซอฟต์แวร์ละเมิดลิขสิทธิ์

ปัญหาการใช้ซอฟต์แวร์ละเมิดลิขสิทธิ์ในประเทศไทย เป็นปัญหาที่แก้กันไม่ตก เนื่องจากประเทศไทยเป็นประเทศที่มีรายได้ต่อหัวของประชากรค่อนข้างต่ำ แต่รสนิยมในการบริโภคกลับไม่ต่ำตาม จึงไม่ใช่เรื่องแปลกที่จะมีการผลิตของลอกเลียนแบบ หรือของละเมิดลิขสิทธิ์ในอัตราที่สูงจนติดอันดับต้นๆ ของโลก ไม่เพียงรวมไปถึงผลิตภัณฑ์ซอฟต์แวร์ ที่มีการละเมิดลิขสิทธิ์ติดอันดับโลก แต่รวมไปถึงสินค้าแบรนด์เนมสุดหรูอย่างเสื้อผ้า กระเป๋า น้ำหอม เครื่องสำอางอีกด้วย ซอฟต์แวร์ที่มีการละเมิดลิขสิทธิ์ มีตั้งแต่ซอฟต์แวร์ประเภทระบบปฏิบัติการ อย่าง Windows และ Mac OS ซอฟต์แวร์ที่ใช้ในในสำนักงาน อย่าง MS Office ซอฟต์แวร์ที่ใช้ในงานออกแบบ อย่าง Adobe Creative Suit รวมไปถึงซอฟต์แวร์ที่ใช้ทำงานเฉพาะด้านอย่าง CAD/CAM และอีกมากมายหลายประเภท ผู้ที่เสาะแสวงหาซอฟต์แวร์ละเมิดลิขสิทธิ์นั้นส่วนใหญ่เป็นบุคคลธรรมดา เพราะพวกเขาเหล่านั้นคิดว่าการใช้ซอฟต์แวร์ปลอมตรวจจับได้ยาก อีกทั้งการใช้ซอฟต์แวร์ปลอมก็ไม่ได้ทำให้เขาสูญเสียผลประโยชน์แต่อย่างใด ซึ่งผิดกับนิติบุคคล อย่างองค์กรของรัฐ หรือบริษัทต่างๆ ที่ต้องการการบำรุงรักษาระบบ และบริการหลังการขาย...

เพื่อนสนิท ไม่ว่าจะไม่เจอกันนานแค่ไหน เมื่อกลับมาเจอกันใหม่ก็ยังรู้สึกสนิทกันเหมือนเดิมจริงหรือ?

เคยมีคนบอกเอาไว้ว่า " เพื่อนสนิท ไม่ว่าจะไม่เจอกันนานแค่ไหน เมื่อกลับมาเจอกันใหม่ก็ยังรู้สึกสนิทกันเหมือนเดิม " ผมว่ามันไม่จริงเสมอไป อาจจะต้องเริ่มอธิบายกันก่อนว่าทำไมเราถึงรู้สึกสนิทกับใครบางคน การที่เราจะสนิทกับใครสักคนเราต้องกิจกรรมทางสังคมหลายๆ อย่างด้วยกันบ่อยๆ มีกิจกรรมร่วมกัน เช่น ไปกินข้าวด้วยกันประจำ ไปเที่ยวด้วยกันประจำ คุยกันเป็นประจำ ไปมาหาสู่กันบ่อยๆ เป็นต้น การที่เราจะทำกิจกรรมแบบนี้กับใครสักคนได้เป็นประจำ เชื่อเถอะว่าคุณกับเขา ต้องมีความคิดเห็น นิสัย ความชอบอะไรเหมือนๆ กัน เอาจริงๆ คือแทบเป็นไปไม่ได้เลยที่คนชอบกินอะไรคนละอย่างแต่ดันไปกินข้าวด้วยกันเป็นประจำ หรือคนที่ชอบคุยกันคนละเรื่องแต่ก็ดันคุยกันด้วยกันทุกวัน คนที่ชอบเที่ยวกันคนละสไตล์แต่ก็ดันไปเที่ยวด้วยกันเป็นประจำอีก อาจจะมีข้อยกเว้นนะ แต่ผมว่าโอกาสเป็นไปได้น้อยมากๆ ข้อเท็จจริงข้อหนึ่งที่ต้องยอมรับกันก็คือ นิสัย ความชอบ ทัศนคติของคนเราเปลี่ยนแปลงได้เสมอ ในขณะที่เพื่อนสนิทต่างต้องแยกย้ายกันไปมีชีวิตของตนเอง ต่างคนต่างต้องเผชิญกับชีวิตรูปแบบที่แตกต่างกันออกไป ประสบการณ์ต่างๆ ที่ต่างคนต่างพบเจอนี่แหละ ท...

รหัสบัตรเครดิต ภัยอินเทอร์เน็ต

ยุคนี้เป็นยุคของเทคโนโลยีสารสนเทศ อินเทอร์เน็ตเข้ามามีบทบาทกับชีวิตประจำวันของเราอย่างหลีกเลี่ยงไม่ได้ ไม่ว่าจะเป็นการรับรู้ข่าวสาร การติดต่อสื่อสาร หรือแม้แต่การซื้อ-ขายสินค้า และบริการ ก็สามารถดำเนินการผ่านทางอินเทอร์เน็ตได้อย่างสะดวกรวดเร็ว ยิ่งเทคโนโลยีก้าวล้ำหน้าไปเพียงใด ผู้ที่คิดจะทำเทคโนโลยีมาใช้ในทางฉ้อฉลก็ยิ่งมีมากขึ้นเป็นเงาตามตัว การซื้อ-ขายสินค้า และบริการผ่านทางอินเทอร์เน็ต นิยมใช้บัตรเครดิตในการชำระค่าสินค้า โดยลูกค้าจะต้องให้รหัสบัตรเครดิตแก่ผู้ขายสินค้า อาจมีผู้ไม่ประสงค์ดีสามารถดักจับข้อมูลรหัสบัตรเครดิต และข้อมูลสำคัญอื่นนอกจากนี้ได้ อีกวิธีที่เป็นที่นิยมในการโจรกรรมข้อมูลส่วนตัวคือ การแอบอ้างเป็นเจ้าหน้าที่ของสถาบันการเงิน แล้วแจ้งไปยังเหยื่อ อาจใช้อีเมล จดหมาย หรือทางโทรศัพท์ อ้างว่ามีเหตุขัดข้องบางประการเกี่ยวกับบัญชีของเหยื่อ เช่น อ้างว่าบัญชีของเหยื่อถูกระงับชั่วคราว ถูกยกเลิก หรือถูกเพิกถอน โดยหลอกให้เหยื่อเปิดเผยข้อมูลส่วนตัว เช่น หมายเลขประจำตัวประชาชน รหัสบัตรเครดิต รหัสผ่าน หมายเลขบัญชีธนาคาร วันเดือนปีเกิด เป็นต้น เมื่อได้ข้อมูลสำคัญเหล่านี้แล้ว ก็จะทำ...