> For the complete documentation index, see [llms.txt](https://www.saladpuk.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.saladpuk.com/basic/devops.md).

# DevOps พื้นฐาน

เดี๋ยวนี้ไปที่ไหนเราก็จะได้ยินคำว่า **DevOps** กันหนาหูเลยว่าบริษัทนู้นนั้นนี้เขาใช้กัน ดังนั้นวันนี้เรามาดูกันหน่อยละกันว่าจริงๆ DevOps มันคืออะไร แล้วทำไมมันถึงนิยมกันนักนะ

{% hint style="info" %}
สำหรับแมวน้ำท่านไหนสนใจอยากจะกระโดดไปลองเล่น DevOps เลยก็สามารถเข้าไปดูคอร์ส[ **👶 Azure DevOps** ](https://saladpuk.gitbook.io/learn/cloud/azure-devops)เพื่อลองลงมือเล่น DevOps ได้เบยนะ (ไม่จำเป็นต้องรู้อะไรเลยก็ทำตามได้)
{% endhint %}

## 🤔 DevOps คือไรหว่า ?

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

ดังนั้นจากที่ว่ามา **DevOps** คือการรวมทุกอย่างที่จำเป็นในการทำซอฟต์แวร์เข้ามาทำงานด้วยกัน โดยชื่อของมันเกิดจากการเอาของ 2 อย่างมารวมกันคือ **Software Development (Dev)** มารวมกับ **Information-Technology Operations (Ops)** นั่นเอง และการทำ DevOps นั้นจะต้องรวมถึงเรื่องการทำ **Agile planning, Continuous Integration (CI), Continuous Delivery (CD)** และ **Monitoring application** ของเราได้ด้วย

![](/files/-Lvu5pkPG6X8CVs-NXDe)

## 🤔 เป้าหมายของ DevOps คือไร ?

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

![](/files/-LsfPl2DfdqzOYk8Re2R)

{% hint style="info" %}
**Feedback Loop**\
คือช่วงเวลาที่ทีมจะมาดูผลตอบรับของงานในรอบที่ผ่านมาว่ามันมีอะไรที่ทีมควรจะนำมาปรับปรุงให้ดียิ่งขึ้นไปได้อีก และอะไรที่ควรจะทำกันต่อไป เพราะอย่าลืมว่าการสร้างซอฟต์แวร์มันเป็นงาน **Research and Development (R\&D)** แม้กระทั่งคนสร้างและผู้ว่าจ้าง ก็ไม่รู้หรอกว่าของที่ทำมันดีหรือเปล่า ดังนั้นเราจะต้องมีช่วง Feedback ให้กับทีม และ ผู้ว่าจ้างให้เร็ว เพื่อที่ทีมและผู้ว่าจ้างจะได้นำไปปรับปรุงให้เหมาะสมกับสิ่งที่ตัวโปรแกรมมันควรจะเป็นยังไงล่ะ
{% endhint %}

## 🤔 จะทำ DevOps ต้องรู้ไรบ้าง ?

ในตัว **DevOps** ในส่วนของการทำงานนั้นเน้นไปในรูปแบบของ Agile ดังนั้นไปศึกษาเรื่อง Agile กันเอาต่อเองนะจ๊ะ ส่วนเรื่องอื่นๆที่จำเป็นต้องมีเพื่อให้ Feedback Loop ของเรามันทำได้ไวนั้น ทีมจะต้องมีของพวกนี้เอาไว้เป็นอย่างน้อย

{% hint style="success" %}
**แนะนำให้อ่าน**\
การทำงานในรูปแบบของ Agile เป็นยังไงไปศึกษาเพิ่มเติมได้จากคอร์สนี้เด้อ\
[👦 Agile Methodology](https://saladpuk.gitbook.io/learn/basic/agile-methodology)
{% endhint %}

### 🔥 Version Control

แทบจะเรียกได้ว่า 100% ของ developer ต้องใช้เจ้านี้เลย (ใครไม่รู้จักแนะนำให้รีบไปศึกษามันโดยด่วนไม่งั้นอนาคตตายแน่นอนฟันธง) เพราะมันทำให้ชีวิต developer อย่างเราๆลดงานหลายๆอย่างในการจัดการ source code ลงไปได้เยอะเลย ส่วนจะใช้อะไรนั้นก็แล้วแต่บริษัทจะเลือกใช้เลย ส่วนที่ทั่วโลกนิยมใช้กันคือ **GitHub** นั่นเอง

![](/files/-LmwjU5jXtzSWEVx_fFI)

### 🔥 Build pipeline

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

#### Continuous Integration (CI)

เป็นตัวที่ช่วยมาทดสอบโค้ดของเราว่ามันมี error ตรงไหนหรือเปล่า เทสผ่านหรือเปล่า หรือแม้กระทั่ง build project เพื่อเอาผลลัพท์ไปใช้งานต่อด้วย ซึ่งเจ้าตัวนี้มีระบบตรวจสอบความผิดปรกติต่างๆของโค้ดของเราด้วย เพื่อช่วยลดภาระของทีมไปตรวจสอบตัวโค้ด โดยการให้ระบบทำให้เรานั่นเอง

โดยปรกติเราจะสั่งให้มันทำ CI ทุกครั้งที่มีการ push งานขึ้นมาบน repository ยังไงล่ะ

![](/files/-LoIK6GF7MxmQbr2mmec)

#### Continuous Delivery (CD)

เป็นตัวช่วยเอางานของเราไปขึ้น Environments ต่างๆที่เรากำหนดไว้ เช่นเมื่อไหร่ก็ตามที่งานมันพร้อมใช้งานแล้ว เราก็จะให้มันเอางานขึ้นไปที่ Production Environment ได้เลยนั่นเอง

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

![](/files/-LnPktHtPJIgSBueZbxP)

### 🔥 Agile Planning

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

![](/files/-M-VEslxWq65bZsppuVL)

### 🔥 Monitoring & Logging

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

![](/files/-M-i0Q1jngNtW6Kt2oOG)

### 🔥 Cloud Computing

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

{% hint style="info" %}
**แนะนำให้อ่าน**\
ถ้าเพื่อนๆสนใจอยากรู้จักว่าคลาว์คืออะไรก็สามารถอ่านได้จากบทความนี้เบย [👶 Cloud พื้นฐาน](https://saladpuk.gitbook.io/learn/basic/cloud101) ส่วนถ้าอยากลองเล่นคลาว์ตัวจริงก็สามารถไปดูในคอร์สด้านล่างนี้ได้เลยว่าจะเริ่มเล่นคลาว์ต้องทำยังไง และมันมีอะไรให้ลองเล่น\
[👶 Microsoft Azure 101](https://saladpuk.gitbook.io/learn/cloud/azure101)
{% endhint %}

![](/files/-LoQcfYYIx1_u-yjv9G1)

### 🔥 Infrastructure as Code (IaC)

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

![](/files/-LoQb4eaqKgnHjiiIr_p)

{% hint style="info" %}
**เกร็ดความรู้**\
ใน DataCenter ของคลาว์เจ้าใหญ่ๆอย่าง **Amazon, Microsoft, Google** ไรพวกนี้ เชื่อไหมว่าเขาใช้วิศวะกรในการดูแลแค่ไม่กี่สิบคนเท่านั้นเองในการดูแลเซิฟเวอร์เป็นที่มีพื้นที่ขนาดใหญ่ชนิดที่ว่าเดินทั้งวันก็ไม่ทั่ว ซึ่งวิศวะกรพวกนี้จะไม่สามารถดูแลเซิฟเวอร์ได้เลยถ้าไม่ได้ทำ **IaC**
{% endhint %}

### 🔥 Microservices Architecture

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

{% hint style="info" %}
**แนะนำให้อ่าน**\
ถ้าเพื่อนๆสนใจอยากศึกษาเรื่อง **Microservices Architecture** แล้วล่ะก็ สามารถอานได้จากคอร์สนี้เบย [👶 Microservices พื้นฐาน](https://saladpuk.gitbook.io/learn/basic/microservices) หรือถ้าอยากสร้าง Microservices บนคลาว์ก็สามารถเริ่มศึกษาได้จากลิงค์ด้านล่างนี้เบย\
[👶 Azure Service Fabric](https://saladpuk.gitbook.io/learn/cloud/azure-service-fabric)
{% endhint %}

![](/files/-M-VKVvCF27NQ2DMFuJQ)

### 🔥 Docker Containers

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

{% hint style="info" %}
**แนะนำให้อ่าน**\
ถ้าเพื่อนๆสนใจอยากศึกษาเรื่อง Docker Container ก็สามารถอ่านได้จากคอร์สตัวนี้เบย [👶 Docker ขั้นพื้นฐาน](https://saladpuk.gitbook.io/learn/basic/docker)
{% endhint %}

![](/files/-M-VN-b2nFR72IMVl2P_)

## 😱 แม้เจ้าใช้ความรู้เยอะจุง

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

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

![](/files/-Lpr2XR3gDMAAjxtkuh6)

{% hint style="info" %}
**Credit**\
บทความทั้งหมดในรอบนี้นำความรู้และรู้ภาพมาจาก **Microsoft DevOps** ถ้าใครอยากศึกษาเพิ่มเติมก็ไปดูได้จากลิงค์นี้เลยครัช\
[Microsoft Learn DevOps](https://docs.microsoft.com/en-us/azure/devops/learn/what-is-devops)
{% endhint %}
