👶DevOps พื้นฐาน
🤔 สงสัยกันไหมว่าการทำซอฟต์แวร์สมัยนี้เขาทำกันยังไงนะ ?
เดี๋ยวนี้ไปที่ไหนเราก็จะได้ยินคำว่า DevOps กันหนาหูเลยว่าบริษัทนู้นนั้นนี้เขาใช้กัน ดังนั้นวันนี้เรามาดูกันหน่อยละกันว่าจริงๆ DevOps มันคืออะไร แล้วทำไมมันถึงนิยมกันนักนะ
🤔 DevOps คือไรหว่า ?
เวลา คือสิ่งที่สำคัญที่สุดในการทำธุรกิจ ดังนั้นการทำซอฟต์แวร์เลยต้องผลิตงานให้เร็วและมีคุณภาพสูงสุดนั่นเอง โดยแต่เดิมการทำซอฟต์แวร์เราแยกทีมออกเป็นหลายๆทีม เช่น ทีมเขียนโค้ด ทีมเทส ทีมกราฟฟิค ทีมการตลาด บลาๆ แล้วเมื่อแต่ละฝ่ายทำงานเสร็จก็จะส่งงานให้อีกทีมเอาไปทำต่อ ซึ่งการทำแบบนี้มันถูกพิสูจน์แล้วว่ามันเสียเวลามาก เพราะทุกครั้งที่จะแก้งาน มันจะต้องส่งกันไปส่งกันมายังไงล่ะ ดังนั้นมันเลยเกิดแนวคิดใหม่ออกมาว่า ให้ภายใน 1 ทีมต้องมีทุกอย่างที่จำเป็นในการทำซอฟต์แวร์อยู่ครบเลย เช่นภายใน 1 ทีมก็จะมี คนเขียนโค้ด คนทำเทส คนทำกราฟฟิค บลาๆ เพราะเวลาทำงานทุกคนในทีมเมื่ออยู่กันครบ จะได้มีทุกมุมมอง ทำงานได้โดยไม่ต้องโยนงานกัน รับผิดชอบช่วยกัน และมีเป้าหมายในการเข็นงานตัวเดียวกันออกมานั่นเอง
ดังนั้นจากที่ว่ามา DevOps คือการรวมทุกอย่างที่จำเป็นในการทำซอฟต์แวร์เข้ามาทำงานด้วยกัน โดยชื่อของมันเกิดจากการเอาของ 2 อย่างมารวมกันคือ Software Development (Dev) มารวมกับ Information-Technology Operations (Ops) นั่นเอง และการทำ DevOps นั้นจะต้องรวมถึงเรื่องการทำ Agile planning, Continuous Integration (CI), Continuous Delivery (CD) และ Monitoring application ของเราได้ด้วย

🤔 เป้าหมายของ DevOps คือไร ?
คือการทำให้วงจรในการทำงานมันสั้นเพื่อที่จะได้มี Feedback Loop ที่รวดเร็ว เพราะการทำซอฟต์แวร์มันต้อง ปรับตัว ให้เหมาะสมกับสถานะการณ์ที่แข่งกับ เวลา และ กลุ่มลูกค้า ได้นั่นเอง และยิ่งทีมมี Feedback loop ที่เร็วเท่าไหร่ นั่นหมายความว่าทีมจะได้เรียนรู้กลุ่มตลาดที่แท้จริงได้เร็วเท่านั้น ทำให้เราสามารถผลิตของที่ตรงกับพฤติกรรมของลูกค้าได้นั่นเอง

🤔 จะทำ DevOps ต้องรู้ไรบ้าง ?
ในตัว DevOps ในส่วนของการทำงานนั้นเน้นไปในรูปแบบของ Agile ดังนั้นไปศึกษาเรื่อง Agile กันเอาต่อเองนะจ๊ะ ส่วนเรื่องอื่นๆที่จำเป็นต้องมีเพื่อให้ Feedback Loop ของเรามันทำได้ไวนั้น ทีมจะต้องมีของพวกนี้เอาไว้เป็นอย่างน้อย
แนะนำให้อ่าน การทำงานในรูปแบบของ Agile เป็นยังไงไปศึกษาเพิ่มเติมได้จากคอร์สนี้เด้อ 👦 Agile Methodology
🔥 Version Control
แทบจะเรียกได้ว่า 100% ของ developer ต้องใช้เจ้านี้เลย (ใครไม่รู้จักแนะนำให้รีบไปศึกษามันโดยด่วนไม่งั้นอนาคตตายแน่นอนฟันธง) เพราะมันทำให้ชีวิต developer อย่างเราๆลดงานหลายๆอย่างในการจัดการ source code ลงไปได้เยอะเลย ส่วนจะใช้อะไรนั้นก็แล้วแต่บริษัทจะเลือกใช้เลย ส่วนที่ทั่วโลกนิยมใช้กันคือ GitHub นั่นเอง

