จากบทความเรื่อง New technologies for the new LinkedIn home page
ทีมพัฒนาของ LinkedIn ได้ทำการอธิบายการพัฒนา Home page ใหม่
โดยได้อธิบายเรื่องเทคโนโลยีที่ใช้ โครงสร้างของระบบ
รวมทั้งขั้นตอนการพัฒนา
มันดูกันว่า เป็นอย่างไรกันบ้าง ?

เป้าหมายหลักในการเปลี่ยนแปลงครั้งนี้

ประกอบไปด้วย

  • ต้องการให้ load หน้า web page ให้เร็วที่สุด เท่าที่จะทำได้
  • เน้นเรื่อง responsive และ ux โดยที่ไม่จำเป็นต้อง load มาทั้งหน้า
  • สร้างระบบที่สามารถจัดการเรื่องคุณภาพแบบอัตโนมัติ แบบเต็ม นั่นคือ Fully Automated test
  • สามารถ deploy ได้บ่อยๆ และ ตลอดเวลาเท่าที่ต้องการ (High speed iteration)

จะเห็นได้ว่า ไม่ได้เปลี่ยนเฉพาะเทคโนโลยีเท่านั้น
แต่ยังรวมไปถึงขั้นตอน และ รูปแบบการพัฒนา
ตลอดจนวิธีคิดอีกด้วย

ระบบเดิมนั้น พัฒนาด้วย Java Web Framework

ซึ่งระบบนั้นมันไม่ได้แย่อะไร แต่มีหลายๆ อย่างที่มันเก่า และ แก้ไขยากหน่อย
ทำให้มันเกิดปัญหา เช่น

  • ความรู้ในเรื่องการ custom framework มันยากนะ แก้ไขยากเลย ดังนั้นเทคโนโลยีที่ใช้อยู่ไม่น่าจะใช่นะ ?
  • เป็นการ render ในฝั่ง server ทำให้มันสนับสนุนพวก responsive ยากมากๆ ดังนั้นมาใช้ JavaScript กันดีกว่า !!
  • หลายๆ หน้า ใช้งานหลายๆ API มั่วไปหมด การทดสอบ และ การ deploy/release ให้บ่อยๆ จะยากมากๆ ทำไงดีล่ะ ?

ดังนั้นจึงเปลี่ยนเทคโนโลยีในการพัฒนาใหม่ ดังรูป

stack

คำอธิบาย
ในฝั่ง Server พัฒนา REST APIs (JSON) ด้วย Play framework
ในฝั่ง Client พัฒนาด้วย dust.js (Javascript template framework)
โดยทั้งสอง framework นั้นพัฒนาจากทีมงานของ LinkedIn นั่นเอง
และสามารถตอบโจทย์ในสิ่งที่ทีมพัฒนาต้องการได้เลย

จากนั้น มาสนใจเรื่องการ deploy/release งานได้บ่อยๆ และ เร็ว !!

เมื่อเราเลือกเทคโนโลยีที่ถูกต้อง และ เหมาะสมแล้ว
ต่อมาเราสนใจในเรื่องการตอบรับการเปลี่ยนแปลงได้เร็ว
ทั้งการแก้ไข การทดสอบ และ deploy/release ระบบได้เร็ว และ บ่อยๆ
ดังนั้น เรื่อง Fast feedback จึงสำคัญมากๆ
และถ้าจะมาทดสอบแบบ manual เหมือนเดิม คงเป็นไปไม่ได้เช่นกัน
ดังนั้น ระบบแบบอัตโนมัติจึงเข้ามามีบทบาท และ สำคัญมากๆ

โดยมีขั้นตอนการพัฒนาใหม่ ดังนี้

  • Source code ของ Home page จะถูกแยกออกมาอีก repository
  • ในส่วนของ Home page จะแยกการ deploy ออกมาอีกด้วย
  • มีชุดของ Automated testing ตั้งแต่ unit test, functional test, integration test ไปจนถึง system test กันเลย

ทำให้ทางทีมพัฒนา สามารถ deploy/release ระบบได้ทุกวันเลย
ซึ่งชุดของ Automated test จะทำงาน 45 นาที (ยังช้ามากอยู่นะ)
ทำให้ทีมพัฒนารู้ว่าระบบ Home page พร้อมที่จะ deploy/release หรือไม่ ?

ขั้นตอนการทำงาน เป็นดังรูป
Screen Shot 2558-04-01 at 12.12.19 PM

สังเกตุไหมว่า
ทางทีมพัฒนาให้ความสำคัญกับ คำว่า คุณภาพอย่างมากๆ
นั่นคือ เรื่องของ Automated test นั่นเอง
แต่แปลกนะ ที่ทีมพัฒนา ส่วนใหญ่ไม่ยอมทำกัน หรือ ทำน้อย
ตลอดจนเรื่องของ Continuous Integration ที่ขาดไปไม่ได้เลย

จากการเปลี่ยนแปลงครั้งนี้ส่งผลให้

สามารถพัฒนา และ แก้ไขระบบ Home page ได้รวดเร็ว
สามารถ deploy/release ระบบงานได้บ่อย และ รวดเร็ว เท่าที่ต้องการ
ระบบที่พัฒนายังคงมีคุณภาพที่สูง
สามารถตรวจสอบระบบได้รวดเร็ว
และ รู้ว่าระบบงานสามารถ deploy/release ได้หรือไม่ อยู่อย่างเสมอ

แต่ทางทีมพัฒนาก็ยังไม่หยุดอยู่เพียงเท่านี้
เพราะว่า มันยังเร็วไม่พอ ต้องการให้เร็วกว่านี้ ดีกว่านี้
ซึ่งยังต้องศึกษา และ ทดลองวิธีการใหม่ๆ
ทดลองเทคโนโลยีใหม่ๆ กันต่อไป (Continuous Improvement)

แล้ววันนี้คุณพัฒนา software ด้วยแนวคิดแบบนี้หรือไม่ ?
( Automated Testing และ Continuous Integration )