백엔드 & API · L0 입문 · 약 7분
클라이언트와 서버의 역할 분담
누가 뭘 맡아야 빠르고 안전할까?
한 줄로 말하면
클라이언트는 보여주고 빠르게 반응하는 일, 서버는 진짜 데이터를 지키고 규칙을 판정하는 일을 맡아.
여기서 클라이언트는 서버에 요청하는 쪽, 즉 사용자의 폰 앱이나 브라우저를 말해. 둘 다 코드가 돌아가지만, 누가 믿을 수 있는 곳인지는 완전히 달라.
클라이언트가 잘하는 일
- 화면 그리기: 버튼, 목록, 애니메이션
- 즉각 반응: 탭 전환, 입력하면서 글자 수 세기, 메뉴 열기
- 친절한 미리 검사: "이메일 형식이 아니에요", "비밀번호는 8자 이상" 같은 안내
- 기기 기능 쓰기: 카메라, 위치, 진동, 사진첩
- 잠깐 기억하기: 작성 중인 글 임시 저장, 마지막으로 본 탭
공통점이 보여? 전부 "틀려도 큰일 안 나는 일" 또는 "사용자 기기에서만 할 수 있는 일"이야. 사용자가 이걸 조작해도 피해는 자기 화면에서 끝나.
서버가 맡아야 하는 일
- 진짜 데이터 보관: 잔액, 재고, 주문 내역. 서버에 있는 게 "진짜"야
- 권한 판정: 이 사람이 이 글을 지울 수 있나? 관리자인가?
- 돈과 숫자 계산: 가격, 할인, 포인트. 사용자가 보낸 숫자를 믿지 않아
- 비밀 쓰기: 결제 비밀 키, AI 키, 관리자용 DB 키
- 다른 사람에게 영향 주는 일: 알림 보내기, 메일 발송, 랭킹 반영
같은 검사를 두 번 하는 이유
- 클라이언트 검사 — 이메일 형식, 비밀번호 길이 → 틀리면 바로 안내
- 요청 전송 — 이메일과 비밀번호를 서버로
- 서버 검사 — 형식 다시 확인 + 이미 가입한 이메일인지 DB 확인
- 저장 — 비밀번호는 안전하게 변환(해시)해서 저장
- 응답 — 성공 또는 "이미 가입된 이메일이야"
클라이언트 검사는 빠르고 친절하게, 서버 검사는 확실하고 안전하게. 둘은 대체 관계가 아니라 같이 있어야 하는 짝이야. 그리고 "이미 가입한 이메일인지"처럼 진짜 데이터를 봐야 아는 검사는 서버만 할 수 있어.
확인 퀴즈
Q. 쇼핑몰 앱에서 서버가 반드시 직접 해야 하는 건?
- 장바구니 아이콘 애니메이션
- 최종 결제 금액 계산
- 상품 사진 확대
- 검색어 입력 중 자동완성 표시
정답 보기
2번. 결제 금액은 조작되면 회사가 손해를 봐. 서버가 DB의 진짜 가격과 쿠폰 정보로 직접 계산해야 해.
Q. 화면에서 이미 비밀번호 길이를 검사했어. 서버에서도 검사해야 할까?
- 필요 없다, 화면에서 했으니까
- 해야 한다, 화면 검사는 건너뛸 수 있으니까
- 서버는 검사를 못 한다
- 앱일 때만 필요하다
정답 보기
2번. 화면 검사는 친절한 안내일 뿐, 누구든 건너뛰고 서버에 바로 요청할 수 있어.
Q. 요청 안에
바코친 앱에서 퀴즈 풀고 AI한테 물어보기userId: 7이 들어 있어. 서버는 어떻게 해야 할까?- 그대로 7번 회원으로 처리한다
- 로그인 토큰으로 실제 사용자를 확인하고 그 기준으로 처리한다
- userId를 8로 바꾼다
- 요청을 무조건 거절한다
정답 보기
2번. 요청에 담긴 id는 사용자의 주장일 뿐이야. 누군지는 서버가 로그인 정보로 직접 확인해야 해.
무료 · 카카오로 바로 시작 · 레슨 243개