Shifting "Fashion" in Architecture (กระแสสถาปัตยกรรมที่เปลี่ยนแปลงไปเรื่อย ๆ)
ความนิยมในสถาปัตยกรรมสไตล์ต่าง ๆ ของวงการซอฟต์แวร์เปลี่ยนแปลงไปตามกาลเวลา โดยมีปัจจัยหลายอย่างขับเคลื่อนอยู่เบื้องหลัง ซึ่งรวมถึง:
สิ่งที่สังเกตได้จากอดีต (Observations from the past)
สถาปัตยกรรมสไตล์ใหม่ ๆ มักเกิดขึ้นจากการสังเกตประสบการณ์ในอดีต โดยเฉพาะจุดที่เป็นปัญหา ประสบการณ์ของสถาปนิก ที่ทำงานกับระบบต่าง ๆ—ซึ่งมักเป็นเหตุผลที่ทำให้เรากลายมาเป็นสถาปนิกตั้งแต่แรก—ส่งอิทธิพลต่อความคิดของเราเกี่ยวกับ ระบบในอนาคต การออกแบบสถาปัตยกรรมใหม่มักสะท้อนถึงการแก้ปัญหาข้อบกพร่องเฉพาะที่พบในสถาปัตยกรรมสไตล์เก่า ตัวอย่างเช่น หลังจากสร้างสถาปัตยกรรมที่เน้นการใช้ซ้ำโค้ดมาระยะหนึ่ง สถาปนิกก็ตระหนักถึง trade-off ในแง่ลบ และคิดทบทวนผลกระทบของการใช้ซ้ำโค้ดอย่างจริงจัง
การเปลี่ยนแปลงในระบบนิเวศ (Changes in the ecosystem)
ในระบบนิเวศของการพัฒนาซอฟต์แวร์ ทุกอย่างเปลี่ยนแปลงอยู่ตลอดเวลา การเปลี่ยนแปลงที่ไม่หยุดนิ่งนี้วุ่นวายจนแทบ เป็นไปไม่ได้ที่จะคาดเดาว่าอะไรจะเปลี่ยนต่อไป เมื่อไม่กี่ปีก่อน แทบไม่มีใครรู้จัก Kubernetes เลย แต่ตอนนี้มันกลายเป็น ส่วนหนึ่งในชีวิตประจำวันของนักพัฒนาจำนวนมาก อีกไม่กี่ปีข้างหน้า Kubernetes เองก็อาจถูกแทนที่ด้วยเครื่องมืออื่น ที่ยังไม่มีใครเขียนขึ้นมาด้วยซ้ำ
ความสามารถใหม่ ๆ (New capabilities)
สถาปนิกต้องจับตาดูไม่ใช่แค่เครื่องมือใหม่ ๆ แต่รวมถึง paradigm ใหม่ ๆ ด้วย เมื่อความสามารถใหม่เกิดขึ้น สถาปัตยกรรมอาจเปลี่ยนไปสู่ paradigm ใหม่ทั้งหมด แทนที่จะแค่เปลี่ยนเครื่องมือหนึ่งเป็นอีกเครื่องมือหนึ่ง ตัวอย่างเช่น แทบไม่มีใครคาดคิดถึงการเปลี่ยนแปลงครั้งใหญ่ในวงการพัฒนาซอฟต์แวร์ที่เกิดจากการมาถึงของ container อย่าง Docker แม้จะเป็นเพียงก้าวเชิงวิวัฒนาการ แต่มันก็ส่งผลกระทบอย่างมหาศาลต่อสถาปนิก เครื่องมือ แนวปฏิบัติทางวิศวกรรม และอีกมากมาย การเปลี่ยนแปลงในระบบนิเวศที่เกิดขึ้นตลอดเวลายังนำเสนอเครื่องมือและความสามารถใหม่ ๆ อย่างสม่ำเสมอ แม้แต่สิ่งที่ดูเหมือน จะเป็นแค่อีกเวอร์ชันของสิ่งที่เรามีอยู่แล้ว ก็อาจมีรายละเอียดปลีกย่อยที่ทำให้มันกลายเป็นตัวเปลี่ยนเกม ฟีเจอร์ใหม่ ไม่จำเป็นต้องสั่นสะเทือนทั้งวงการพัฒนาเสมอไป การเปลี่ยนแปลงเล็ก ๆ ที่สอดคล้องกับเป้าหมายของสถาปนิกพอดีก็สามารถ เปลี่ยนทุกอย่างได้
ความเร่งขึ้น (Acceleration)
ระบบนิเวศไม่ได้แค่เปลี่ยนแปลงตลอดเวลาเท่านั้น แต่การเปลี่ยนแปลงยังเร็วขึ้นและแพร่หลายมากขึ้นเรื่อย ๆ เครื่องมือใหม่ สร้างแนวปฏิบัติทางวิศวกรรมใหม่ ซึ่งนำไปสู่การออกแบบและความสามารถใหม่ ทำให้สถาปนิกซอฟต์แวร์อยู่ในสภาวะเปลี่ยนแปลง ตลอดเวลา การเติบโตและอิทธิพลของ generative AI คือตัวอย่างที่โดดเด่นของวิวัฒนาการอย่างต่อเนื่องและความคาดเดาไม่ได้นี้
การเปลี่ยนแปลงของโดเมน (Domain changes)
โดเมนที่เราเขียนซอฟต์แวร์ให้เปลี่ยนแปลงอยู่ตลอดเวลา ตามที่ธุรกิจวิวัฒนาการหรือควบรวมกับบริษัทอื่น
การเปลี่ยนแปลงของเทคโนโลยี (Technology changes)
องค์กรพยายามตามให้ทันการเปลี่ยนแปลงทางเทคโนโลยีอย่างน้อยบางส่วน โดยเฉพาะส่วนที่มีประโยชน์ต่อผลกำไรอย่างชัดเจน
ปัจจัยภายนอก (External factors)
ปัจจัยภายนอกจำนวนมากที่เกี่ยวข้องกับการพัฒนาซอฟต์แวร์เพียงผิวเผิน ก็สามารถขับเคลื่อนการเปลี่ยนแปลงในองค์กรได้ ตัวอย่างเช่น สถาปนิกและนักพัฒนาอาจพอใจกับเครื่องมือหนึ่งอย่างมาก แต่ถ้าค่าใช้จ่ายด้านลิขสิทธิ์สูงเกินไป ธุรกิจก็อาจถูกบังคับให้ย้ายไปใช้ตัวเลือกอื่นแทน
สถาปนิกควรเข้าใจแนวโน้มปัจจุบันของวงการ เพื่อให้สามารถตัดสินใจได้อย่างชาญฉลาดว่าจะตามเทรนด์ไหนและควรยกเว้นเมื่อไหร่ ไม่ว่าองค์กรของตัวเองจะตามกระแสสถาปัตยกรรมปัจจุบันใกล้ชิดแค่ไหนก็ตาม