DevOps Handbook #2 : The three ways

Pasita T
2 min readApr 22, 2018

--

ก่อนอื่นก็พูดถึง ที่มาของ DevOps ซักเล็กน้อย คือพื้นฐานมันก้อมาจากแนวคิดสายงานผลิตโรงงาน คือ พวก Lean, Theory of Constraints, Toyota Kata อะไรเทือกนี้ บวกกับแนวคิด “Agile”่ ใน software development

เอาเป็นว่าโดยรวมแล้ว DevOps มุ่งเน้นที่จะมีกระบวนการที่เรียบง่าย คล่องตัว และมอบ value สู่ลูกค้าได้อย่างถูกจุด และเร็วโคดๆๆๆ

ทีนี้เราก็จะเริ่มพูดถึงว่าการจะเปลี่ยนผ่านนั้นเราจะต้องทำอะไรกันบ้าง ก้อมี 3 เส้นทางหลักที่เราต้องข้ามผ่านไปกันให้ได้

  1. The Principles of Flow
  2. The Principles of Feedback
  3. The principles of Continual Learning and experimentation

Way#1 Principles of Flows

อันนี้พูดถึงการ flow จากซ้ายไปขวา (left-to-right) คือ จาก Dev->Ops->User ว่าเราต้องมี flow ที่ทำงานได้รวดเร็ว โดยแนวคิดตามนี้

  • Make our work visible — คือ ต้องเริ่มจากมองเห็นงานให้ได้ ว่า process งานมัน flow ยังไง และเห็นว่าตอนนี้มันถึงไหนแล้ว ซึ่งเทคนิคที่ใช้ก้อเช่น Kanban board อันที่ simple สุดหน้าตาประมาณนี้ แต่ยังมีอีกหลายแบบลอง search ดูได้
source : Wikimedia (คือในหนังสือจริงๆจะแบ่งเลนละเอียดกว่านี้ แต่ตามไปอ่านกันเองนะ)
  • Limit work in process (WIP) — คือ พยายามอย่าให้มีงาน work in progress เยอะนัก ถ้าทำหลายๆอย่างพร้อมกัน สุดท้ายเวลาที่ใช้ในการทำมันก็จะสูง คือ มีแต่งานที่ทำอยู่ ไม่มีอะไรเสร็จซักอย่าง สู้เรา priority แล้วให้งานที่สำคัญผ่านออกไปอย่างรวดเร็วดีกว่า เทคนิคที่ใช้ก้อเช่น กำหนดเลยว่าทีมเรามี WIP ได้ไม่เกินเท่านี้ๆงานเป็นต้น
  • Reduce batch sizes — อันนี้อาจจะกลับกับแนวคิดโรงงานสมัยก่อนที่มีแนวคิดว่าต้องทำเป็นล็อตใหญ่ๆสิถึงจะเร็ว จะได้ไม่ต้องมี switching time เยอะ แต่แนวคิดนี้เชื่อว่าการทำ batch เล็กๆมันเร็วกว่า มี WIP น้อยด้วย แถมถ้าเกิดระหว่างทางเกิดมีผิดพลาด เราก็กลับตัวได้ทัน (คหสต เข้าใจว่ามันเหมาะกับกรณี IT เพราะมี switching time ต่ำนะ) มีการทดลองด้วยตามไปดูได้ใน link นี้ https://medium.com/@stefanluyten/single-piece-flow-5d2c2bec845b
  • Reduce the number of Handoffs — คือ ถ้าเราต้องส่งต่องานกันเยอะ มันก้อจะเสียเวลามาก ทั้งคุย เขียน request ตามงาน เพราะฉะนั้นใน flow หนึ่งๆนั้นควรให้มีการส่งต่อกันไปมาให้น้อยที่สุด
  • Continually identify and elevate our constaints — ต้องคอยมองหา bottleneck อยู่เสมอ ว่าตรงไหนในกระบวนการที่ยังเป็นคอขวด ปรับตรงนั้นให้ดีขึ้น ภาพรวมจะได้ดีขึ้น
  • Eliminate hardships and waste in the value stream — ถ้าใครรู้จัก lean มาก่อนจะรู้จักกับเรื่องนี้ดี มันคือการดูว่าในกระบวนการทำงานของเรานั้นมีส่วนไหนที่มีขยะ (waste) ที่เราไม่ควรทำอยู่บ้างก็ลดๆมันลงซะ ในทีนี้พูดถึง waste ว่ามีหลายตัว เช่น Extra processes, Task switching, Waiting, Defects, Manual work และอื่นๆ ตัวที่ชอบมากคือ waste ที่ชื่อว่า Heroics เพิ่งเคยเห็น มันบอกว่าในการจะทำงานให้สำเร็จถ้าทีมเราต้องมี unreasonable acts คือแบบทำตัวเป็นฮีโร่มากเช่น deploy ก้อต้องอยู่ทำมันกลางค่ำกลางคืนมันทุก release เพื่อให้เสร็จ อันนี้ก็ถือเป็น waste เหมือนกันเฮ้ย

โดยสรุปคือ ภาคนี้หลักๆก็มาจากแนวคิด Lean ชาวโรงงาน คือ ทำในสิ่งที่ลูกค้าต้องการจริงๆ ทำ batch เล็กๆ ด้วยกระบวนที่ใช้เวลาให้สั้นที่สุด waste น้อยสุด และคอย ดูปรับกระบวนการอยู่เสมอ

ถ้าสรุปนี้ยังยาวไป จำไม่ได้อีกก็จำไว้ว่า เล็ก สั้น ขยันซอย ละกันฮะ คือ batchเล็ก กระบวนการสั้น ขยันปรับปรุง

Note: อันนี้เป็นสรุปจากการอ่านหนังสือ DevOps Handbook อาจมีผิดถูกบ้าง + มีคหสตบ้างเล็กน้อย ถ้าสนใจไปซื้อหาอ่านเล่มจริงกันต่อได้

ติดตามตอนอื่นๆ

--

--