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

Lava flow มันคืออะไร  เกี่ยวข้องกับการพัฒนา Software อย่างไร ?

$
0
0

Screen Shot 2558-11-25 at 6.01.00 PM

Screen Shot 2558-11-25 at 6.01.00 PM วันนี้นั่งดู 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 ที่สูงมาก ๆ
ดังนั้นจากรูปแบบเหล่านี้ทำให้ ความรู้ต่าง ๆ เกี่ยวกับระบบ หายไปกับคนเสมอ ถึงแม้จะมีเอกสารก็ตาม ผมคิดว่าทุกคนคงรู้ดีว่า เอกสารส่วนใหญ่มันไม่ได้ช่วยอะไรเลย !! เมื่อมีการเพิ่ม แก้ไข feature ต่างๆ คนทำไว้ก็ไม่อยู่ คนอยู่ทำก็ไม่รู้เรื่อง สิ่งที่เลือกทำถ้าต้องแก้ไขของเดิมคือ Work around ไป เพื่อให้มันทำงานได้ แต่ถ้าหาไม่เจอก็เขียนใหม่มันไปเลย แทนที่จะทำการแก้ไข code ให้ดีขึ้นก่อนแก้ไข !! บ่อยครั้งจะทำการเขียน comment ใน code ไว้ เช่น Do not delete this code เป็นต้น บ่อยครั้งจะเขียน code เพิ่มเข้าไป ไม่อยู่บนสุดของ method ก็อยู่ล่างสุดของ method โดยไม่ทำการลบ code เก่า

ตัวอย่างของ code ส่วนของ Data Access Layer ของระบบ

แสดงดังรูป LavaLayer[5] คำอธิบาย จะเห็นได้ว่า แต่ละ 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

Viewing all articles
Browse latest Browse all 1997

Trending Articles