Styles Versus Patterns (สไตล์กับแพตเทิร์น)

อันดับแรกเราต้องแยกความแตกต่างระหว่าง architectural style กับ pattern ในงานสถาปัตยกรรม ก่อน เพราะทั้งสองคำนี้มักถูกสับสนกันได้ง่าย

สไตล์ของสถาปัตยกรรมหนึ่ง ๆ จะอธิบายลักษณะเฉพาะหลายอย่างของสถาปัตยกรรมนั้น ซึ่งรวมถึง:

Component Topology

Architectural style จะกำหนดว่า component ต่าง ๆ และ dependency ระหว่างกันถูกจัดวางอย่างไร ตัวอย่างเช่น layered architecture จะจัดกลุ่ม layer ของ component ตามความสามารถเชิงเทคนิค ในขณะที่ modular monolith จะจัดกลุ่ม component ตาม domain (จะพูดถึงความแตกต่างนี้เพิ่มเติมใน “Architecture Partitioning” )

Physical Architecture

หลายครั้งสไตล์ของสถาปัตยกรรมจะเป็นตัวกำหนดประเภทของ physical architecture ว่าจะเป็นแบบ monolithic หรือแบบ distributed ตัวอย่างเช่น modular monolith โดยทั่วไปแล้วเป็น monolithic architecture ที่มีฐานข้อมูลเดียว ในขณะที่ event-driven architecture จะเป็นแบบ distributed เสมอ

Deployment

ความละเอียด (granularity) ของระบบและความถี่ในการ deploy มักเกี่ยวข้องกับสไตล์สถาปัตยกรรมของระบบนั้น ทีมงานมักจะ deploy monolithic architecture เป็นก้อนเดียวพร้อมกับฐานข้อมูลเชิงสัมพันธ์ (relational database) เพียงตัวเดียว ในทางกลับกัน distributed architecture ที่คล่องตัวสูง เช่น microservices จะมีการทำ automated integration, automated provisioning และบางครั้งก็มี automated deployment ด้วย โดยทั่วไปจะถูก deploy แยกเป็นส่วน ๆ ด้วยความถี่ที่สูงกว่ามาก

Communication Style

สไตล์ของสถาปัตยกรรมยังกำหนดวิธีที่ component ต่าง ๆ สื่อสารกันด้วย monolithic architecture สามารถเรียกใช้ method ภายใน monolith ได้โดยตรง ในขณะที่ distributed architecture จะสื่อสารกันผ่าน network protocol เช่น REST หรือ message queue

Data Topology

เช่นเดียวกับ component topology, data topology ของระบบก็มักถูกกำหนดโดยสไตล์สถาปัตยกรรมเช่นกัน monolithic architecture มักจะมีฐานข้อมูลแบบ monolithic ในขณะที่ distributed architecture บางครั้งก็แยกข้อมูลออกจากกัน ขึ้นอยู่กับปรัชญาของสไตล์สถาปัตยกรรมนั้น ๆ

การตั้งชื่อให้กับสไตล์หนึ่ง ๆ ช่วยให้เราสามารถอธิบายปัจจัยที่ซับซ้อนเหล่านี้ได้อย่างกระชับ แต่ละชื่อจะรวบรวมรายละเอียดจำนวนมากที่เข้าใจตรงกันเอาไว้ นั่นคือหนึ่งในจุดประสงค์ของ design pattern แต่ในขณะที่ pattern จะรวบรวมโซลูชันที่ขึ้นกับบริบทหนึ่ง ๆ style จะมีความจำเพาะต่อสถาปัตยกรรมมากกว่า โดยอธิบายลักษณะต่าง ๆ ที่กล่าวไปข้างต้น architecture style จะอธิบาย topology ของสถาปัตยกรรมและคุณลักษณะที่ถูกสันนิษฐานหรือเป็นค่าเริ่มต้นของมัน ทั้งด้านที่เป็นประโยชน์และด้านที่เป็นข้อเสีย เราจะพูดถึง architecture pattern สมัยใหม่ที่พบได้ทั่วไปบางส่วนใน Chapter 20 . สถาปนิกควรทำความคุ้นเคยกับ style พื้นฐานหลายแบบ ซึ่งเป็นส่วนประกอบพื้นฐานที่พบได้ทั่วไปในระบบต่าง ๆ