ฉันคิดว่าคำถามนั้นผิด
ผู้ที่เพิ่งเริ่มต้นทั้งหมดที่ฉันเข้าร่วมไม่มีสถาปัตยกรรม FE-BE เท่านั้น
ที่เพิ่งเริ่มต้นส่วนใหญ่ฉันรู้ว่ามี:
- หลัก - ผลิตภัณฑ์จริงที่แสดงถึงส่วนต่อประสาน
- UI - BE และ FE BE ใช้ API ของ Core
API นั้นไร้สัญชาติและเยาะเย้ยอย่างง่ายดาย - โดยไม่ต้องใช้ Core Developer นรกถ้าฉันต้องเริ่มต้นโครงการตั้งแต่เริ่มต้นฉันอาจเริ่มต้นด้วย UI ทั้งหมดที่ใช้งานได้จริงกับ mocks - ซึ่งเหมาะสำหรับการนำเสนอ ความคิดเห็นส่วนใหญ่เกิดจาก UI ลูกค้าทราบเพิ่มเติมว่า - (ขึ้นอยู่กับกลุ่มเป้าหมายของคุณ)
ตัวอย่างเช่น - Google Search มีองค์ประกอบหลักที่รวบรวมข้อมูลเว็บจัดทำดัชนีเป็นต้นและ Google UI เป็นโลกที่แตกต่างอย่างสิ้นเชิง หลักนี้สามารถรองรับการค้นหาที่ไม่ใช่ WWW ได้อย่างง่ายดายในขณะที่ UI ไม่สามารถทำได้
วิธีนี้ UI ของคุณ "สามารถเสียบได้" และคุณมีข้อกังวลมากมาย
คุณอ้างถึงความรู้ด้านการพัฒนาอย่างไรก็ตามคุณสามารถมองเห็นแง่มุมการจัดการโครงการ ในขณะที่ทีมหลักอาจต้องใช้เวลา 2 สัปดาห์ในการวิ่ง แต่ทีม UI จะใช้ CI - ทุกอย่างอัปโหลดตลอดเวลา ทีมหลักจะต้องใช้ความเข้ากันได้แบบย้อนกลับในขณะที่ UI จะไม่ทำงาน
ภาษาต่างกัน คุณอาจต้องการนักพัฒนา C สำหรับองค์ประกอบหลัก - และคุณจะโอเคถ้ามันทำงานบนระบบปฏิบัติการเดียวซึ่งเป็นที่ UI จะถูกเขียนในภาษา Cross OS
การทดสอบแตกต่างกัน โลกแห่งการทดสอบ UI เป็นหนึ่งในสิ่งที่ซับซ้อนที่สุดที่ฉันรู้จักในการพัฒนาซอฟต์แวร์ ที่เพิ่งเริ่มต้นส่วนใหญ่ละเลยมันและเสียใจกับการตัดสินใจนี้ในภายหลัง คุณไม่สามารถแยก BE และ FE เมื่อทำการทดสอบ จะต้องมีหน่วยเดียวที่จัดการกับมัน
Open Source UI - หนึ่งในประโยชน์ที่ยิ่งใหญ่ที่สุดของการแยกทั้งสองคือคุณสามารถเปิดแหล่ง UI ของคุณ โครงการ UI ต้องการการสนับสนุนโอเพ่นซอร์ส
ฉันไม่สามารถจินตนาการนักพัฒนา UI ที่ไม่สามารถเข้าใจคุณสมบัติทั้งหมด session
ได้ คุณรู้ - ที่คุณเข้าสู่ระบบและอยู่ในระหว่างการร้องขอที่แตกต่างกัน จริงพวกเขาอาจรู้จัก PHP และไม่ใช่ Java .. แต่แนวคิด BE ควรชัดเจน (เช่นใช้คุกกี้เข้ารหัส) อุปสรรคด้านภาษาเฉพาะนั้นผิด - นักพัฒนาทุกคนควรเต็มใจทำงานในทุกภาษา ใครจะคิดว่าพวกเขาจะเขียน BE ใน JavaScript เมื่อสองสามปีก่อน
หากคุณมีทีม 3 ทีม: Core, BE และ FE มันเป็นการสิ้นเปลืองทรัพยากร แล้ว DB ล่ะ คุณควรจะมี DBA หรือไม่ เหตุใดนักพัฒนา พ.ศ. ควรรู้จัก DB และนักพัฒนา FE ไม่รู้จัก BE และ DB ไม่มีขีด จำกัด
หากคุณต้องการผู้เชี่ยวชาญและคุณจะจ้างพวกเขาได้ดี พวกเขามักจะส่งรหัสที่มีคุณภาพและพวกเขาทำมันค่อนข้างเร็ว คุณไม่ต้องการให้พวกเขาอยู่ในบ้านเพราะคุณจะหลงทางถ้าพวกเขาออกไป นอกจากนี้คุณจะได้รับคำแนะนำที่ดีทางออนไลน์วันนี้ สิ่งที่ทันสมัยอาจต้องใช้วิธีการที่แตกต่างกัน
ดังนั้นผลลัพธ์จึงเป็น BE ที่บางมากใน UI ที่นักพัฒนา FE ทุกคนสามารถพัฒนาได้ หากคุณมี BE อย่างหนาใน UI คุณอาจจำเป็นต้องมีฟังก์ชั่น API บางอย่างใน Core
มีนักพัฒนาซอฟต์แวร์อย่างน้อยหนึ่งรายที่โดดเด่นตลอดเวลา ด้วย FE บาง ๆ เขา / เธอสามารถจัดการให้การสนับสนุน (ไม่พัฒนา) นักพัฒนาอื่น ๆ ในรหัส BE ความคิดเห็นของฉันคือนักพัฒนานี้อยู่ในตำแหน่งที่ดีมากและควรได้รับรางวัลอย่างเหมาะสม (ไม่ใช่ในเงินเดือน แต่อย่างอื่น) ฉันยังเชื่อว่าพวกเขาจะสามารถจัดการกระบวนการสร้างและสร้างได้อย่างถูกต้อง
รุ่นนี้ช่วยให้คุณมีความยืดหยุ่นอย่างมากเกี่ยวกับการพัฒนา พ.ศ. โลก BE ได้รู้จักการหยุดซ่อมบำรุงหลายครั้งในช่วงสองสามปีที่ผ่านมาดังนั้นฉันไม่แนะนำให้ใช้ความมั่นคงของ BE มากเกินไปอย่างไรก็ตาม แกนเป็นเรื่องที่แตกต่าง
ยังมีคำถามอยู่ - FE และควรเป็นโครงการเดียวกันหรือไม่ คุณควรสังเกตสิ่งต่อไปนี้
- ทรัพยากรคงที่จะให้บริการที่ดีที่สุดจากเซิร์ฟเวอร์หน้า เนื่องจากเซิร์ฟเวอร์ Front-End (เช่น nginx) มีประสิทธิภาพมากและเนื่องจากคุณสามารถใช้ Cache สำหรับทรัพยากรแบบคงที่คุณสามารถจัดการด้วยการปรับใช้ทรัพยากรแบบคงที่เพียงครั้งเดียว (ซึ่งควรเป็นเนื้อหา HTML ทั้งหมด, JS, CSS, รูปภาพ)
- รหัสแบ็กเอนด์ไม่มีสินค้าฟุ่มเฟือยเหมือนกันดังนั้นคุณต้องมีระบบแบบกระจายซึ่งจัดการโดยเซิร์ฟเวอร์หน้า
- รหัส FE นั้นจะนำกลับมาใช้ใหม่กับเทคโนโลยีใหม่ทั้งหมดที่รองรับ JavaScript ตอนนี้คุณสามารถเขียนแอปพลิเคชันเดสก์ท็อปและมือถือด้วย JavaScript
- กระบวนการสร้างแตกต่างอย่างสิ้นเชิง - และยังสามารถรวมการส่งแพตช์การอัพเกรดการติดตั้งและอื่น ๆ
ฉันสามารถไปต่อได้ แต่ฉันหวังว่ามันชัดเจนว่าฉันคิดว่า BE และ FE ควรเป็นทีมเดียวกัน แต่อาจมีโครงการที่แตกต่างกัน
if you have a startup, don't assign roles. Better hope that you assembled a good self organizing team. If everybody knows each other, everybody knows who does what the best.