Bence sorunun yanlış olduğunu.
Katıldığım tüm girişimler yalnızca FE-BE mimarisine sahip değildi.
Bildiğim çoğu girişim var:
- Çekirdek - bir arayüz ortaya çıkaran asıl ürün
- UI - BE ve FE. BE, Çekirdek API'sini kullanır.
API'ler, çekirdek geliştiriciye ihtiyaç duymadan bile vatansız ve kolayca alay ediyorlar. Cehennem, sıfırdan bir projeye başlamak zorunda olsaydım, sadece alaylarla çalışan tüm bir UI ile başlayabilirdim - bu sunumlar için harika olacak. Geri bildirimlerin çoğu UI'den kaynaklanıyor. Müşteriler daha fazlasına dikkat eder - (hedef kitlenize bağlıdır.)
Örneğin - Google Arama, web’i tarayan, dizine ekleyen vb. Çekirdek bir bileşene sahiptir ve Google UI tamamen farklı bir dünyadır. Bu çekirdek, kullanıcı arabirimi yapamazken, WWW dışı aramaları kolayca destekleyebilir.
Bu şekilde, kullanıcı arayüzünüz "takılabilir" ve endişelerin ayrılığına sahipsiniz.
Geliştirme bilgisine baktınız, ancak proje yönetimi konularını gözden kaçırıyorsunuz. Çekirdek ekibin 2 haftalık sprint süresine ihtiyacı olabilirken, UI ekibi CI'yi kullanacak - her şey her zaman yüklenir. Çekirdek ekibinin geriye dönük uyumluluk gerekirken UI gerekmeyecek.
Dil farklı. Muhtemelen Core bileşeni için C geliştiricileri isteyeceksiniz - ve kullanıcı arayüzü bir Cross OS dilinde yazılacağı gibi tek bir işletim sistemi üzerinde çalışıyorsa iyi olacaksınız.
Testler farklı. UI test dünyası, yazılım geliştirmede bildiğim en karmaşıklardan biri. Yeni başlayanların çoğu bunu ihmal ediyor ve bu kararı daha sonra pişman ediyor. Test yaparken BE ve FE'yi ayıramazsınız. Onu idare eden tek bir birim olmalı.
Açık Kaynak Kullanıcı Arabirimi - ikisini ayırmanın en büyük yararlarından biri, kullanıcı arabiriminizi kaynak açabilmenizdir. UI projesi açık kaynak desteğine ihtiyaç duyuyor.
Tüm session
özelliği anlayamayan bir UI geliştiricisi düşünemiyorum . Bilirsiniz - farklı talepler arasında giriş yaptığınız ve giriş yaptığınız yerler. Doğru PHP'yi Java biliyor olabilirler .. ama BE kavramı açık olmalıdır (örneğin şifreli bir çerez kullanın). Özel dil engeli yanlıştır - her geliştirici herhangi bir dilde çalışmaya istekli olmalıdır. Birkaç yıl önce JavaScript’e BE yazacaklarını kim düşünebilirdi?
Eğer 3 takıma devam edersen: Core, BE ve FE, bu bir kaynak israfıdır. DB ne olacak? DBA’lar olmalı mı? Bir BE geliştiricisi neden DB'yi ve bir FE geliştiricisi BE ve DB'yi tanımıyor olmalıdır? Sınır yok.
Uzmanlara ihtiyacınız varsa ve yapacaksınız, dış kaynak kullanımı oldukça iyi çalışıyor. Genellikle kalite kodu sağlarlar ve oldukça hızlı yaparlar. Onları kurum içinde istemezsin çünkü ayrılırlarsa kaybolursun. Ayrıca bugün çevrimiçi olarak harika tavsiyeler alabilirsiniz. Son teknoloji malzeme farklı yaklaşımlar gerektirebilir.
Bu nedenle sonuç, temelde, her FE geliştiricisinin geliştirebileceği UI'de çok ince bir BE'dir. Kullanıcı Arabiriminde kalın bir BE varsa, Çekirdek'te gerekli olan bazı API işlevlerine sahipsiniz.
Her zaman geri kalanın dışında kalan en az bir geliştirici vardır. Bu kadar ince bir FE verildiğinde, BE kodundaki diğer geliştiricilere destek vermeyi (geliştirmeyi değil) başarabilir. Benim düşüncem bu geliştiricinin çok iyi bir konumda olduğu ve uygun şekilde verilmesi gerektiğidir (maaşla değil, başka bir şeyle). İnşa sürecini idare edip doğru bir şekilde yapabileceklerine de inanıyorum.
Bu model BE gelişimi konusunda size büyük bir esneklik verir. BE dünyası son birkaç yıl içinde birkaç dönüş bildi, bu yüzden yine de BE stabilitesine güvenmeyi önermiyorum. Çekirdek farklı bir hikaye.
Hala soru var - FE ve BE aynı proje mi olmalı ? Aşağıdakilere dikkat etmelisiniz
- Statik kaynaklar en iyi ön sunucudan sunulur. Ön Uç sunucular (örn. Nginx) çok güçlü olduğundan ve statik kaynaklar için Önbellek kullanabildiğinizden, statik kaynaklarınızın (tüm HTML içeriği, JS, CSS, Görüntüler olmalı) tek bir dağıtımını yönetebilirsiniz.
- Arka uç kodu aynı lükslüklere sahip değil, bu nedenle bir ön sunucu tarafından da yönetilen dağıtık bir sisteme sahip olmalısınız.
- FE kodu, JavaScript'i destekleyen tüm yeni teknolojilerle yeniden kullanılmaya yöneliktir. Artık Masaüstü ve Mobil uygulamalarını JavaScript ile yazabilirsiniz.
- Derleme işlemi tamamen farklıdır - ve bu da yamalar teslim, yükseltme, kurulum vb. İçerebilir.
Devam edebilirim, ancak umarım BE ve FE'nin aynı ekip, ama belki de farklı projeler olması gerektiğini düşünüyorum.
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.