질문 수준이 좀 황당할 거 같은데 완전 노베 비전공자다 보니 개념이 좀 헷갈림. 


보통 웹개발에서 백엔드 프론트엔드 이러잖아. 난 그걸 대충 클라이언트, 서버 이런 것과 거의 일대일 대응으로 생각하고 있었거든? 근데 실제로 조금씩 배워보면서 따라도 쳐보고 그러다 보니 헷갈리는 부분이 있음. 프론트랑 백엔드랑 나눠서 개발을 하는데 그게 보통 어떤식으로 동작하는지가 좀 이해가 안됨.


나는 처음 아주 기초적인 부분을 배울 때 생활코딩 보면서 그냥 한 사람이 url에 따라 html 문서를 조립해서 리턴해주는 걸로 배웠음. 그러고 나서 백엔드랑 프론트엔드랑 직군이 별도로 있다는 걸 알게 됐고 좀 체계가 잡힌 대기업에 가면 자기들 일만 한다는 사실을 알게 됨.


그래서 전문 백엔드 쪽으로 가면 이제 html 문서 만드는 영역은 완전히 손떼고 api서버(이게 was 라고도 불리는 그거 맞지?) 를 만들어서 url에 따라 응답을 그냥 JSON으로 답변해주는 그런 방식으로 가게 된다는 것도 이해함. 눈에 보이는 부분과는 완전히 별도로 포스트맨으로 쏴서 응답받고 그런 거...


여기까지는 이해함. 레포 따서 소스코드 작성하고 서버에 올려서 node.js로 서버 띄워서 리퀘오면 리스폰스 보내주고...



그런데 그럼 여기서 프론트엔드랑 어떻게 협업이 이루어지는지 그걸 모르겠음. 프론트소스 코드는 클라이언트단(즉 고객의 브라우저)에서 실행된다고 하는데 그거랑 별개로 뭔가 서버? 같은 게 있어서 프론트엔드 소스코드가 있어서 그걸 리턴해주는 게 있어야 하는 거잖아.


그런데 저 앞에서 말한 api 서버는 html, css, js 이런 것에 일체 배제된 것이고...그 소스코드 모아둔 리포에는 프론트쪽 소스는 전혀 없는 게 맞지?


여기서 첫 번째 질문이 나오는데 결국 프론트엔드도 자기네 소스코드를 클라이언트측으로 내려줄 서버가 필요한 게 맞고 프론트엔드 개발자가 그 소스 또한 구축하는 거지? 그게 보통 흔히들 웹서버라고 말하는 거고?


나는 프론트=클라이언트, 백엔드=서버 이런 식으로 처음에 생각을 하다 보니 프론트는 서버랑 전혀 상관이 없는 거라고 생각했으나 그건 착각이고 한 레포 안에서 백이고 프론트고 다 거기서 작업해서 html 를 서버측에서 통째로 만들어서 내려주는 거 아니면 프론트도 서버를 구축하고 운영하는 게 일반적이고 정상적인 운영인 거 맞는 거지?


여기서 두번째 질문이 나오는데 그게 맞을 경우에는 그럼 그 프론트엔드 개발자가 구축한 서버라는 게 결국 url에 따라 다른 페이지를 보여줘야 하는 거니까 


http://zxcvzxcv.com/user/1
http://zxcvzxcv.com/product/2345


이런 url에 따른 라우팅을 해서 다른 html 문서를 내려주는 것도  프론트엔드 개발자가 하는 거야?


백엔드는 따로 api 서버를 운영해서 http://api.zxcvzxcv.com/product/2345 뭐 이런 걸 운영해서 유저가 http://zxcvzxcv.com/product/2345에 접속하면 프론트가 만든 틀을 보여주는데 그 틀에서 렌더링하는 와중에 http://zxcvzxcv.com/product/2345에서 접속해서 실제 2345라는 상품의 정보를 백엔드가 구축한 api 서버에서 받아오게 하는 거고?


이게 헷갈리는게 나는 저런 라우팅 작업이 전형적인 백엔드의 일이라고 생각했거든. 근데 백이랑 프론트랑 아예 레포 자체가 다르고 백에서는 api 서버만 운영해서 json 상하차만 해준다는 가정이면 결국 프론트가 저런 라우팅 작업도 다 해야 작동을 하는 것 처럼 보이거든



실제로 그런 식으로 일을 하는 게 맞아?


아니면 내가 뭘 좀 단단히 착각하고 있는 거야?