🔥 Build pipeline
เจ้าตัวนี้คือ การทำให้กระบวนการในการทำซอฟต์แวร์จากเดิมที่เราต้องให้คนไปทำ (Manual) เปลี่ยนไปเป็นให้ระบบมันทำเองอัตโนมัติ (Automation) นั่นเอง ซึ่งเรียกว่าเป็นของที่ขาดไม่ได้เลยในการทำซอฟต์แวร์สมัยนี้ เพราะของทุกอย่างเราจะต้องทำให้มันเร็ว และมันจะต้องทำกระบวนการต่างๆซ้ำได้บ่อยๆโดยไม่เสียกำลังคนของเราด้วย โดยเจ้า build pipeline นั้นมีหลายอยู่ในนี้เลยเช่น
Continuous Integration (CI)
เป็นตัวที่ช่วยมาทดสอบโค้ดของเราว่ามันมี error ตรงไหนหรือเปล่า เทสผ่านหรือเปล่า หรือแม้กระทั่ง build project เพื่อเอาผลลัพท์ไปใช้งานต่อด้วย ซึ่งเจ้าตัวนี้มีระบบตรวจสอบความผิดปรกติต่างๆของโค้ดของเราด้วย เพื่อช่วยลดภาระของทีมไปตรวจสอบตัวโค้ด โดยการให้ระบบทำให้เรานั่นเอง
โดยปรกติเราจะสั่งให้มันทำ CI ทุกครั้งที่มีการ push งานขึ้นมาบน repository ยังไงล่ะ

Continuous Delivery (CD)
เป็นตัวช่วยเอางานของเราไปขึ้น Environments ต่างๆที่เรากำหนดไว้ เช่นเมื่อไหร่ก็ตามที่งานมันพร้อมใช้งานแล้ว เราก็จะให้มันเอางานขึ้นไปที่ Production Environment ได้เลยนั่นเอง
โดยปรกติเราจะตั้ง CD นี้ต่อจากการทำ CI เสร็จ เพื่อเวลาที่ developer ส่งงานขึ้นมา ระบบก็จะตรวจสอบโค้ดที่พึ่งเอาขึ้นมาผ่าน CI แล้วเมื่อตรวจเสร็จ มันก็จะเอางานไปขึ้นที่ Test Environment เพื่อเตรียมเอาไปทำการทดสอบ User Experience ต่อ

🔥 Agile Planning
เนื่องจากงานมันต้องรีบทำ Feedback Loop นั่นก็แสดงว่า เราต้องมีการวางแผนการทำงานที่ชัดเจนด้วย ไม่งั้นเร่งรอบกะจะเอาแต่ Feedback อย่างเดียวก็ไม่ดี เพราะมันต้องสอดคล้องกับลำดับความสำคัญของธุรกิจด้วย ซึ่งตัวจัดการแผนงานของ Agile เรานิยมใช้ Kanban Board ยังไงล่ะ

🔥 Monitoring & Logging
ในการทำงานที่มี feedback ที่ดีได้นั้น เราก็จำเป็นที่จะต้องทำการดูผลตอบรับจากตัวงานจริงๆว่ามีอะไรที่ควรจะต้องปรับแก้อีกด้วย และรวมถึงการรายงานสิ่งผิดปรกติที่เกิดขึ้นกับระบบของเราด้วยนะ ไม่งั้นทีมมุ่งแต่จะพัฒนาของใหม่ๆ แต่อาจจะตายเพราะระบบมันใช้ไม่ได้ตั้งนานแล้วก็ได้ เลยทำให้เราต้องมีระบบในสอดส่องดูแลของพวกนี้เอาไว้ด้วยยังไงล่ะ เช่นตอนนี้ Response time ของ server เราเป็นยังไงบ้าง ตรงไหนเป็นคอขวด บลาๆ

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

🔥 Infrastructure as Code (IaC)
เป็นการเปลี่ยนของทุกอย่างในการทำระบบของเราทั้งหมดให้สามารถควบคุมดูแลได้แบบ Automation โดยโค้ดนั่นเอง เพราะการตั้งค่าต่างๆให้กับระบบ ถ้าเราใช้คนทำมันค่อนข้างจะเสียเวลามาก และคนก็สามารถทำผิดพลาดได้ ดังนั้นเราเลยใช้ Automation มาช่วยแก้ไขปัญหาในเรื่องนี้แทน

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

🔥 Docker Containers
เพื่อช่วยให้งานของคนในทีมมี environments ที่เหมือนกันกับใน production หรืออะไรก็ตามแต่ ตัว Docker container เป็นสิ่งที่ขาดไม่ได้เลย

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

Last updated
Was this helpful?