Screen Shot 2558-02-09 at 11.04.12 AM
คำว่า DevOps นั้นมาจากการรวมกันของคำว่า Development กับ Operation
โดยที่คำนี้ได้รวมเอามาจากแนวคิดของ Agile กับ Lean เข้าด้วยกัน
เพื่อช่วยลดปัญหา ข้อขัดแย้ง
รวมทั้งยังช่วยปรับปรุงการทำงานร่วมกันขององค์กรอย่างต่อเนื่อง
ตลอดจนเป็นการสร้างวัฒนธรรมขององค์กรอีกด้วย
โดยคนที่แต่ละหน่วยงานจะต้องมีความเคารพ เชื่อมั่น และ ไว้ใจซึ่งกันและกัน

เริ่มต้นกับ DevOps

แต่ในโลกของ internet นั้น เมื่อพูดถึง DevOps แล้ว
พบว่ามันคือ เรื่องของ technology และ เครื่องมือต่างๆ ทั้งนั้นเลย
ซึ่งไม่ใช่สิ่งที่ผิดอะไรมากนัก (แต่ก็ควรเข้าใจที่มาที่ไปของมันก่อนนะครับ)

ดังนั้น ในการเลือก technology และ เครื่องมือ ควรให้เหมาะสมกับงาน
ทั้งขั้นตอนการ developerment, testing และ delivery
โดยทุกๆ คน ต้องเข้ามามีส่วนร่วมเพื่อให้เกิดประสิทธิภาพสูงสุด
ลดความเสี่ยงที่เกิดจากคนลงไป
ลดสิ่งที่สิ้นเปลืองลงไป
ปรับปรุงเรื่อง time-to-market

สิ่งที่ฝากไว้นิดหน่อย

DevOps มันคือสิ่งทีถูกสร้างมาจากกลุ่มคนที่เชื่อว่า
การสร้างระบบงานมันต้องมาจากการรวมกันของ technology ที่เหมาะสม และทัศนคติของคนทำงาน
เพื่อช่วยทำให้โลกของการ development และ delivery software มันดีขึ้น
และมีวิวัฒนาการที่ดีขึ้นกว่าเดิม

ลองมาดูสิว่าในโลกของ DevOps เขาใช้เครื่องมืออะไรกันบ้าง

โดยเน้นเรื่องของคุณภาพของ product/software ที่ส่งมอบ
และช่วยให้ได้ feedback ที่รวดเร็ว
ซึ่งแบ่งออกเป็นหัวข้อได้ดังนี้

1. Development

ใช้ Git และ GitHub ในการจัดการ version ของ code
และการทำงานร่วมกันของทีมต่างๆ

2. Virtual Machines

Vagrant
เป็น software สำหรับการ configuration และ run Virtual environment
บน Virtual software ต่างๆ เช่น VirtualBox, KVM หรือ VMWare เป็นต้น
หรือจะไปทำงานบน cloud ก็ได้นะ
ที่สำคัญ Vagrant มันยังสามารถทำงานร่วมกับพวก configuration management tool อื่นๆ ได้อีก
เช่น Chef, Ansible และ Puppet เป็นต้น
ยังไม่พอเรายังสามารถ spin up พวก Virtual Machine ด้วยคำสั่งง่ายๆ ว่า vagrant up เท่านั้นเอง

Packer
ใช้สำหรับการสร้าง image ของ Vagrant แบบอัตโนมัติ
ซึ่งได้ทั้ง Linux และ Windows

3. Configuration Management

Ansible, Chef และ Puppet
เป็นกลุ่มของเครื่องมือที่ทำทั้ง configuration management และ การ deployment แบบอัตโนมัติ
โดยทั้ง 3 นั้นได้รับความนิยมในอันดับต้นของ DevOps
แต่ทั้ง 3 ก็ต่างมีทั้งจุดเด่นจุดด้อย ดังนั้นเลือกใช้ให้เหมาะสมกับงานก็แล้วกัน

Test Kitchen
แน่นอนว่า จะใช้เครื่องมือเดียวในการทำงาน คงไม่ดีนัก
ดังนั้น จึงนำ Test Kitchen มาใช้เพื่อ ทำการตรวจสอบ script
ของ configuration และ การ deployment ในแต่ละ platform มันถูกต้องหรือไม่
ซึ่งการตรวจสอบมักจะใช้พวก

Elasticsearch และ Kibana
เราจะรู้ได้อย่างไรว่าสิ่งที่เราสร้างขึ้นมาทั้ง

  • การ configuration
  • การ deployment แบบอัตโนมัติ

ที่สร้างจาก Vargrant, Ansible, Chef และ Puppet มันทำงานได้ดี และ ถูกต้อง

ดังนั้น เราควรทำการเก็บผมการทำงานต่างๆ ไว้ใน Elasticsearch
และนำออกมาแสดงผลในรูปแบบของ Dashboard ด้วย Kibana
เพื่อทำให้ง่าย และ สะดวกต่อการวิเคราะห์ข้อมูล

 

แล้วคุณล่ะใช้อะไรกันบ้าง ?
ลองเอามาแบ่งปันบ้างไหมว่า คุณนำอะไรไปใช้ ใน use case ไหนบ้าง ?

Tags: