ฉันเป็นนักพัฒนารุ่นน้อง (ประมาณ 3 ปี) และที่งานของฉันเรากำลังอยู่ระหว่างการออกแบบระบบใหม่ ผู้พัฒนาหลักของฉันจะเป็นสถาปนิกหลัก แต่เขาท้าทายให้ฉันลองสร้างระบบด้วยตัวเอง (ในแบบคู่ขนาน)
ในช่วงไม่กี่ครั้งของการระดมความคิดและเสนอสิ่งที่ฉันเห็นว่าเป็นคำแนะนำด้านสถาปัตยกรรมผู้นำของฉันได้ให้ข้อเสนอแนะแก่ฉันว่าสิ่งที่ฉันทำส่วนใหญ่คือ "การออกแบบ" และไม่ใช่ "การออกแบบสถาปัตยกรรม"
เขาอธิบายถึงความแตกต่างในขณะที่การใช้งานสถาปัตยกรรมไม่เชื่อเรื่องพระเจ้าในขณะที่การออกแบบเป็นคำอธิบายของการดำเนินการ เขาบอกว่าฉันต้องถอดหมวกออกแบบและสวมหมวกสถาปนิกของฉัน เขาให้คำแนะนำเล็กน้อยกับฉันเกี่ยวกับการทำเช่นนั้น แต่ฉันอยากจะถามคุณเช่นกัน:
ฉันจะออกจากโหมดผู้ออกแบบซอฟต์แวร์และเริ่มคิดเหมือนสถาปนิกได้อย่างไร
ต่อไปนี้เป็นตัวอย่างของ "การออกแบบ" ที่ฉันเห็นว่าไม่เกี่ยวข้องกับสถาปัตยกรรมโดยผู้นำของฉัน:
- ฉันคิดอัลกอริทึมสำหรับการโหลดและการยกเลิกการโหลดทรัพยากรจากระบบของเราและลูกค้าของฉันบอกว่าอัลกอริทึมไม่ใช่สถาปัตยกรรม
- ฉันเกิดเหตุการณ์ต่าง ๆ ขึ้นมาระบบควรจะเพิ่มและสิ่งที่มันควรจะยกระดับ แต่สิ่งนี้ก็ดูเหมือนจะไม่ตัดเป็นสถาปัตยกรรม
ฉันดูเหมือนจะจมอยู่กับรายละเอียดและก้าวถอยหลังไม่ไกลพอ ฉันพบว่าแม้เมื่อฉันคิดอะไรบางอย่างที่อยู่ในระดับสถาปัตยกรรมฉันก็มักจะไปถึงที่นั่นด้วยการลองใช้งานที่หลากหลายและการล้อเล่นรายละเอียดจากนั้นทำการสรุปและสรุป เมื่อฉันอธิบายสิ่งนี้กับผู้นำของฉันเขาบอกว่าฉันใช้วิธีการที่ผิด: ฉันต้องคิดว่า "จากบนลงล่าง" และไม่ใช่ "ลงล่าง"
นี่คือรายละเอียดเฉพาะเพิ่มเติมเกี่ยวกับโครงการ :
- โครงการที่เราออกแบบคือเว็บแอปพลิเคชั่น
- ฉันประมาณรหัสประมาณ 10,000 บรรทัด
- เราเริ่มแล้ว ทีมวิศวกรของเราประมาณ 3-5 คน
- สิ่งที่ใกล้เคียงที่สุดที่ฉันสามารถเปรียบเทียบใบสมัครของเราคือ CMS ที่มีน้ำหนักเบา มันมีความซับซ้อนและข้อตกลงคล้ายกันส่วนใหญ่กับการโหลดและการขนถ่ายส่วนประกอบการจัดการเลย์เอาต์และโมดูลสไตล์ปลั๊กอิน
- แอปพลิเคชันคือ Ajax-y ผู้ใช้ดาวน์โหลดไคลเอ็นต์หนึ่งครั้งจากนั้นร้องขอข้อมูลตามที่ต้องการจากเซิร์ฟเวอร์
- เราจะใช้รูปแบบ MVC
- แอปพลิเคชันจะมีการตรวจสอบสิทธิ์
- เราไม่ได้กังวลมากเกี่ยวกับการสนับสนุนเบราว์เซอร์เก่า (ว้าว!) ดังนั้นเราจึงต้องการใช้ประโยชน์จากสิ่งที่ใหม่ที่สุดและยิ่งใหญ่ที่สุดที่มีอยู่และจะออกมา (HTML5, CSS3, WebGL?, ส่วนขยายแหล่งที่มาของสื่อและอื่น ๆ !)
นี่คือเป้าหมายบางส่วนของโครงการ :
- แอปพลิเคชันต้องปรับขนาด ในระยะเวลาอันใกล้ผู้ใช้ของเราจะอยู่ในลำดับของหลายร้อยถึงหลายพันคน แต่เรากำลังวางแผนที่จะนับหมื่นถึงหลายล้านและมากกว่านั้น
- เราหวังว่าแอปพลิเคชั่นจะมีอยู่ตลอดไป นี่ไม่ใช่วิธีแก้ปัญหาชั่วคราว (อันที่จริงเรามีวิธีแก้ปัญหาชั่วคราวแล้วและสิ่งที่เราออกแบบคือการทดแทนระยะยาวสำหรับสิ่งที่เรามี)
- แอปพลิเคชันควรมีความปลอดภัยเนื่องจากอาจมีการติดต่อกับข้อมูลส่วนบุคคลที่ละเอียดอ่อน
- แอปพลิเคชันจะต้องมีเสถียรภาพ (ตามหลักแล้วมันจะมีเสถียรภาพรอบ ๆ ระดับของ Gmail แต่ไม่จำเป็นต้องอยู่ในระดับสุดยอดของยานสำรวจดาวอังคาร)