จากบทความเรื่อง
7 SIGNS YOU'RE DOING DEVOPS WRONG
ได้อธิบายเกี่ยวกับการนำ DevOps ที่ผิด ๆ
เป็นสิ่งที่น่าสนใจมาก เพื่อไม่ให้เดินไปในทางที่ผิด
จึงนำมาแปลนิดหน่อย มาดูกันว่ามีอะไรบ้าง ?
Anything that can go wrong, will go wrong.
-- Murphy's law
1. จำเป็นต้องซื้อทุกอย่างสำหรับ DevOps
ไม่ว่าจะเป็น Hardware เช่น Server, Network, Router, Switching และ Load balance
ไม่ว่าจะเป็น Software เช่น OS, Antivirus, Project management, Business และ Monitoring เป็นต้น
ไม่ว่าจะเป็นพนักงานใหม่ เพื่อมาดูระบบใหม่ของ DevOps ส่วนใหญ่จะเป็นคนใหม่หรือเลือดใหม่มาเลย
เนื่องจากบริษัทเชื่อว่า
ในการจะทำสิ่งใหม่ ๆ ที่ยิ่งใหญ่ได้นั้น
จำเป็นจะต้องลงทุน และ ซื้อทุกสิ่งทุกอย่าง
เพื่อช่วยให้ business มันประสบความสำเร็จ
ซึ่ง DevOps ก็เช่นกัน ซื้อ DevOps กันไปเลย !!
แต่เดี๋ยวก่อน DevOps มันไม่ใช่ product หรือ service ที่จะซื้อขายกันได้
ดังนั้น ต้องเริ่มต้นแนวคิดพื้นฐานของ DevOps ก่อน
จากนั้นจึงเริ่มทำการปรับเปลี่ยนขั้นตอนการทำงานด้วยแนวปฏิบัติต่าง ๆ
If your company has a devops budget, you're doing devops wrong.
2. บอกว่า DevOps มันคือ software และ เครื่องมือ
อย่าเริ่มต้นด้วย software หรือ เครื่องมือ
แต่ให้เริ่มจากเรื่องพื้นฐานตามข้อ 1
เราปฏิเสธไม่ได้ว่า
DevOps จะประสบความสำเร็จไม่ได้เลย
ถ้าปราศจาก software และ เครื่องมือต่าง ๆ
เนื่องจากหัวใจหลักอย่างหนึ่งของ DevOps คือ Automation
แต่เราควรรู้ว่า
เมื่อไรเราจึงนำเอาเครื่องมือเหล่านั้นมาใช้งาน
เราควรต้องรู้ tradeoff ของเครื่องมือ
เราควรต้องรู้ความต้องการ
อย่างให้เครื่องมือมาล้อมกรอบความคิดในการแก้ไขปัญหาโดยเด็ดขาด
If your company bought Chef or Puppet as a cure-all for its devops needs, you're doing devops wrong.
3. ใช้ checklist หรือ หนังสือคู่มือสำหรับการ deploy ระบบงาน
เนื่องจากหัวใจหลักอย่างหนึ่งของ DevOps คือ Automation
ดังนั้นองค์กรจะพยายามเปลี่ยนขั้นตอนแบบ manual
ให้เป็นแบบ Automate ให้มากที่สุดเท่าที่จะเป็นไปได้
เพื่อลดความผิดพลาดที่เกิดจากคน (Human error)
รวมทั้งให้เกิดขั้นตอนการพัฒนา software ที่มีมาตรฐาน
แต่จะทำให้เกิดขึ้นได้นั้น
เรื่องของความเชื่อมั่นต่อระบบ ต่อคนต้องสูงในระดับหนึ่ง
ถือว่าเป็นสิ่งที่ท้าทายอย่างมากสำหรับองค์กร
ถ้าปราศจาคสิ่งเหล่านี้แล้ว ถึงแม้จะนำ DevOps มาใช้งาน
ก็จะยังคง deploy ระบบงานเช่นเดิม
นั่นคือ มีการเขียน checklistและมีหนังสือคู่มือไว้สำหรับการ deploy ระบบ
มัน Automate ตรงไหนนะ !!
หรือบางครั้ง เพื่อนร่วมงานอาจจะบอกว่า
เราไม่มีเวลาสำหรับการ Automate หรอกนะ
ส่วนนี้เรามาทำงานแบบ manual ดีกว่า มันเร็วกว่านะ
แสดงว่า คุณต้องมีปัญหาอะไรสักอย่างแล้วนะ
If your company spends hours poring over checklists to ensure code is ready to be deployed, you're doing devops wrong.
4. ใช้เวลาหลายเดือน หรือ เป็นปี สำหรับการ release ระบบแต่ละรอบ !!
เป้าหมายของ DevOps คือ Automation
เป้าหมายของ DevOps คือ ต้องการ release feature ใหม่ ๆ ให้รวดเร็ว
เป้าหมาบของ DevOps คือ ต้องการแก้ไขความผิดพลาดอย่างรวดเร็ว
แต่ถ้านำ DevOps มาใช้แล้ว แต่ยังช้าเหมือนเดิม
แสดงว่า คุณเพียงแค่เปลี่ยนชื่อของการทำงานหรือไม่ ?
เพื่อให้มันเป็นไปตามกระแสนิยม หรือ ความนิยมของตลาด
มันต่างกับการพัฒนาในรูปแบบเดิม หรือ Waterfall อย่างไรกัน ?
DevOps นั้นได้มีที่มาที่ไปจาก
Continuous Integration และ Continuous Delivery/Deployment
โดยหัวใจหลักของสองอย่างนี้ คือ
Continuous
ดังนั้น เมื่อนำแนวคิดมาใช้งานแล้ว
ลองถามตัวคุณเองสิว่า คุณทำงานแบบ Continuous หรือไม่ ?
เช่น
ทำการ checkout/commit code บ่อยหรือไม่ ?
ทำการทดสอบบ่อยหรือไม่ ?
ทำการทดสอบแบบอัตโนมัติหรือไม่ ?
ทำการ deploy code บ่อยหรือไม่ ?
ทำการ release ระบบบ่อยหรือไม่ ?
If your company releases code changes less frequently than the harvest moon, you're doing devops wrong -- no matter how small the changes or how quickly you make them.
5. ความผิดพลาดเป็นสิ่งที่ยอมรับไม่ได้ หรือ เป็นเรื่องขอขาดบาดตาย
เมื่อเกิดปัญหา หรือ ข้อผิดพลาดขึ้นมาบน production server
สิ่งที่เกิดขึ้นตามมา นั่นคือ ความหายนะของคน
ปิดห้องประชุมเครียด
หาคนทำผิด เพื่อต่อว่า หรือ ลงโทษ
อาจจะถึงขั้นต้องไล่ออก หรือ เปลี่ยนงานกันเลย
แสดงว่ามีการนำ DevOps มาใช้ในทางที่ผิดอย่างมาก
สิ่งที่มันควรเป็น คือ เราต้องเรียนรู้จากความผิดพลาด
ไม่ใช่มาหาคนทำผิด
ไม่ใช่โยนปัญหาไปมา
ให้เปลี่ยนเป็นการเรียนรู้ และ ช่วยกันหาจุดผิดพลาด
จากนั้นทำการเขียน Automate test ขึ้นมา
เพื่อจำลองปัญหาเหล่านั้นซะ
จากนั้นทำการแก้ไขปัญหา
สุดท้ายเราจะได้ Automate test เพิ่ม
นั่นคือ การเพิ่มความเชื่อถือ เชื่อมั่นต่อคน และ ระบบมากขึ้นไปอีก
ประเด็นหลัก คือ
คุณรู้ความผิดพลาดได้รวดเร็วเพียงใด ?
คุณแก้ไขความผิดพลาดได้รวดเร็วเพียงใด ?
ไม่ใช่มีคน หรือ กลุ่มคนหนึ่ง ๆ มาจัดการ
แต่มันคือเรื่องของทุกคน ที่ต้องช่วยเหลือกัน
เมื่อใดก็ตามที่ทุก ๆ คน กลัวการ deploy ระบบขึ้น production
นั่นหมายถึง คุณกำลังนำ DevOps มาใช้ในทางที่ผิดแล้วนะ
If you are no longer trusted with commit rights to production because you have made or might make a mistake, you're doing devops wrong.
6. เมื่อมีปัญหาเกิดขึ้น เราจะโยนความผิดไปให้คนอื่น (Blame organization)
แนวคิดหลักของ DevOps นั้นนำมาจาก Lean
และ จะไม่ทำการโยนความผิด หรือ ความรับผิดชอบไปให้คนอื่น ๆ
ซึ่งถือว่าเป็นหัวใจหลัก ๆ ของ DevOps เช่นกัน
นั่นคือ มันทำให้เราไม่กลัวความผิดพลาด
ลดการโยนงาน โยนความผิด เราชอบเรียกว่า การโบ้ย
หรือความดีเอาใส่ตัว ความชั่วใส่คนอื่น
ตัวอย่างเช่น
ทีมพัฒนาทำการพัฒนาเสร็จแล้ว ทดสอบที่ developement server เรียบร้อย
ทำการส่ง code ให้กับทางทีมoperation ทำการ deploy ไปยัง production server
แต่ว่าไม่สามารถ deploy ได้
คำถาม
จะเกิดอะไรขึ้นหลังจากนี้บ้าง ?
คำตอบ
ทีม operation ก็จะบอกว่า code ผิด
ส่วนทีมพัฒนา ก็จะบอกว่า operation ทำการเตรียม server ต่าง ๆ ไม่ถูกหรือไม่ ?
นี่แหละที่เรียกว่า Blame organization
ซึ่งมันไม่ส่งผลดีกับใครเลย !!
ส่วนการแก้ไขด้วยแนวคิด DevOps มันจะต่างออกไป
นั่นคือทำการตรวจสอบว่า
ทั้งสอง environment นั้นมันแตกต่างกันอย่างไรบ้าง ?
เมื่อเจอปัญหาแล้ว จะทำการเขียนชุด Automate test ขึ้นมาทดสอบ
เพื่อทำให้มั่นใจ และ แน่ใจว่า จะไม่เกิดปัญหานี้ในอนาคต
หรือถ้าเกิดปัญหาเราจะรู้ต้นเหตุของปัญหาได้อย่างรวดเร็ว
If your company is firing staff simply for bringing down production, you're doing devops wrong -- regardless of any presumed role or responsibilities you attribute to those involved.
7. ทีมพัฒนา และ ทีม operation แยกกันทำงานอย่างชัดเจน (Silo)
DevOps มันมาจากสองคำ คือ Developer และ Operations
ดังนั้น
ถ้า developer และ operation ไม่พูดภาษาเดียวกัน
ถ้า developer และ operation ไม่ทำงานด้วยกัน
ถ้า developer และ operation ไม่เข้าใจซึ่งกันและกัน
เป็นไปได้ยากที่การนำ DevOps มาใช้งานจะดี และ ประสบความสำเร็จดังที่ตั้งไว้
DevOps มันเน้นเรื่องของการทำงานร่วมกันอย่างมาก
ทุกคนที่เกี่ยวข้องกับการพัฒนา software นั้น ๆ
จะต้องมาร่วมทำงานกันเป็นทีม
โดยทุกคนมีเป้าหมายของการทำงานเดียวกัน
นั่นคือสร้าง software ที่มีคุณภาพ และ ช่วยทำให้ business วิ่งไปข้างหน้าและเติบโต
If your company has developers on one floor and operations on another, with code commit messages as the only means of communication, you're doing devops wrong.
It’s all about the culture
แน่นอนว่า DevOps มันไม่ได้เหมาะสมกับทุก ๆ องค์กร
ทั้ง 7 ข้อนั้น คือ สิ่งที่บ่งบอก หรือ เตือนคุณว่า
กำลังใช้ DevOpsใ นทางที่ผิดนะ
เพื่อให้ปรับปรุง และ แก้ไขให้ดีขึ้น
ให้มันเหมาะสมในแต่ละระบบ แต่ละทีม แต่ละองค์กรไป
การนำ DevOps มันไม่ง่ายเลย
ต้องทำงานอย่างหนัก
ต้องใช้ความอดทนสูง
ต้องเข้าใจคนทำงาน
และแน่นอนว่า
ฝั่ง business และ management ต้องเข้าใจ และ ให้การสนับสนุนด้วยนะ