리뷰용 미리보기 (목적 재정의판) · 입문 + 기출 주제 지도 + 풀이법 + 적용 · 2026-06-09
시스템 디자인 면접 입문 · 주니어 백엔드

시스템 디자인 면접,
뭐부터 어떻게 준비하지?

처음이라 뭐가 뭔지도 모르는 사람을 위해. 무엇을 연습할지(주제 지도)와 어떻게 푸는지(풀이법)부터 잡습니다. 정답을 외우는 책이 아니라, 어떤 문제가 나와도 풀어가는 법을 손에 쥐는 책입니다.

면접에 실제로 나오는 주제 지도 어떤 문제든 통하는 풀이법 정답 방향 · 답변 방향 처음부터 차근차근
“이게 뭔지조차 모르겠어요”

그게 정상입니다

코딩테스트는 준비하는데 설계 면접은 어디서부터 봐야 할지 모릅니다. 1장이 그것부터 풀어줍니다.

“뭘 연습해야 하죠?”

연습할 주제 지도

아무 문제나 풀면 시간만 낭비합니다. 실제로 나오는 주제만 골라 지도로 묶었습니다.

“이게 맞는 답인가요?”

정답 방향과 답변 방향

설계 면접엔 외울 정답이 없습니다. 좋은 답이 어디로 가는지, 어떻게 말해야 하는지를 보여줍니다.

“어떻게 풀어가죠?”

어떤 문제든 4단계로

문제마다 새로 헤매지 않게, 처음 보는 문제도 똑같이 풀어가는 4단계를 손에 쥐여줍니다.

1장 · 입문

시스템 디자인 면접이 뭐길래

면접관은 완성된 정답을 원하지 않습니다. 막막한 요구사항 하나를 던지고, 당신이 그걸 어떻게 쪼개고 어디를 먼저 짚는지를 봅니다. 코딩테스트가 “돌아가는 코드”를 본다면, 이건 “생각하는 순서”를 봅니다.

면접관이 보지 않는 것

  • 유명 아키텍처 용어를 외워 왔는지
  • 한 번에 완벽한 정답을 내는지
  • 최신 기술 스택을 나열하는지

면접관이 보는 것

  • 요구사항을 스스로 좁히는지
  • 가장 중요한 한 가지를 먼저 짚는지
  • 단순하게 시작해 차근차근 키우는지

그래서 준비의 핵심은 “답을 많이 아는 것”이 아니라 “푸는 순서를 몸에 익히는 것”입니다. 그 순서를 3장에서 4단계로 정리합니다.

2장 · 준비 지도

무엇을 연습할까: 주제 지도

주니어 백엔드 설계 면접은 결국 네 갈래로 모입니다. 아무 문제나 풀지 말고, 이 네 갈래의 대표 문제부터 잡으세요. 면접에서 마주치는 대부분이 이 안에 있습니다.

🗂️

1. 데이터를 어떻게 담나

모델링 · 가장 자주 나오는 갈래

  • 좌석 예약, 날짜로 검색되게
  • 댓글·대댓글, 답글의 답글까지
  • 태그, 여러 개 달고 검색
  • 주문 가격, 그때 그 가격 보존

2. 동시에 들어올 때

동시성 · 단골 압박 질문

  • 선착순 쿠폰, 딱 100장만
  • 좋아요, 한 사람 한 번
  • 재고 차감, 초과 판매 방지
📈

3. 많아지면

조회 · 확장

  • 무한스크롤, 10만 건 페이징
  • 인기글 정렬, 좋아요 수 빠르게
  • 검색, 조건으로 거르기
⏱️

4. 시간과 상태

상태 · 스케줄

  • 예약 상태, 신청·확정·취소
  • 예약 알림, 30분 전 발송
  • 중복 요청, 두 번 눌러도 한 번
