Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

สิ่งที่บ่งบอกว่ากำลังนำ DevOps ไปใช้แบบผิด ๆ

$
0
0

Screen Shot 2558-12-09 at 10.56.46 AM

Screen Shot 2558-12-09 at 10.56.46 AM จากบทความเรื่อง 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 ต้องเข้าใจ และ ให้การสนับสนุนด้วยนะ

Viewing all articles
Browse latest Browse all 1997

Trending Articles