프론트엔드와 백엔드는 꼭 분리해야 하나요?

외주 개발을 의뢰할 때 많은 창업자분들이 고민하시는 것 중 하나가 "프론트엔드와 백엔드를 분리해서 개발해야 하나요?"입니다. 외주사에서 "저희는 풀스택 개발자가 있어서 혼자 다 만들 수 있습니다"라고 하면 비용도 절약되고 소통도 간편할 것 같아 끌리기도 합니다.
프론트엔드와 백엔드의 구분
개발자를 프론트엔드, 백엔드로 나누지만 모두를 다 할 수 있는 풀스택 개발자도 있습니다. 프론트엔드는 사용자가 보고 클릭하는 화면 부분을 만드는 것이고, 백엔드는 서버와 데이터베이스에서 데이터를 처리하는 부분을 담당합니다.
프론트엔드 개발자는 React, Vue, Angular 같은 프레임워크를 사용하여 사용자 인터페이스를 구현하고, 백엔드 개발자는 Node.js, Python, Java 같은 언어로 서버 로직과 API를 개발합니다. 각 영역은 다루는 기술도 다르고 요구되는 역량도 다릅니다.
풀스택 개발자의 가능성
스타트업의 초기 서비스 경우 MVP라는 핵심 기능의 최소 규모 서비스를 만들기에 풀스택 개발자 1명으로 모두 개발하기도 합니다. 실제로 작은 규모의 서비스라면 역량 있는 풀스택 개발자 한 명이 전체를 완성하는 것이 효율적일 수 있습니다.
소통 창구가 하나로 통일되고, 프론트엔드와 백엔드 간 연동 과정이 간소화되며, 전체적인 아키텍처를 한 사람이 일관되게 설계할 수 있다는 장점이 있습니다. 비용 측면에서도 두 명의 개발자를 쓰는 것보다 저렴할 수 있습니다.
풀스택의 함정
그러나 풀스택 개발자의 역량이 없는 개발자가 협업이 불편해 혼자 다 작업하겠다고 했을 때는 문제가 발생할 수 있습니다. 진짜 풀스택 개발자와 자칭 풀스택 개발자는 완전히 다릅니다.
협업 경험이 부족하거나 다른 개발자와 일하기 싫어서 "풀스택으로 혼자 하겠다"라고 주장하는 경우, 실제로는 프론트엔드와 백엔드 중 한쪽의 역량이 현저히 부족할 수 있습니다. 이런 경우 프로젝트 중반이나 후반에 가서 심각한 문제가 드러나게 됩니다.
실력의 검증이 핵심
일은 의지로 하는 것이 아니며 특히 외주의 경우 검증된 실력을 발휘하여 약속한 일정 내, 만들기로 한 것들을, 일정 수준 이상으로 완성해야 합니다. "열심히 하겠다"는 각오나 의지는 중요하지 않고, 과거에 실제로 해낸 경험이 중요합니다.
의욕을 앞세운 개발자의 모험에 창업의 운명을 걸 수 없으므로 백엔드, 프론트엔드의 역량이 검증되는 풀스택 개발자가 아니라면 프론트엔드와 백엔드를 분리하여 작업을 진행하는 것이 안전합니다.
역량 검증 방법
풀스택 개발자를 선택하려면 양쪽 영역 모두에서 역량을 검증해야 합니다. 포트폴리오를 확인할 때 프론트엔드와 백엔드를 모두 혼자 개발한 프로젝트가 있는지, 그 프로젝트의 규모와 복잡도는 어느 정도인지 살펴보세요.
레퍼런스를 확인하여 이전 고객들이 해당 개발자의 풀스택 역량에 만족했는지 물어보세요.
분리 개발의 안전성
프론트엔드와 백엔드를 분리하여 작업을 진행하면 여러 안전장치가 생깁니다. 백엔드, 프론트엔드 어느 한 부분에 문제가 있을 시 해당 부분만 인력 교체를 하면 되기 때문입니다.
예를 들어 백엔드 개발이 잘 진행되고 있는데 프론트엔드 개발자가 일정을 지키지 못하거나 품질이 낮다면, 프론트엔드 개발자만 교체하고 백엔드는 그대로 진행할 수 있습니다. 풀스택 개발자 한 명에게 모든 것을 맡겼다면 문제 발생 시 전체를 다시 시작해야 할 수도 있습니다.
외주사의 제안 평가
외주사가 "풀스택으로 하겠다"고 제안할 때 그 이유를 명확히 물어보세요. 단순히 비용을 낮추기 위해서인지, 실제로 역량 있는 풀스택 개발자가 있어서인지 확인해야 합니다.
외주사가 협업의 어려움을 피하기 위해 풀스택을 선호한다면 오히려 위험 신호입니다. 제대로 된 개발 조직이라면 프론트엔드와 백엔드 개발자 간 협업이 일상적이고 원활해야 합니다.
비용 차이의 현실
풀스택 개발자 한 명을 쓰는 것이 두 명의 전문 개발자를 쓰는 것보다 저렴할 것 같지만, 실제로는 그렇지 않을 수 있습니다. 풀스택 개발자가 혼자 모든 것을 개발하면 시간이 더 오래 걸리고, 문제 발생 시 해결 시간도 길어집니다.
반면 프론트엔드와 백엔드 개발자가 동시에 작업하면 개발 기간이 단축되고, 각자의 전문 영역에서 최적의 코드를 작성하여 유지보수 비용도 줄어듭니다.