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 และอีกมากมายหลายประเภท ผู้ที่เสาะแสวงหาซอฟต์แวร์ละเมิดลิขสิทธิ์นั้นส่วนใหญ่เป็นบุคคลธรรมดา เพราะพวกเขาเหล่านั้นคิดว่าการใช้ซอฟต์แวร์ปลอมตรวจจับได้ยาก อีกทั้งการใช้ซอฟต์แวร์ปลอมก็ไม่ได้ทำให้เขาสูญเสียผลประโยชน์แต่อย่างใด ซึ่งผิดกับนิติบุคคล อย่างองค์กรของรัฐ หรือบริษัทต่างๆ ที่ต้องการการบำรุงรักษาระบบ และบริการหลังการขาย

วิธีการใช้ไม้บรรทัดและแท็บใน Microsoft Office Word 1

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