Frontend Complexity

An author

프론트엔드가 백엔드보다 개발하기 쉽다는 인식이 일반적인데, 이에 대한 내 생각을 정리해 보았다.

우선 "개발이 쉽다" 는게 무엇일까? 경험상 크게 두가지로, 복잡성이 낮고 최적화가 필요 없을수록 개발이 쉽다고 느껴졌다.

복잡성은 "아키텍쳐 설계에 얼마나 공을 들이냐" 로 질문할 수 있을것 같다. 아키텍쳐를 잘 설계할 수록, 복잡성을 다루기가 쉬워지기 때문이다.

복잡성의 측면에서, FE도 BE 못지 않게 설계에 많은 신경을 써야 한다. 이부분은 FE나 BE나 큰 차이가 없다고 생각한다.

최적화는 "얼마나 많은 연산을 다루는가" 로 질문할 수 있을것 같다. 연산량이 많지 않다면, 최적화를 할 필요가 없기 때문이다.

프론트에서 일반적으로 말하는 연산량은 초당 렌더링 횟수 이다. 백엔드에서 일반적으로 말하는 연산량은 초당 요청 횟수 이다. (하나의 연산이 얼마나 오래 걸리는지는 둘 모두 중요하니 패스)

여기서 프론트와 백엔드가 차이가 있다고 본다. 백엔드는 연산량이 유저 수에 비례해서 증가하지만, 프론트는 그렇지 않다. 백엔드는 연산량이 얼마나 될지 예측하기가 매우 어렵고, 테스트 환경에서 재현하기도 어렵다. 하지만 프론트는 비교적 덜하다.

때문에 백엔드 어플리케이션은 병렬처리, 캐싱, 비동기처리 등의 최적화 기법을 필수적으로 알아야 하지만, 프론트는 비교적 덜하다.

하지만 최적화가 필요한 경우, 프론트엔드는 60fps를 유지해야 한다는 점과 단일 쓰레드밖에 못쓴다는 제약 때문에 그 난이도가 결코 쉽지 않다. 백엔드야 요청이 100ms가 걸리던 1초가 걸리던 유저 입장에서 큰 차이가 없지만, 프론트엔드에서 렌더링이 1초가 걸리는것은 치명적이다. 1초동안 화면이 먹통이 되기 때문이다.

결론적으로, 프론트엔드가 백엔드보다 쉽다고 말하기는 어렵다. 둘 다 복잡성을 다루는데 많은 노력이 필요하고, 둘 다 최적화가 필요하다. 다만 최적화가 필요한 경우가 프론트보다는 백엔드가 더 많은건 사실인것 같다.