DevOps

 

DevOps โดยความหมายในเชิงปฎิบัติฯ คือ Culture ของการพัฒนาระบบ หรือ แอปพลิเคชั้น ขององค์กรเพื่อตอบสนองความต้องการทางด้าน Business ที่ต้องการที่ต้องการแอฟพลิเคชั้นเพื่อรองรับการใช้งานของลูกค้าได้รวดเร็ว (Time to Market) มีคุณภาพและปรับเปลี่ยนเพื่อรองรับความต้องการที่เปลี่ยนแปลงได้ทันท่วงที การทำ DevOps เลยเป็นแนวทางปฎิบัติเพื่อลดความซับซ้อนในเชิงโครงสร้างของระบบ IT ในการพัฒนาแอปพลิเคชั่นแบบเดิมๆที่ต้องผ่านการประสานงานหลายทอด (SA, Programmer, Architecture, DBA, Network Administrator, Engineer, Security Team etc) ให้ทีมงาน DevOps มองเห็นภาพเดียวกันและทำงานร่วมกันในลักษณะของ Working Group ทำให้การทำงานไม่ซับซ้อนเปิดโอกาสให้มีการดึงศักยภาพของทุกคนมาใช้ได้อย่างเกิดประโยชน์สูงสุด

จากวัตถุประสงค์ข้างต้นการพัฒนาแอปพลิเคชั่นเราจะใช้เครื่องมือเพื่อให้ Working Group ทำงานในกระบวนการพัฒนาแอปพลิเคชั่นได้อย่างมีประสิทธิภาพ โดยใช้แนวคิดแบบ Agile Development โดยใช้กรอบการทำงาน (Framework) แบบ Scrum ซึ่งมี keywork ดังนี้
     – เริ่มพัฒนาทีละส่วนในแต่ละรอบ (Spin)โดยเรียงตามความสำคัญ (Priority) ซึ่งเราไม่จำเป็นต้องพัฒนาแอปทุกฟังก์ชั่นพร้อมๆกันทั้งหมดแต่เลือกพัฒนาส่วนที่จำเป็นและมีความสำคัญมากก่อนโดย Product Owner จะเป็นผู้เลือกตามข้อมูลที่ Scrum Master / Working Group เห็นพ้องต้องกัน จากนั้นจึงค่อยวางแผนอย่างต่อเนื่องว่า Spin ถัดไปเราจะ Delivery อะไร
     – Change alway welcome การเปลี่ยนแปลงเกิดขึ้นได้ตลอดเวลา Working Group ต้องพร้อมรองรับการเปลี่ยนแปลงทุกเมื่อ
     – Fail Fast / Resolve Fast พร้อมที่จะพบปัญหาและข้อผิดพลาดและปรับปรุงแก้ไขปได้อย่างรวดเร็ว
     – Focus output not process เน้นที่ผลลัพธ์ในการส่งมอบแอปพลิเคชั่นไม่ใช่กระบวนการ
     – Delivery Fast with continuious process เน้นการส่งมอบแอปพลิเคชั่นที่รวดเร็วและต่อเนื่องเพื่อตอบสนอง business need พร้อมทั้งสามารถวางแผนและคาดการ์ณได้ว่าจะได้รับแอปพลิเคชั่นเวอร์ชั่นใหม่เมื่อไหร่ อาทิเช่น New application deployment 2 times per day

จากแนวคิดเรื่อง Agile Development เราจำเป็นต้องมีเครื่องมือรองรับการทำส่งมอบแอปพลิเคชั่นอย่างรวดเร็วและไม่มีข้อผิดพลาด (application delivery process) โดยเทคนิคที่นิยมใช้กันในปัจจุบันจะเป็นการรับแอปพลิเคชั่นบน Container platform ซึ่งทางdevelopment สามารถสร้าง application container พร้อมทั้งทำการทดสอบจนแอปพลิเคชี่นเสร็จสมบูรณ์ จากนั้นทาง operation จะนำ container application ขึ้นรันใช้งานบน production ได้โดยไม่ต้องมีการคอนฟิกเพิ่มเติม (zero configure) ทำให้แอปพลิเคชั่นพร้อมใช้งานบน production environment ได้ทันที นอกจากนั้นเพื่อให้การใช้งานแอปพลิเคชั่น ใน production environment มีความยืดหยุ่นและรองรับการใช้งานเข้าใช้งานในแต่ละสถานการ์ณได้อย่างเหมาะสม จึงจำเป็นต้องมีตัวจัดการ Container (Orchestrator System) ทั้งในรูปแบบของ Swarm และ Kubernetes

  นอกจากนั้นเพื่อให้กระบวนการส่งมอบแอปพลิเคชั่นสามารถดำเนินการได้อย่างรวดเร็วและทำงานได้ตลอดเวลา จึงจำเป็นต้องใช้ระบบ CI/CD (Continuous Integration, Continuous Development) เพื่อจัดการกระบวนการส่งมอบแอปพลิเคชั่นแบบอัตโนมัติต่อไป