27 ต.ค. 2022 เวลา 15:21 • ธุรกิจ
# รู้จักกับ Software Architecture Patterns ยอดฮิต
ในการ design ระบบซอฟต์แวร์ จะมี patterns อยู่หลายแบบด้วยกัน แต่ละอันก็จะมีข้อดีข้อเสียแตกต่างกัน แต่ละอันก็ตอบโจยท์ที่คล้ายๆกันหรือต่างกันไม่มากก็น้อย แต่จะมีอยู่ 3 patterns ที่ถูกพูดถึงอย่างมากโดยเฉพาะในสาย object-oriented นั่นคือ
- Hexagonal Architecture
- Onion Architecture
- Clean Architecture.
#codingugly
# Hexagonal architecture
บางครั้งเรียก ports & adapters architecture นำเสนอโดย Alistair Cockburn ในปี 2005 ที่ทำให้ application แยกออกจาก UI กับดาต้าเบส โดยใช้ concept ของ ports และ adapters กล่าวคือ หากเราต้องการ design business logic สำหรับ user และเก็บลงดาต้าเบส เราจะแยก business loc และการเก็บลงดาต้าเบสออกจากกัน เพื่อความชัดเจน
- Logic ที่เกี่ยวกับ database จะอยู่ใน adapter class UserDataAdapter
- Logic ที่เกี่ยวกับ business logic อยู่ใน “User”
- User กับ UserDataAdapter คุยกันผ่าน IUserDataPort ซึ่งก็คือ Port
คำว่า “Hexagon” ไม่ได้หมายถึงจะต้องมี 6 ด้าน แต่หมายความว่าเวลา design ระบบ เราต้องสามารถใส่ port และ adapter เข้าไปได้เรื่อยๆ เหมือนมีหลายมิติ
# Onion Architecture
เป็น concept ที่นำเสนอโดย Jeffrey Palermo ในปี 2008 ที่ต้องการทำการ design ระบบสำหรับ complex business app โดยเน้นไปที่การแยกส่วนต่างๆไม่ให้ยุ่งเกี่ยวกัน ทั้งระบบ (separation of concerns) Pattern นี้จะไปไกลกว่า hexagonal architecture ตรงที่มี Core Business Layer ตรงกลางและมี layer ต่างๆล้อมรอบ ทำให้ Core layer ไม่ขึ้นกับ dependencies ของ layer ด้านนอกเลย
Layer ตรงกลางหรือบางทีเรียกว่า domain model จะมีส่วนที่เป็น business rules ทั้งหมด ถัดมาเป็น domain services ที่เป็นเหมือน contracts และด้านนอกสุดเป็น UI และ external services
ข้อแตกต่างหลักๆของ onion และ hexagonal คือ onion มี layers และ core business และย้ายพวก connections ต่างๆและ UI ไว้ข้างนอก ซึ่งแปลว่าพวกด้านนอกนี้จะเปลี่ยนเป็นอย่างอื่นได้ไม่ยาก หากจำเป็น
# Clean Architecture
Robert Martin นำเสนอไอเดียเกี่ยวกับ Clean Architecture ในปี 2012 โดย concept หลักๆเหมือน Onion Architecture แต่อาจเรียกชื่อบางอย่างแตกต่างกัน อย่าง domain model ก็จะเรียกว่า entity ซึ่ง entity ก็มี business specific logic และมี operation specific logic อยู่ใน use case ที่คอยจัดการการทำงานของ entities เพื่อให้มันทำ business rule ตามที่ use case ต้องการ
มองเผินๆ Clean Architecture เข้าใจได้ง่ายกว่าในแง่ของขอบเขตและการแยกส่วน (separation of concerns) ถ้าเปรียบเทียบกับ Onion อย่างไรก็ตาม ทั้งคู่ก็คล้ายกันมาก Clean architecture มีความชัดเจนในเรื่องทำไมแต่ละ layer ต้องมี และมีไว้ทำไม บางครั้งก็เรียก architecture แบบนี้ว่า screaming architecture เพราะทุกอย่างมันกระจ่างแจ้งมากๆ
โฆษณา