เริ่มเรียน DevOps แบบไม่หลงทาง เข้าใจ "ทำไม" ก่อนเริ่มใช้เครื่องมือ
ถ้าคุณกำลังเริ่มเส้นทาง DevOps นี่คือสิ่งที่ผมอยากให้ใครสักคนบอกผมตั้งแต่วันแรกที่คุณเริ่มศึกษาครับ
เวลาเริ่มเรียน ทุกคนจะบอกให้คุณไปศึกษา Linux, Git, Jenkins, Docker หรือ Kubernetes แต่เกือบไม่มีใครอธิบายเลยว่าเราต้องมีพวกมันไปทำไม หรือเครื่องมือแต่ละตัวเข้ามาแก้ปัญหาอะไรให้เรากันแน่ ผมเองก็เคยสับสนแบบคุณครับ เคยสงสัยว่าทำไมต้องเรียนเยอะขนาดนี้ และแต่ละอย่างมันไปอยู่ตรงไหนของงานจริง
ทุกอย่างเปลี่ยนไปเมื่อผมเข้าใจ 3 ข้อนี้ครับ
- โลกก่อนมีเครื่องมือนี้เป็นอย่างไร (Problem)
- เครื่องมือนี้เข้ามาช่วยเรื่องอะไร (Solution)
- มันอยู่ตรงไหนในขั้นตอนการทำงาน (Workflow)
พอมองภาพออก ทุกอย่างก็ง่ายขึ้นทันที ผมเลยสรุป 9 เครื่องมือหลักมาให้คุณเข้าใจที่มาที่ไปก่อนจะไปลงมือเจาะลึกครับ
1. จัดการพื้นฐานด้วย Linux และ Git
Linux และ Shell Scripting
ก่อนจะมีสิ่งนี้: คุณต้องมานั่งคลิกหน้าจอ (GUI) เพื่อสร้างโฟลเดอร์หรือติดตั้งแอปทีละขั้นตอน ถ้าต้องทำแบบเดิม 10 รอบ คุณจะเบื่อและเหนื่อยมาก แถมยังมีโอกาสกดผิดสูง
สิ่งที่เข้ามาช่วย: Linux และ Shell ช่วยให้คุณควบคุมทุกอย่างผ่านการพิมพ์คำสั่ง คุณเขียนสคริปต์สั่งให้คอมพิวเตอร์ทำงานอัตโนมัติได้ทันที วิธีนี้รวดเร็วและแม่นยำกว่าการใช้เมาส์คลิกเยอะครับ
Git และ Gitlab
ก่อนจะมีสิ่งนี้: เวลาทำงานกับเพื่อน คุณต้องคอยส่งไฟล์ล่าสุดให้กันทางแชทหรืออีเมล บางทีเซฟทับกันจนพัง หรือไม่รู้ว่าเวอร์ชันไหนคืออันที่ใช้งานได้จริง
สิ่งที่เข้ามาช่วย: Git คือระบบบันทึกประวัติโค้ด คุณจะรู้ว่าใครแก้ตรงไหน เมื่อไหร่ และย้อนกลับไปจุดที่ปลอดภัยได้เสมอ ส่วน Gitlab คือบ้านที่ให้ทุกคนเอาโค้ดมาวางรวมกันเพื่อทำงานพร้อมกันได้โดยไม่ต้องกลัวงานหาย
2. ระบบอัตโนมัติสำหรับการสร้างและตั้งค่า
Gitlab-ci (CI/CD)
ก่อนจะมีสิ่งนี้: พอนักพัฒนาเขียนโค้ดเสร็จ เขาต้องมานั่ง Build ไฟล์และทดสอบแอปด้วยตัวเองทุกครั้งก่อนจะส่งงานไปรันบนเซิร์ฟเวอร์ ขั้นตอนนี้เสียเวลามากและพลาดได้ง่าย
สิ่งที่เข้ามาช่วย: Gitlab-ci เปรียบเหมือนหุ่นยนต์เฝ้าประตู พอมีโค้ดใหม่ส่งมา มันจะเริ่ม Build และรัน Test ให้คุณอัตโนมัติทันที ถ้าผ่านมันก็ส่งงานขึ้นระบบให้เลย คุณแค่รอรับรายงานสวยๆ ก็พอครับ
Terraform (Infrastructure as Code)
ก่อนจะมีสิ่งนี้: การสร้างเซิร์ฟเวอร์บน Cloud อย่าง AWS คุณต้องเข้าไปนั่งคลิกปุ่มสร้างทีละหน้า ถ้าบริษัทอยากได้เซิร์ฟเวอร์เพิ่มอีก 5 เครื่อง คุณก็ต้องนั่งคลิกวนไปแบบเดิม
สิ่งที่เข้ามาช่วย: Terraform เปลี่ยนการคลิกหน้าจอเป็นการเขียนโค้ด คุณระบุสิ่งที่ต้องการลงในไฟล์เดียวแล้วสั่งรัน ระบบจะเนรมิตเซิร์ฟเวอร์และเครือข่ายให้คุณตามนั้นทันที สะดวกและมาตรฐานเป๊ะทุกเครื่องครับ
3. จัดการแอปด้วยคอนเทนเนอร์
Ansible (Configuration Management)
ก่อนจะมีสิ่งนี้: พอคุณได้เซิร์ฟเวอร์มา 10 เครื่อง คุณต้องรีโมตเข้าไปติดตั้งซอฟต์แวร์ทีละเครื่องด้วยมือ งานนี้ใช้เวลาเป็นวันและเสี่ยงต่อการตั้งค่าไม่เหมือนกัน
สิ่งที่เข้ามาช่วย: Ansible ช่วยให้คุณส่งคำสั่งตั้งค่าไปยังเซิร์ฟเวอร์เป็นร้อยเครื่องได้พร้อมกันในคลิกเดียว คุณมั่นใจได้ว่าทุกเครื่องจะมีหน้าตาและระบบข้างในเหมือนกันเป๊ะ
Docker (Containerization)
ก่อนจะมีสิ่งนี้: ปัญหาโลกแตกคือ "รันบนเครื่องผมได้ แต่บนเซิร์ฟเวอร์พัง" เพราะสภาพแวดล้อมหรือเวอร์ชันซอฟต์แวร์ไม่ตรงกัน
สิ่งที่เข้ามาช่วย: Docker ช่วยคุณแพ็กแอปและของที่จำเป็นทั้งหมดลงใน "ตู้คอนเทนเนอร์" ไม่ว่าคุณจะยกตู้นี้ไปรันบนเครื่องไหน แอปของคุณจะทำงานได้เหมือนเดิม 100% ข้อมูลจาก Docker ยืนยันว่าเทคโนโลยีนี้ช่วยลดเวลาในการ Deployment ได้มหาศาลครับ
Kubernetes (Container Orchestration)
ก่อนจะมีสิ่งนี้: เมื่อคุณมี Container เยอะๆ คุณจะเริ่มดูแลไม่ไหว ถ้าแอปค้างคุณต้องมานั่งรีสตาร์ทเอง หรือถ้าคนเข้าเว็บเยอะ คุณก็ต้องมานั่งเปิด Container เพิ่มเองด้วยมือ
สิ่งที่เข้ามาช่วย: Kubernetes คือผู้จัดการมือโปร มันจะคอยดูแอปให้คุณตลอด 24 ชั่วโมง ถ้าแอปไหนตายมันจะชุบชีวิตให้ใหม่ ถ้าคนเข้าเยอะมันจะสั่งขยายจำนวนแอปให้โดยอัตโนมัติ ระบบของคุณจึงเสถียรสุดๆ ครับ
4. Cloud และ Monitoring
AWS (Cloud Platforms)
ก่อนจะมีสิ่งนี้: คุณต้องซื้อเครื่องเซิร์ฟเวอร์ราคาแพงมาวางที่ออฟฟิศ ต้องดูแลแอร์ ดูแลไฟ ถ้าเครื่องเสียคุณก็งานเข้าทันที แถมขยายระบบลำบากมาก
สิ่งที่เข้ามาช่วย: AWS คือตู้เซิร์ฟเวอร์บนโลกอินเทอร์เน็ต คุณอยากได้แรงแค่ไหนก็กดสั่งได้เลย จ่ายเงินเท่าที่ใช้งานจริง ระบบดูแลความปลอดภัยและฮาร์ดแวร์ให้เสร็จสรรพ คุณแค่เอาแอปไปรันก็พอ
Prometheus และ Grafana
ก่อนจะมีสิ่งนี้: คุณไม่มีทางรู้เลยว่าเซิร์ฟเวอร์ทำงานไหวไหม หรือระบบจะล่มเมื่อไหร่ คุณมักจะรู้ตัวก็ตอนที่ลูกค้าโทรมาบอกว่าแอปพังแล้ว
สิ่งที่เข้ามาช่วย: Prometheus คอยเก็บข้อมูลการทำงานเหมือนเซ็นเซอร์ ส่วน Grafana เอาข้อมูลนั้นมาวาดเป็นกราฟบนหน้าจอให้คุณดู คุณจะเห็นทันทีถ้ามีอะไรผิดปกติและเข้าไปแก้ได้ก่อนที่ระบบจะล่มจริงครับ ลองศึกษา LGTM Stack เพิ่มเติม
สรุปส่งท้ายถึงเพื่อนๆ
พอเข้าใจเครื่องมือพวกนี้แล้ว ผมหวังว่าข้อมูลนี้จะเป็นไกด์ที่ดีสำหรับการเริ่มเรียนรู้ของคุณนะ คุณจะได้เข้าใจสักทีว่าทำไมเราต้องใช้เครื่องมือเหล่านี้ในงานจริง การรู้ "เหตุผล" (Why) จะช่วยให้คุณจำวิธีใช้ (How) ได้แม่นขึ้น และไม่รู้สึกกดดันกับชื่อเครื่องมือใหม่ๆ ที่มีโผล่มาทุกวัน