NetDevOps คืออะไรแบบสั้น ๆ

อธิบายถึงที่มาที่ไปและหลักการของ NetDevOps

Nopnithi Khaokaew (Game)
2 min readSep 22, 2019

ความท้าทายของ Network Configuration

การเปลี่ยนแปลงหรือแก้ไข configuration ของ network ถือว่าเป็นอะไรที่มีความเสี่ยงมาก ๆ เพราะ network เป็นตัวกลางที่ทำให้ระบบต่าง ๆ เชื่อมต่อถึงกัน หาก network ล่ม เกือบทุกอย่างในระบบ IT ก็แทบจะไร้ความหมาย

เราจะเห็นว่าบ่อยครั้งอุปกรณ์ network ที่ทำงานนิ่งอยู่แล้วแทบจะไม่ถูกแตะเลยถ้าไม่จำเป็นจริง ๆ เพราะความผิดพลาดเพียงบรรทัดเดียวอาจทำให้หน้าที่การงานสั่นคลอน (โดยเฉพาะคนที่ทำงานใน ISP)

นอกจากงานที่โคตรเสี่ยงอยู่แล้ว อุปกรณ์ network พวกนี้ยังถูกออกแบบมาให้ใช้งานโดยมนุษย์ (Human to Machine Communication) อีก นั่นแปลว่าการแก้ไขเปลี่ยนแปลง network configuration จะต้องทำทีละตัว ซึ่งโคตรช้า และมีโอกาสเกิดความผิดพลาดจาก human error สูงมาก

DevOps แนวทางเอาชนะความท้าทาย

ความท้าทายข้างต้นที่ผมบอกไป มันช่างคล้ายคลึงกับปัญหาที่เหล่า programmer และ developer เคยพบเจอเมื่อยุคเก่าก่อนเสียจริง ๆ การจะ update software ในยุคนั้นปาเข้าไปเป็น bi-annual กันเลยทีเดียว เพราะใคร ๆ ก็เสียวเวลาแตะ code เหมือนที่เราเสียวเวลาแตะ network

ทว่าพวกเขาแก้ปัญหาเหล่านี้ด้วยการทำงานแบบ DevOps หรือ CI/CD pipeline นั่นเอง ซึ่งจะแบ่ง stage การทำงานเป็นหลายขั้น เช่น build, test และ deploy แถมแต่ละ stage จะถูกทำอัตโนมัติด้วย automation ทั้งหมด ทำให้ง่ายในการ changes, ลดความผิดพลาด, ลดปัญหาต่าง ๆ ที่จะตามมา การ release software จึงถี่มากขึ้น

Keyword ในการหาความรู้เพิ่มเติมเพื่อความเข้าใจที่มากขึ้น

DevOps คืออะไร?

CI/CD คืออะไร?

NetDevOps คือ DevOps สำหรับ Networking

เมื่อมีแนวทางที่ประสบผลสำเร็จเป็นอย่างดีอยู่แล้ว ก็ไม่จำเป็นต้องนั่งเครียดคิดใหม่ทำใหม่ เพียงแต่นำแนวทางจากฝั่ง software development มาปรับใช้กับงาน network ก็แค่นั้นเอง

Network as Code - จะใช้วิธีเขา ก็ต้องทำแบบเขา

เริ่มจากการเก็บ network configuration ทั้งหมดไว้บน Git (source control) ซึ่งจะทำหน้าที่ในการ track changes เมื่อมีการเปลี่ยนแปลงอะไรใน config แน่นอนว่าสามารถ rollback ได้ด้วย (แต่หากถามถึงการ rollback ไปถึงระดับอุปกรณ์ คงต้องเชื่อมต่อไปกับ coding skill หรือ tools บางตัวซะแล้ว)

เมื่อต้องมีการแก้ไข config จะทำการแก้ไขบน branch ซึ่งแตกออกมาจากตัว master ทำให้ถ้าหาก changes ของเรา test ไม่ผ่านก็จะไม่กระทบกับ master (หรือก็คือ existing config นั่นแหละ)

แต่ถ้าหากการ test เป็นไปด้วยดี ระบบจะทำการ deploy ลงบนอุปกรณ์ network ให้ ขณะเดียวกันก็ merge branch เข้ากับ master ให้โดยอัตโนมัติซึ่งเสมือนว่าเป็นการอัพเดท config ของเรานั่นเอง

Cisco DevNet — NetDevOps CI/CD Pipeline

ลองดู NetDevOps Pipeline นี้เพิ่มเติมอาจจะพอเห็นภาพมากขึ้นครับ

  • สมมุติว่าผมต้องการแก้ไข NTP server บน network ผมก็จะสร้าง branch ใหม่ขึ้นมา และทำการแก้ไข config ไป เช่น เปลี่ยนจาก IP 1.1.1.1 เป็น 2.2.2.2 (แก้ไข code หรือ config ของ automation tool นะครับ)
  • จากนั้นผมก็ test แบบ local บน VM โดยจะโฟกัสไปที่ syntax error มากกว่า เพื่อให้มั่นใจว่าระบบจะสามารถ deploy ลงไปบนอุปกรณ์ network ได้
  • เมื่อไม่มี syntax error ผมก็จะทำการ commit changes ซึ่งหลังจากนั้นก็เป็นหน้าที่ของ build server ที่จะทำงานอัตโนมัติตามแต่ละ step ใน cycle ที่เป็นสีเทา
  • สำหรับการ deploy นั้นจะเริ่มจาก deploy config ลงบน test environment ก่อนแล้ว verify ต่อ ซึ่งถ้าหากว่าผ่านก็จะทำการ deploy ลงบน production environment แล้วก็ verify อีกเช่นเดิม สุดท้ายถ้าไม่มีปัญหาอะไรก็ merge branch เข้าไปหา master เป็นอันว่าจบ

ผมขอขยายความในส่วนของการ deploy ด้วย workflow นี้ละกันครับ

Deployment Process

เอาหละ ผมขอหยุดไว้ที่เพียงเท่านี้ก่อนแล้วกันครับเพราะมันยาวเกินกว่าที่คาดไปมาก ในอนาคตผมจะทำวิดีโอ demo การทำงานแบบ NetDevOps มาให้ดู รอกันหน่อยนะครับผม…

— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —

--

--

Nopnithi Khaokaew (Game)
Nopnithi Khaokaew (Game)

Written by Nopnithi Khaokaew (Game)

Cloud Solutions Architect & Hobbyist Developer | 6x AWS Certified, CKA, CKAD, 2x HashiCorp Certified (Terraform, Vault), etc.