질문


https://gall.dcinside.com/mgallery/board/view/?id=backend&no=929


메타 프레임워크 <= 이거있으면 백엔드프레임워크 따로안해도되잖아

sveltekit, next, remix 이런애들있으면 백엔드 로직도 내가 짤수있고, DB접근도 가능하잖아. 클라랑 백이랑 로직분리도 가능하고.
근데 왜 go, java, python같은거 쓰는거임?
백엔드 성능? 성능문제 대부분은 어차피 DB쿼리쪽 일텐데.
걍 자스쓰면 되는거아님?
단순히 시장문제때문에 자바, go이런거 하는거야?




답변


sveltekit, next, remix은 프레임워크고 go, java, python은 언어라서 적절한 비교는 아닌듯


js만으로 풀스택이 가능하고, js용 프레임워크 중에서도 next.js 같은거 쓰면 node.js 같은 추가 백엔드 서버 없이도 간편하게 가능한데, 왜 무조건 추가 백엔드 서버가 필요한 java 등의 언어를 백엔드 언어로 채택하는지 궁금해야 맞을듯


먼저, next.js를 백엔드로 사용하지 않고 ssr 전용 서버로 사용하는 이유는 아래와 같음
1. 모든 기술에는 장단점이 있음. 특정 목적에 특화 되기 위해서는 다른 목적들에 특화되는건 포기해야한다는 것
2. next.js는 ssr을 제공하려는 목적에 특화돼있음. api를 다루기 좋은 구조가 아니라는 것


최신 버전의 next.js는 ssr과 api 모두를 제공하려는 풀스택 프레임워크로서의 방향성을 보이고 있긴 하지
근데 그 방향성이 생긴지 얼마 안돼서, 기술적 성숙도나 신뢰도가 낮아
나중이라면 모를까, 지금은 딱히 매력이 없다는 소리야


만약 풀스택 프레임워크로 충분히 성숙한다 하더라도, 규모가 큰 회사에서는 SSR 전용으로 쓰일 가능성이 높아
ssr 서버와 api 서버는 서로 성격이 다르다는 문제가 있거든
성격이 다른걸 한군데 모아두면, 규모가 작을때는 문제가 없겠지만 규모가 커지면 문제가 생기기 시작하지
간략한 예를 들자면, 서버에서 처리할 http 관련 설정이 ssr용 api용 각각 다르게 최적화 돼야한다는게 있겠음


중간 정리하자면,
1. next.js가 더 성숙하면 스타트업 등에서 풀스택 프레임워크로 채택될 가능성이 높다
2. 그래도 규모가 큰데에서는 node.js를 함께 사용할거다



백엔드 서버를 node.js가 아니라 다른 언어로 구현하는 이유는 아래와 같아
1. go: cpu bounded 성능이 필요한 경우
2. java: 스프링이 사기적으로 좋아서, 백엔드는 java 개발자 말고는 구인도 구직도 잘 되지 않아서
3. python: 스타트업에서 개발자 한명밖에 없는데, 얘가 할줄 아는게 python인 경우 / ml 관련 서비스 하는 회사에서 백엔드 서버가 필요한 경우


node.js 기반 프레임워크들은 DB 트랜잭션 처리하는게 좀 어이가 없더라

내가 딥하게 만져본건 아니지만, 생태계의 성숙도가 매우 낮다고 느꼈음

node.js 쓴다고 해서 성능에 이득이 있는거도 아닌데, 굳이 검증된 자프링 놔두고 node.js를 쓸 필요가 없지


그러면 node.js는 어떨때 쓰느냐?

내가 직접 겪어본건 아니지만, node.js는 초기 단계에 인건비 절약을 위해 동일 언어 풀스택 개발을 위해 채택한다고 들었어

그러다가 시리즈B 투자 받으면서 CTO 수혈 받고 java 개발자 뽑아서(js 시니어 개발자는 인력 수급이 힘듬) 자바 스프링으로 전환한다고 들었고

혹은 규모가 좀 있는 회사에서 BFF 서버를 필요로 하면, 프론트 개발자가 제한적인 풀스택 개발을 하는 방식으로 node.js를 채택하는 것으로 알고 있음