</> 바코친
백엔드 & API · L0 입문 · 약 7분

클라이언트와 서버의 역할 분담

누가 뭘 맡아야 빠르고 안전할까?

한 줄로 말하면

클라이언트는 보여주고 빠르게 반응하는 일, 서버는 진짜 데이터를 지키고 규칙을 판정하는 일을 맡아.

여기서 클라이언트는 서버에 요청하는 쪽, 즉 사용자의 폰 앱이나 브라우저를 말해. 둘 다 코드가 돌아가지만, 누가 믿을 수 있는 곳인지는 완전히 달라.

클라이언트가 잘하는 일

공통점이 보여? 전부 "틀려도 큰일 안 나는 일" 또는 "사용자 기기에서만 할 수 있는 일"이야. 사용자가 이걸 조작해도 피해는 자기 화면에서 끝나.

서버가 맡아야 하는 일

같은 검사를 두 번 하는 이유

  1. 클라이언트 검사 — 이메일 형식, 비밀번호 길이 → 틀리면 바로 안내
  2. 요청 전송 — 이메일과 비밀번호를 서버로
  3. 서버 검사 — 형식 다시 확인 + 이미 가입한 이메일인지 DB 확인
  4. 저장 — 비밀번호는 안전하게 변환(해시)해서 저장
  5. 응답 — 성공 또는 "이미 가입된 이메일이야"

클라이언트 검사는 빠르고 친절하게, 서버 검사는 확실하고 안전하게. 둘은 대체 관계가 아니라 같이 있어야 하는 짝이야. 그리고 "이미 가입한 이메일인지"처럼 진짜 데이터를 봐야 아는 검사는 서버만 할 수 있어.

확인 퀴즈

Q. 쇼핑몰 앱에서 서버가 반드시 직접 해야 하는 건?
  1. 장바구니 아이콘 애니메이션
  2. 최종 결제 금액 계산
  3. 상품 사진 확대
  4. 검색어 입력 중 자동완성 표시
정답 보기

2번. 결제 금액은 조작되면 회사가 손해를 봐. 서버가 DB의 진짜 가격과 쿠폰 정보로 직접 계산해야 해.

Q. 화면에서 이미 비밀번호 길이를 검사했어. 서버에서도 검사해야 할까?
  1. 필요 없다, 화면에서 했으니까
  2. 해야 한다, 화면 검사는 건너뛸 수 있으니까
  3. 서버는 검사를 못 한다
  4. 앱일 때만 필요하다
정답 보기

2번. 화면 검사는 친절한 안내일 뿐, 누구든 건너뛰고 서버에 바로 요청할 수 있어.

Q. 요청 안에 userId: 7이 들어 있어. 서버는 어떻게 해야 할까?
  1. 그대로 7번 회원으로 처리한다
  2. 로그인 토큰으로 실제 사용자를 확인하고 그 기준으로 처리한다
  3. userId를 8로 바꾼다
  4. 요청을 무조건 거절한다
정답 보기

2번. 요청에 담긴 id는 사용자의 주장일 뿐이야. 누군지는 서버가 로그인 정보로 직접 확인해야 해.

바코친 앱에서 퀴즈 풀고 AI한테 물어보기

무료 · 카카오로 바로 시작 · 레슨 243개