© 2018 Moonlight Academy.

ค้นหา
  • moonlight-academy

พื้นฐานที่ควรรู้เกี่ยวกับ CI/CD: ตอนที่ 2 - จาก Assembly Line สู่ DevOps

อัพเดตเมื่อ: 20 ส.ค. 2019



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


สำหรับท่านใดที่เพิ่งอ่านบทความนี้เป็นตอนแรก แนะนำให้ลองอ่านบทความตอนที่ 1 กับตอนที่ 2 ก่อนนะครับ

ตอนที่ 1: เรื่องมันเริ่มมาจาก 100 ปีที่แล้ว

ตอนที่ 3: อะไรคือ CI อะไรคือ CD


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


กระบวนการพัฒนาซอฟท์แวร์ในปัจจุบัน

กระบวนการพัฒนาซอฟท์แวร์ในปัจจุบันนั้นสามารถแยกย่อยออกมาเป็น 6 กระบวนท่าดังนี้ครับ


1. Plan คือการวางแผนในการพัฒนารวมถึงการดีไซน์หน้าตา UX/UI เปรียบเสมือนกับพิมพ์เขียวหรือโมเดลรถยนต์ต้นแบบ โดยคนที่มีหน้าที่ในส่วนนี้ก็มักจะเป็น SA, PM ครับ


2. Code คือการโค้ดดิ้งหรือการเขียนโปรแกรม เปรียบเสมือนการสร้างบ้านจากอิฐหินปูนทรายให้ออกมาเป็นบ้านตามที่ลูกค้าวาดฝันเอาไว้ โดยคีย์แมนในขั้นตอนนี้ก็คือพวกเราเหล่า developer อย่างเราเนี่ยแหละครับ ...ใช่ครับ พวกเราคือกรรมกรที่ทำงานในห้องแอร์นั้นเอง 5T55T5


3. Build คือการแปลงโค้ดของเราให้กลายเป็นภาษาเครื่องหรือภาษากลางในแต่ละ VM ออกมาเป็นแอพฯ ที่พร้อมสำหรับการใช้งาน แต่บางภาษาก็จะไม่มีในขั้นตอนนี้นะครับเช่นภาษาที่เป็น interpreter ทั้งหลายอย่าง JavaScript, Python, Ruby, PHP เป็นต้น โดยหน้าที่หลักก็จะเป็นของ dev อีกเช่นเคย


4. Test คือขั้นตอนในการทดสอบแอพของเราว่าหลังจากที่ build ออกมาแล้วเนี่ยมันมีปัญหาการใช้งานตรงไหนมั้ย พูดภาษาแบบ devๆ ก็คือการหา bug นั้นเอง โดยคีย์แมนในกระบวนการนี้คือเหล่า tester นั้นเองครับ หาก dev เปรียบเสมือนพ่อแม่ที่คอยประคบประหงมลูก tester ก็เปรียบเสมือนคุณครูที่ใจดีแต่เข้มงวดคอยเตือนให้เด็กออกมาเป็นบุคคลากรที่มีคุณภาพยังไงล่ะครับ ...หึหึ แต่บางบริษัทก็จะไม่มีตำแหน่งนี้นะครับ เพราะฉะนั้นงานตรงส่วนนี้ก็มักจะตกเป็นเวร เอ้ย! เป็นหน้าที่ของ dev อีกเช่นเคย

เวลาที่ tester บอกว่าเจอบั๊กในโปรแกม อารมณ์ของ developer ก็จะประมาณนี้ครับ

5.Deploy คือขั้นตอนเอาแอพฯ ของเราที่ได้จากการ build ไปให้ลูกค้าใช้งานจริง เปรียบเสมือนการส่งมอบบ้านให้กับลูกค้าที่น่ารักของเรานั้นเอง โดยตามทฤษฏีแล้วคนที่ดูแลหน้าที่นี้ก็จะเป็นฝ่ายจะเป็นฝ่ายที่เรียกว่า operation คือคอยรับช่วงต่อในการดูแลแอพฯ ของเรา เวลามีปัญหาการใช้งาน ฝ่ายนี้ก็จะคอยรับหน้าและแก้ไขปัญหาแทนในบางกรณีให้กับ developer ครับ แต่ในชีวิตจริงน่ะเหรองานนี้ dev ก็ต้องทำเองครับพี่น้อง


6.Monitor คือขั้นตอนในการคอยตรวจส่อง ติดตาม ว่าแอพที่เราส่งไปให้ลูกค้าใช้นั้นมีปัญหาอะไรบ้างมั้ย เพื่อนำมาปรับปรุงแก้ไขแอพฯ เวอร์ชั่นใหม่ให้ดีกว่าเดิม โดยทฤษฏีแล้วก็เป็นฝ่าย operation เขาต้องดูและแต่ในความจริง ...เห้อ ไม่พูดละ


