DNF แรกกับระยะ Ultra Trail 100Miles – Pong Yaeng Trail 2018 (งานวิ่งโป่งแยงเทรล 2018)

งานโป่งแยง สนามที่เหมือนสวนหลังบ้าน จำได้ทุกจุด ทุกรอยหยักบนแผนที่ เพราะผ่านมาแล้วทั้ง PYT66 กม และ PYT100 กม ปีนี้เลยอาจหาญขอลอง 100ไมล์ (166กม) Continue reading “DNF แรกกับระยะ Ultra Trail 100Miles – Pong Yaeng Trail 2018 (งานวิ่งโป่งแยงเทรล 2018)” »

อยากทำ The Twelve Factors จะเริ่มต้นอย่างไรดี และต้องเรียนรู้อะไรบ้าง

มาเพิ่มเติมจากบล็อกที่แล้วที่ผมได้เขียน “สรุปแนวคิด THE TWELVE FACTORS ในภาพเดียวจบ” เพื่อให้เห็นภาพได้ชัดเจนขึ้นว่า ถ้าต้องการทำ The Twelve Factors เราต้องเรียนรู้อะไรบ้าง

บล็อกเก่าผมวาดด้วยมืออาจจะอ่านไม่ค่อยออก บล็อกนี้เลยขอทำจากโปรแกรมแทน น่าจะดูดีขึ้น ฮ่าๆ

1. ขึงด้วยภาพ System Architecture เดิมๆ ของคุณ

ถ้าลองเอาภาพโครงสร้าง System Architecture มากางดู น่าจะคล้ายๆภาพนี้ ซึ่งผมขอแนะนำให้คุณลองประกอบภาพให้เป็นแบบ End to End หมายความว่า ตั้งแต่ Developer เขียนโค้ดเสร็จ ยาวไปจนถึง ขึ้น Production Environment และมีลูกค้าเข้ามาใช้งาน

เพราะอะไร ทำไมต้อง End to End? เพราะบางทีภาพของ System Architecture มันทับซ้อนกับ Network Architecture อยู่ และมักมีเพียงการเชื่อมโยงของ Server ว่าอะไรเชื่อมต่ออย่างไร แต่ไม่มีส่วนไหนไปเชื่อมโยงกับ Development Process, Support Process เลย แล้วจะรู้ได้อย่างไรว่า Source Code จะมาถูก Build และ Deployment เข้าสู่ Environment มันมีที่มาที่ไปอย่างไร

ถ้าบอกว่าองค์กรเราอยากเป็น DevOps ภาพพวกนี้ควรต้องมีอย่างแรกเลย และ Development Team กับ Infrastructure Team ต้องทำงานร่วมกันอย่างดูดดื่มด้วยนะ


ภาพจาก http://www.myifew.com (ผมวาดเอง ไม่แปะเครดิตให้รก แต่ถ้าเอาไปใช้ หรือลอกต่อ รบกวนใส่อ้างอิงด้วยนะ)

2. เชื่อมต่อกับ The Twelve Factor ในแต่ละข้อ

เมื่อได้ภาพ System Architecture ทั้งหมด ให้ลองไปทำความเข้าใจเรื่องของ The Twelve Factor และลองพิจารณาดูว่า ข้อไหน ควรต้องไป Implement ในตำแหน่งไหนบ้าง, หรือกำหนดว่าภาพสุดท้ายที่เราต้องการ ควรเป็นแบบไหน

ภาพจาก http://www.myifew.com (ผมวาดเอง ไม่แปะเครดิตให้รก แต่ถ้าเอาไปใช้ หรือลอกต่อ รบกวนใส่อ้างอิงด้วยนะ)

3. ระบุ Practices ที่จะทำให้เกิดผลลัพธ์

ขั้นตอนสุดท้าย น่าจะยากที่สุด และเจ็บปวดที่สุดแล้วหละครับ

ยากที่สุดคือ คุณจะรู้ได้อย่างไรล่ะ ว่ามันต้องใช้ Practices อะไรในการทำให้เกิดในแต่ละข้อ?, แน่นอน มันไม่สามารถรู้ได้ ถ้าคุณไม่ทำการค้นคว้าไปทีละข้อ

ซึ่งก็นับว่าโชคดีนิดหนึ่งที่เว็บต้นฉบับอย่าง 12factors.net ได้พูดถึง Practices และเครื่องมือที่จะทำให้ได้ในแต่ละข้อได้บ้างแล้ว อย่างเช่น เรื่องของ Codebase

ภาพจาก https://12factor.net/codebase

ในหน้าที่อธิบาย Codebase มีการอธิบายอยู่สามแบบที่ผมตีกรอบไว้

กรอบสีแดง: บอกไว้ชัดๆเลยว่า ใช้เครื่องมืออะไร, แต่! เครื่องมือแต่ละตัวมันมี Practices ประกอบการใช้อยู่นะ เช่น ใช้ Git จะใช้ให้ดี คุณควรต้องรู้เรื่องการจัดการ Branch ต่างๆ (Branch Strategy)

กรอบสีน้ำเงิน: กล่าวถึงหัวข้อที่เกี่ยวข้องใน The Twelve Factors และ/หรือ หัวข้อ Practices อื่นๆ ที่คุณสามารถเอาชื่อพวกนี้ไปค้นคว้าต่อได้ เช่น  Dependency Management คืออะไร ทำอย่างไร ใช้เครื่องมืออะไร

