ช่วงวันหยุดหยิบหนังสือ Accelerate: The Science of Lean Software and DevOps มาอ่าน
เป็นหนังสือที่สรุปส่วนประกอบต่าง ๆ
ที่ช่วยให้บริษัท IT ขับเคลื่อนได้อย่างดี (high-performance) ทั้งองค์กรและทีม
โดยทำการสรุปข้อมูลมาจาก State of DevOps Report ตั้งแต่ปี 2014

จาก State of DevOps Report นั้น
ทำให้เข้าใจได้ว่า การนำแนวคิด DevOps นั้น
ต้องนำแนวปฏิบัติ (Practice) อะไรมาใช้บ้าง ?
วัฒนธรรมขององค์กรต้องเอื้อและสนับสนุนอย่างไร ?
เพื่อปรับปรุงการพัฒนาและส่งมอบระบบงานให้เร็วและมีคุณภาพ (Correctness, Performance และ Security)
ส่งผลให้ได้รับ feedback เพื่อปรับปรุง

จากข้อมูลต่าง ๆ จึงสรุปออกมาเป็น 24 ข้อ (จะเยอะไปไหน)
ซึ่งแบ่งเป็นกลุ่มใหญ่ ๆ 5 กลุ่มคือ

  1. Continuous Delivery
  2. Architecture
  3. Product and Process
  4. Lean management and Monitoring
  5. Cultural

มาดูรายละเอียดในแต่ละกลุ่ม ยกเว้นกลุ่มที่ 5 นะ อธิบายยากไป

กลุ่มที่ 1 Continuous Delivery

ประกอบไปด้วย 8 ข้อคือ

  • ใช้งาน version control สำหรับจัดเก็บ source code ของระบบงาน, configuration และ script สำหรับการทำงานแบบอัตโนมัติต่าง ๆ
  • มีขั้นตอนการ deploy ระบบงานแบบอัตโมัติ โดยไม่มีการทำงานแบบ manual คั่นเลย
  • มีการ implement ระบบ Continuous Integration (CI) ซึ่งเป็นหัวใจและก้าวแรกของ Continuous Delivery เป็นแนวปฏิบัติสำคัญของการพัฒนาเลยทีเดียว ตั้งแต่ source code ใน version control มีการเปลี่ยนแปลง  build -> package -> testing -> deploy -> release
  • ใช้งาน Trunk-Based development นั่นคือมี branch ที่น้อย ๆ นั่นคือไม่เกิน 3 branch ถ้าเกินแนะนำให้ branch นั้นมีชีวิตที่สั้นที่สุด ที่สำคัญต้องไม่มีการ lock code/freeze code ด้วย นั่นคือไม่ให้ใคร check-in code เข้าไปได้ แบบนี้ไม่ดีแน่นอน ยิ่งมาก branch ยิ่งมากความ ยิ่งมากปัญหา
  • เรื่องการทดสอบแบบอัตโนมัติ ขาดไปไม่ได้เลย ลด ละ เลิกการทดสอบแบบ manual ที่สำคัญ ชุดการทดสอบต้องมีความน่าเชื่อถือด้วย คำถามคือใครมีหน้าที่หลักในการสร้างและดูแลรักษาชุดการทดสอบ ? ตอบเลยก็คือ คนที่สร้าง code และระบบขึ้นมาไงละ
  • เรื่องของ Test Data Management สำคัญมาก ๆ เนื่องจากการทดสอบแบบอัตโนมัติจะประสบความสำเร็จหรือไม่นั้น ก็ขึ้นอยู่กับการจัดการข้อมูลสำหรับการทดสอบนี่เอง และมักจะละเลยหรือไม่ได้วางแผนกัน ชุดข้อมูลสำหรับการทดสอบต้องสอดคล้องกับความต้องการของระบบงาน ไม่ต้องเยอะแต่ต้องครอบคลุม ข้อมูลต้องสามารถทดสอบซ้ำได้ซ้ำแล้วซ้ำเล่าตามชุดการทดสอบ
  • เรื่องของ Security หรือความปลอดภัยต้องถูกนำเข้ามาตั้งแต่การออกแบบ การพัฒนา และการทดสอบของการพัฒนาระบบงาน เช่นทำการ review security ของระบบจากทีม Security ตั้งแต่การออกแบบระบบงาน ทำการ approve library ที่จะใช้งาน การ packaging รวมถึงการทดสอบในเชิง security มุมต่าง ๆ อีกด้วย (Automated Security Testing)
  • ปิดด้วยเรื่องของ Continuous Delivery (CD) เป็นแนวปฏิบัติที่สำคัญ เพื่อทำให้มั่นใจว่าทุก ๆ การเปลี่ยนพร้อมที่จะ deploy ไปยัง environment ที่กำหนด เมื่อเห็นว่าระบบ CD เกิดปัญหาขึ้นมา ทีมจะต้องหยุดและแก้ไขให้ผ่านทันที เพื่อทำให้มั่นใจว่าจะส่งมอบระบบงานให้กับผู้ใช้งานได้ตลอดเวลา