ที่นี้เจ้า CI/CD เนี่ยนะครับมันเกิดมาจากการแข่งขันที่ดุเดือดในอุตสาหกรรมซอฟท์แวร์ ซึ่งแต่ละบริษัทล้วนทำแอพพลิเคชั่นออกมาแข่งขันกัน ใครส่งฟีเจอร์ได้ดีกว่า ไวกว่า ก็มีโอกาสที่จะรักษาลูกค้าเอาไว้ได้ ซึ่งมันทำให้ได้เปรียบในการแข่งขันบนกระดานเกมนี้


แต่กระบวนการในการพัฒนาก็อย่างที่เห็นมีหลายขั้นตอน แต่ละขั้นตอนก็มีเจ้าภาพคนละคนกัน ทำให้มันเกิดเป็นช่องว่างหรือ gap time ในการจะผ่านแต่ละขั้นแต่ละตอนไปได้ แถมบ้างครั้งแต่ละฝ่ายไม่คุยกันแต่แรกเลยทำให้เกิดปัญหาขึ้นมาในบางขั้นตอนได้เช่น dev พัฒนาแอพโดยใช้ฟีเจอร์ที่มีใน java รุ่นใหม่ แต่ server ที่ทางฝ่าย operation มีให้นั้นมี java แค่ version เก่าพอจะ deploy งานก็ทำให้ไม่สามารถทำงานได้เป็นต้น ก็เป็นสาเหตุที่ทำให้ส่งมอบแอพฯ ให้กับลูกค้าได้ล่าช้าอีก


ก็เลยมีคนคิดว่างั้นเราก็เอาคอปเซ็ปท์ที่มีใน Assembly Line ของ Henry Ford มาประยุกต์ใช้ในการพัฒนาซอฟท์แวร์เสียเลยสิ ให้กระบวนการมันไหลต่อเนื่องไร้รอยต่อไปได้ โดยหลักการนี้เราจะเรียกกันว่า DevOps ครับ

สังเกตให้ดีในนี้จะมีการ release หรือการออก version ใหม่นั้เองครับ

เอ้า! จั่วหัวมาว่า CI/CD แล้วลากมา DevOps ซะงั้น เหล่าผู้อ่านทุกท่าอย่าเพิ่งหัวร้อนกดปิดเว็บนี้ไปก่อนนะครับ ผมขออธิบายให้ฟังแบบนี้เนอะ โดย DevOps เนี่ยมันเป็นแนวคิดในการพัฒนาซอฟท์แวร์ที่คล้ายคลึงกับแนวคิด Assembly Line ของ Ford เป็นอย่างมาก โดยจับเอากระบวนการต่างๆ ที่กล่าวมาในข้างต้นมาเชื่อมกัน เพื่อให้เกิดรอยต่อน้อยที่สุด ลดปัญหาที่ไม่ควรเกิดให้ได้มากที่สุด โดยเจ้า CI/CD นั้นเป็นกระบวนการที่ซ่อนอยู่ข้างในเปรียบเสมือนหัวใจที่ทำให้ DevOps นี่เป็นเป็นไปได้อย่างไหลลื่นนั้นเองครับผ้ม


เอาล่ะครับ ผมน่าจะเขียนบทความตอนนี้มายาวพอสมควรแล้ว ในตอนหน้าเราก็จะเข้าสู่เนื้อหาของ CI/CD กันซะที โดยในตอนหน้านั้นเราก็จะได้รู้ว่ากระบวนการ CI/CD นั้นมันเป็นอย่างไร CI กับ CD ต่างกันอย่างไร แล้วมีเครื่องมืออะไรบ้างที่เราจะเอามาใช้ให้เกิด CI/CD ในองค์กรของเราได้กันครับ


สำหรับวันนี้ก็อีกเช่นเคย ขอขอบคุณที่ติดตามกันมาอย่างต่อเนื่องนะครับ


ขอบคุณครับ

ขออนุญาตประชาสัมพันธ์นะครับ


หลักสูตร CI/CD with GitLab รุ่นที่ 1 เปิดให้ลงทะเบียนได้แล้ววันนี้ เรามาเรียนรู้กันครับว่าเราจะสามารถปรับปรุงกระบวนการพัฒนาซอฟท์แวร์ให้ไวขึ้นได้อย่างไร ทั้งยังช่วยลดค่าใช้จ่ายแต่ไม่ทำให้คุณภาพนั้นลดลง ด้วยเครื่องมือที่เรียบง่ายและทรงพลังอย่าง GitLab ที่ทำให้กระบวนการพัฒนาตั้งแต่การจัดการ source code การทดสอบ การตรวจสอบคุณภาพไปจนถึงการปล่อยให้ลูกค้าใช้งานนั้นให้ไหลลื่นได้อย่างอัตโนมัติ เปิดให้ลงทะเบียนได้แล้ววันนี้ครับ


พิเศษชำระเงินภายในวันที่ 7 ก.ย. 62 รับส่วนลด Early Bird ทันที 2,500 บาท จากราคาปกติ 14,000 บาทเหลือเพียง 11,500 บาทเท่านั้น สนใจสำรองที่นั่งได้ที่ http://bit.ly/cicd-gitlab-01

รายละเอียดเนื้อหา >>> click


ดู 537 ครั้ง