วันนี้นั่งดู VDO จากงาน Android Dev Summit
เจอคำหนึ่งที่น่าสนใจคือ Lava Flow
เกิดความสงสัยว่ามันคืออะไร ?
จึงได้ลองหาข้อมูลเพิ่มเติม
ทำให้รู้ว่า มันคือรูปแบบของปัญหาอย่างหนึ่ง
ซึ่ง developer ทุก ๆ คนน่าจะเคยเจอ และ เคยทำกันมาบ้าง
Lava flow คืออะไร ?
หรือเรียกว่า Lava Layer หรือเรียกว่า Dead code หรือเรียกว่า Vendor lock-in คือ anti-pattern สำหรับการพัฒนา software คือ คำที่ใช้อธิบายรูปแบบของปัญหาที่พบมากในการพัฒนา software มันเป็นอาการของ code ที่ทำงานซ้ำ ๆ ที่กระจายอยู่ทั่วไป หลายที่ในระบบ มันเป็นอาการของทีมพัฒนาที่ไม่รู้ และ ไม่เข้าใจ ว่า code ทำงานอย่างไรกันแน่ ? ว่า code มีรูปแบบอย่างไร ? ว่าใช้เทคโนโลยีอะไรบ้าง ? ว่าเทคโนโลยีที่ใช้อยู่มันแก้ไขปัญหาเดิมซ้ำ ๆ หลายที่โดยรูปแบบนี้จะพบได้มาก จากระบบที่เรียกว่า Enterprise
และจาก- ระบบมีขนาดที่ใหญ่
- ระบบมีความเป็นความตายรออยู่
- ระบบที่ใช้งานมานาน ๆ ซึ่งมักเรียกว่า Legacy system
- ทีมพัฒนามีอัตราการ turn-over ที่สูงมาก ๆ
ตัวอย่างของ code ส่วนของ Data Access Layer ของระบบ
แสดงดังรูป คำอธิบาย จะเห็นได้ว่า แต่ละ version ก็มีรูปแบบที่ต่างกันไป ทั้งการออกแบบ และ เทคโนโลยีที่ใช้ แต่ทุก ๆ version ยังคงอยู่ และ ถูก deploy ขึ้น production เสมอ สังเกตไหมว่า ใน version ที่ 4 นั้น มี 4 วิธีในการแก้ไขปัญหาเดียวกัน !! ผลที่ตามมา คืออะไรล่ะ ? ยิ่งนับวันระบบมีความซับซ้อนมากขึ้น ยิ่งนับวันระบบมีความยุ่งเหยิงมากขึ้น นั่นคือ โครงสร้าง และ architecture ของระบบยิ่งแย่ลงไปเรื่อย ๆนี่แหละที่เราเรียกว่า ระบบปะผุ
code ที่มีอยู่แล้วกลายเป็นเพียง history เท่านั้น ถ้าต้องการแก้ไข หรือ เพิ่มอะไรเข้าไป เราจะเขียน ontop อย่างเดียว ไม่ไปยุ่งกับของเก่า แล้วในที่สุดมันจะกลายเป็น spaghetti code + dead code นั่นหมายถึง Developer ชอบเขียนใหม่มากกว่าปรับปรุงให้ดีขึ้น หรือรู้ว่าต้องปรับปรุง แต่ไม่สามารถหาเหตุผลเพื่ออธิบายให้ฝ่าย business เข้าใจได้ หรือว่าคุยกับฝั่ง business แล้วไม่รู้เรื่อง หรือมีปัญหาเรื่องพูดคุย และ สื่อสารกันมี Developer คนไหน เผชิญกับ Lava flow อยู่บ้าง ? หรือว่ากำลังสร้างมันขึ้นมา !!Reference Websites http://www.antipatterns.com/lavaflow.htm http://mikehadlow.blogspot.no/2014/12/the-lava-layer-anti-pattern.html?m=1 http://perldesignpatterns.com/?LavaFlow http://mikehadlow.blogspot.com/2014/12/the-lava-layer-anti-pattern.html http://www.infoq.com/news/2015/01/lava-layer-antipattern http://robkent.com/blog/?p=88