กลุ่มที่ 2 Architecture

ประกอบไปด้วย 2 ข้อคือ

  • Loosely coupled architecture คือสถาปัตยกรรมที่ช่วยให้แต่ละทีมทำงานเป็นอิสระแก่กัน ส่งผลทำให้สามารถพัฒนา ทดสอบและส่งมอบระบบงานและคุณค่าต่าง ๆ ให้กับผู้ใช้งานและองค์กรได้อย่างรวดเร็วและมีคุณภาพ
  • ข้อมูลจากรายงานพบว่า ทีมจะต้องสามารถเลือกเครื่องมือ เลือกโครงสร้างเพื่อใช้ในการพัฒนา ทดสอบและส่งมอบระบบได้เอง เนื่องจากไม่มีใครที่จะรู้และเข้าใจไปมากกว่าคนที่ลงมือทำจริง ๆ เรียนรู้ที่จะเลือก เรียนรู้ที่จะแก้ไขและปรับปรุง เพื่อประสิทธิภาพของการทำงาน มันจะดีกว่าให้คนที่ไม่ได้ทำมาเลือกและคนที่ทำไม่ได้เลือก !!

กลุ่มที่ 3 Product and Process

ประกอบไปด้วย 4 ข้อคือ

  • product ที่พัฒนาออกมานั้นต้องมาจาก feedback หรือความต้องการที่รับมาจากผู้ใช้งานจริง ๆ เป็นหลัก เพื่อจะสร้าง product ที่ตรงกับความต้องการ แต่การจะได้มาต้องมี process การทำงานที่ดีด้วยเช่นกัน ไม่ใช่คิดเอง เออเอง ทำเองกันไปเรื่อย ๆ ไม่ดีก็ทำใหม่ไปเรื่อย ๆ
  • ทีมจะต้องมีความเข้าใจใน product ร่วมกัน นั่นคือตั้งแต่ business -> development -> deployment -> ลูกค้า จะต้องเห็นภาพเดียวกัน เปิดเผยให้เห็น ทั้งสถานะของ product และ feature ต่าง ๆ ที่จะมี
  • ทีมทำงานเป็นชิ้นเล็ก ๆ ให้เสร็จภายในหนึ่งสัปดาห์หรือน้อยกว่านั้น เป้าหมายหลักคือการแบ่งงานใหญ่ ๆ ออกเป็นงานเล็ก ๆ เพื่อให้ส่งมอบงานได้อย่างต่อเนื่อง รวมทั้งเป็นการเรียนรู้จาก feedback อย่างต่อเนื่องอีกด้วย
  • เปิดโอกาสให้ทีมสามารถทดลองบางสิ่งบางอย่างได้ เพื่อลองทำตามแนวคิดใหม่ ๆ โดยไม่ต้องผ่านการ approve จากคนภายนอกทีม ซึ่งจะเอื้อให้เกิดแนวคิดใหม่ innovation ใหม่ ๆ ขึ้นมาอีกมากมาย จะสัมพันธ์กับการทำงานชิ้นเล็ก ๆ การรับ feedback จากผู้ใช้งาน และต้องให้ทุกคนเห็นภาพร่วมกันอีกด้วย

กลุ่มที่ 4 Lean management and Monitoring

ประกอบไปด้วย 5 ข้อคือ

  • ขั้นตอนการทำงาน เช่น approval process ต้องไม่เทอะทะ ล่าช้า แต่ยังคงเรื่องของคุณภาพนะ
  • ต้องมีระบบ monitoring ทั้ง application และ infrastructure เพื่อช่วยในการตัดสินใจทาง business ว่าเรากำลังเดินถูกทางหรือไม่
  • ต้องมีระบบดูแลสุขภาพของระบบด้วยว่าเป็นอย่างไร เช่น การกำหนด threshold ของการใช้งานรวมถึง rate of error/warning เพื่อช่วยทำให้รู้ว่าระบบงานกำลังจะเกิดปัญหา อย่าทำแบบ reactive คือ รู้ตอนระบบงานพังแล้ว มันไม่ดีนะ
  • ปรับปรุงขั้นตอนการทำงาน โดยจัดการงานแบบ Work-In Process (WIP) limit ซึ่งทำแนวคิดนี้มาจาก Lean
  • แสดงการทำงานต่าง ๆ ออกมาในรูปแบบของ visualization เช่น dashboard และ physical board เป็นต้น เพื่อช่วยให้เห็นว่าสถานะของงานเป็นอย่างไร การพัฒนา ทดสอบ และส่งมอบเป็นอย่างไร ช่วยทำให้ทีมเห็นสถานะของงานตรงกัน

 

มาอ่านหนังสือกันครับ