질문이 잘못되었다고 생각합니다.
내가 참여한 모든 신생 기업에는 FE-BE 전용 아키텍처가 없었습니다.
내가 아는 대부분의 신생 기업은 다음과 같습니다.
- 핵심-인터페이스를 제공하는 실제 제품
- UI-BE와 FE. BE는 Core의 API를 사용합니다.
핵심 개발자가 없어도 API는 상태 비 저장 상태이며 쉽게 조롱 할 수 있습니다. 지옥, 프로젝트를 처음부터 시작해야한다면 모의에서 순전히 작동하는 전체 UI로 시작할 수 있습니다. 프레젠테이션에 좋습니다. 대부분의 피드백은 UI 때문입니다. 고객은 더 많은 것을 주목해야합니다 (대상 고객에 따라 다름).
예를 들어 Google 검색에는 웹을 크롤링하고 색인 생성하는 핵심 구성 요소가 있으며 Google UI는 완전히 다른 세계입니다. 이 코어는 WWW 이외의 검색을 쉽게 지원할 수 있지만 UI는 지원하지 않습니다.
이 방법으로 UI를 "플러그 가능"하고 분리 할 수 있습니다.
개발 지식을 언급했지만 프로젝트 관리 측면을 간과하고 있습니다. 핵심 팀에는 2 주 스프린트 기간이 필요할 수 있지만 UI 팀은 CI를 사용합니다. 모든 것이 항상 업로드됩니다. 핵심 팀은 이전 버전과의 호환성이 필요하지만 UI는 그렇지 않습니다.
언어가 다릅니다. C 구성 요소에 C 개발자가 필요할 것입니다. UI가 크로스 OS 언어로 작성되는 단일 OS에서 실행되는 경우 괜찮을 것입니다.
테스트가 다릅니다. UI 테스트 세계는 내가 소프트웨어 개발에서 가장 복잡한 것 중 하나입니다. 대부분의 신생 기업은 그것을 무시하고 나중에이 결정을 후회합니다. 테스트 할 때 BE와 FE를 분리 할 수 없습니다. 이를 처리하는 단일 장치 여야합니다.
오픈 소스 UI – 두 가지를 분리 할 때 얻을 수있는 가장 큰 장점 중 하나는 UI를 오픈 소스 할 수 있다는 것입니다. UI 프로젝트는 오픈 소스 지원이 필요합니다.
전체 session
기능을 이해할 수없는 UI 개발자를 상상할 수 없습니다 . 알다시피-다른 요청 사이에 로그인하고 로그인 상태를 유지합니다. 사실 그들은 Java가 아닌 PHP를 알고있을 수도 있지만 BE 개념은 명확해야합니다 (예 : 암호화 된 쿠키 사용). 특정 언어 장벽이 잘못되었습니다. 모든 개발자는 모든 언어로 기꺼이 일해야합니다. 몇 년 전에 누가 JavaScript로 BE를 작성할 것이라고 생각했을까요?
핵심, BE 및 FE의 3 개 팀이 있다면 자원 낭비입니다. DB는 어떻습니까? DBA가 있어야합니까? BE 개발자가 DB를 알아야하고 FE 개발자가 BE와 DB를 알아야하는 이유는 무엇입니까? 제한이 없습니다.
전문가가 필요한 경우 전문가를 아웃소싱하는 것이 좋습니다. 그들은 보통 양질의 코드를 제공하고 매우 빠릅니다. 그들이 떠나면 길을 잃을 것이기 때문에 반드시 사내에서 그들을 원하지는 않습니다. 게다가 당신은 오늘 온라인에서 훌륭한 조언을 얻을 수 있습니다. 최첨단 재료에는 다른 접근 방식이 필요할 수 있습니다.
따라서 모든 FE 개발자가 개발할 수있는 UI의 결과는 기본적으로 매우 얇은 BE입니다. UI에 두꺼운 BE가 있다면 아마도 Core에 필요한 일부 API 기능이있을 것입니다.
나머지는 눈에 띄는 개발자가 항상 하나 이상 있습니다. 그러한 얇은 FE가 주어지면 BE 코드로 다른 개발자를 지원 (개발하지 않음) 할 수 있습니다. 내 의견은이 개발자가 매우 좋은 위치에 있으며 적절하게 수여되어야한다는 것입니다 (급여가 아닌 다른 것). 또한 빌드 프로세스를 처리하고 올바르게 빌드 할 수 있다고 믿습니다.
이 모델은 BE 개발과 관련하여 뛰어난 유연성을 제공합니다. BE 세계는 지난 몇 년 동안 여러 차례의 전환을 알고 있었으므로 BE 안정성에 너무 의존하지 않는 것이 좋습니다. 핵심은 다른 이야기입니다.
FE와 동일한 프로젝트 여야 합니까? 다음 사항에 유의해야합니다.
- 정적 리소스는 프론트 서버에서 가장 잘 제공됩니다. 프론트 엔드 서버 (예 : nginx)는 매우 강력하고 정적 자원에 캐시를 사용할 수 있으므로 정적 자원 (모든 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.