กรอบสีเขียว: อันนี้ต้องตีความให้ออกว่าเป้าหมายคืออะไร อย่างในตัวอย่าง คือใช้ Source Code ที่โปรแกรมเมอร์ทุกคนทำเสร็จพร้อมรวมโค้ดกันเรียบร้อยแล้ว และต้องอยู่บนที่ที่เดียวกัน (Single Repository) และโค้ดนั้นต้องพร้อม Deploy ไปหลายๆ Environment ได้ด้วย… เออ นั่นหละครับ ปัญหาคือ โค้ดโปรแกรมเมอร์รวมกันแล้วมันทำงานได้ไหม? ต้องทดสอบก่อนไหม? ทดสอบอย่างไร? แล้ว config ที่ถูกตั้งไว้ของโปรแกรมเมอร์แต่ละเครื่องไม่เหมือนกันทำอย่างไร? แล้ว config ของแต่ละ Envinronment ก็ไม่เหมือนกันด้วย จะทำอย่างไร? …

ภาพด้านล่างเป็นตัวอย่าง Practices ที่ผมลองเชื่อมโยงให้เข้ากับ The Twelve Factors และถูกใช้งานจริงกับบริษัทลูกค้า, ลองเอาไปพิจารณาดูครับ

 

ภาพจาก http://www.myifew.com (ผมวาดเอง ไม่แปะเครดิตให้รก แต่ถ้าเอาไปใช้ หรือลอกต่อ รบกวนใส่อ้างอิงด้วยนะ)

สุดท้ายยังเหลืออีกข้อที่ผมค้างอยู่ ที่บอกว่าเจ็บปวดที่สุด และก็ท้าทายที่สุด คือ

  • ตอนนี้ ทีมเรา รู้อะไร ทำอะไรได้แล้วบ้าง?
  • ที่ทีมเราต้องเรียนรู้เพิ่มมีอะไรบ้าง?
  • หากต้องทำให้เกิดในองค์กร จะมีอุปสรรคอะไร และแก้ไขมันอย่างไร?

ขอให้โชคดี มีชัย อ่านบล็อกนี้แล้ว นอนหลับฝันดี…

สรุปแนวคิด The Twelve Factors ในภาพเดียวจบ

ถ้าจำครั้งที่ผมเขียนถึงการทำงานที่ Ookbee Mall และพยายามทำ AWS Cloud ให้มัน Auto-Scaling ได้เนียนๆ ผมรู้สึกเสียดายทันทีที่ไม่รู้จักวิธีการของ The Twelve Factors ในตอนนั้น, ซึ่งถ้ารู้ ก็จะเป็นไกด์อย่างดีที่จะพาผมไปพบ Solution ในการทำเว็บให้รองรับ Cloud และรองรับการขยายของ Cloud ได้ โดยไม่ต้องงมเข็มในมหาสมุทร

ผมมีโอกาสได้ฟังอาจารย์อู๋เล่าเรื่อง The Twelve Factors อยู่หลายครั้ง แต่เพิ่งมีโอกาสได้หาข้อมูลเพิ่มและคุยเพื่อประติดประต่อเรื่องนี้แบบจริงจัง เพื่อให้เห็นความเชื่อมโยงกันเป็นภาพเดียวกัน ผสมกับความรู้อื่นๆและประสบการณ์ตัวเอง เลยลองแชร์ให้ได้อ่านกัน Continue reading “สรุปแนวคิด The Twelve Factors ในภาพเดียวจบ” »

เมื่อ Unit Test ต้องทดสอบร่วมกับระบบอื่นๆ จะแก้ปัญหาอย่างไร?.. มารู้จัก Test Doubles กัน

หลังจากเขียนเรื่อง Unit Test ไปก็หลายบล็อก ไล่ตั้งแต่เรื่องพื้นฐานอย่าง การออกแบบระบบให้รองรับการทดสอบ (Testable) มาจนถึง วิธีการคิดและลงมือทำ Automated Test ด้วย Unit Test และ รูปแบบการทดสอบของ Unit Test ก็ยังเหลือเรื่องหนึ่งที่สำคัญมากและหลายคนอาจจะสงสัยตอนที่ทำ Unit Test นั่นก็คือ “จะทำอย่างไร เมื่อสิ่งที่เราทดสอบ อย่าง Class, Function มันต้องไปทำงานร่วมกับสิ่งอื่นๆ เช่น Class อื่นๆ, Function อื่นๆ, Database, API ตัวอื่นๆ ของเรา หรือ API ภายนอกระบบ” .. Continue reading “เมื่อ Unit Test ต้องทดสอบร่วมกับระบบอื่นๆ จะแก้ปัญหาอย่างไร?.. มารู้จัก Test Doubles กัน” »

ผู้นำเชิงบวก ด้วยทักษะการโค้ชและพี่เลี้ยง (Coaching and Mentoring)

เป็นคลาสแรกที่ไปนั่งเรียนเรื่อง Coaching และ Mentoring แบบจริงจัง ปกติอ่านจากหนังสือบ้าง Internet บ้างตามประสา ซึ่งทำให้ปะติดปะต่อเรื่องต่างๆ และเข้าใจอะไรเพิ่มมากขึ้นเกี่ยวกับการเป็น Coach และ Mentor รวมถึงคลาสนี้สอนเพิ่มด้วยว่า การเป็นผู้นำที่ดี ต้องทำอย่างไร Continue reading “ผู้นำเชิงบวก ด้วยทักษะการโค้ชและพี่เลี้ยง (Coaching and Mentoring)” »