이 지도의 문제를 4단계 풀이법으로 하나씩 풀고 나면, 처음 보는 문제도 “아, 이건 2번 갈래네” 하고 어디에 속하는지 알게 됩니다. 그게 이 책이 노리는 지점입니다.
3장 · 풀이법

어떻게 풀까: 4단계

처음 보는 문제 앞에서 머리가 하얘지지 않으려면, 매번 똑같이 밟는 순서가 있어야 합니다. 어떤 설계 문제든 이 4단계 위에 올려놓고 시작하세요.

1

요구사항 좁히기

“무엇을, 누가, 얼마나”를 한 줄로. 모호하면 면접관에게 되묻습니다.

2

핵심 하나 짚기

이 문제가 진짜 묻는 한 가지를 고릅니다. 곁가지는 과감히 미룹니다.

3

단순하게 시작

제일 순진한 설계를 먼저 그립니다. 완벽하지 않아도 됩니다.

4

깨지는 곳 키우기

그 설계가 어디서 무너지는지 짚고, 한 단계만 올립니다.

정답 방향: 좋은 답이 가는 곳

  • 한 번에 완성이 아니라, 단순 → 개선의 흐름
  • “이게 더 좋다”가 아니라 “이 상황이면 이걸 택한다”
  • 고른 이유와 버린 이유를 같이 말한다

답변 방향: 어떻게 말하나

  • 가정을 소리 내어 말한다 (“트래픽은 이 정도로 보겠습니다”)
  • 생각을 입 밖으로 (면접관은 결과보다 과정을 본다)
  • 막히면 멈추지 말고 “여기서 고민됩니다”라고 드러낸다
4장 · 같이 풀어보기

좌석 예약, 4단계로

면접관

“공연 좌석 예약을 설계해보세요. 날짜로 검색하면 그 날 예약 가능한 좌석이 나와야 합니다.”

1단계 · 요구사항 좁히기

“날짜를 고르면 그 날 빈 좌석 목록, 하나 골라 예약.” 결제나 회원 가입은 지금 묻는 게 아니니 접어둡니다. 한 줄로 좁혔습니다.

2단계 · 핵심 하나 짚기

이 문제가 진짜 묻는 건 화면도 API도 아니고, 같은 좌석을 날짜별로 어떻게 표현하느냐입니다. 여기만 풀면 나머지는 따라옵니다.

3단계 · 단순하게 시작

제일 순진하게: 좌석 테이블에 “예약됨” 칸 하나. 조회는 그 칸이 비어 있는 좌석만. 일단 그려 봅니다.

seats A12 · 예약됨? true / false 6/1엔 찼고, 6/2엔 비었는데? 칸 하나로는 날짜별 상태를 담을 수 없습니다. 여기서 막힙니다
4단계 · 깨지는 곳 키우기

막힌 지점은 “날짜”입니다. 그러면 좌석(고정)과 예약(날짜별 사건)을 나눠 줍니다. 한 단계만 올렸습니다.

seats · 고정 idseat_no reservations · 날짜별 seat_id →performance_date UNIQUE(seat_id, date) 1 : N 빈 좌석 = 그 날짜에 예약 행이 없는 좌석
시니어의 시선

여기서 멈추면 딱 합격선입니다. 그리고 진짜 면접관은 한 발 더 들어옵니다. “두 사람이 같은 좌석을 동시에 누르면요?” 당황하지 마세요. 4단계로 돌아가면 됩니다. 막히는 곳(동시 예약)을 짚고, 한 단계 올리면(UNIQUE 제약과 트랜잭션) 됩니다. 풀어가는 방법이 같으니까요. 이게 외운 답이 아니라 풀이법을 익혔을 때 생기는 힘입니다.

혼자서도 풀 수 있게, 끝까지 같이

이 지도와 4단계 풀이법이면 처음 보는 문제도 스스로 풀어갑니다. 그리고 옆에서 시니어가 당신의 답을 같이 깎아주면, 그 속도는 훨씬 빨라집니다. 그게 그릿입니다.