2026년 시스템 설계 면접에서 가장 많이 나오는 질문 30가지와 답변

시스템 설계 인터뷰 질문 및 답변

시스템 설계 면접을 준비한다는 것은 면접관이 압박 속에서 아키텍처적 사고를 어떻게 평가할지 예상하는 것을 의미합니다. 시스템 설계 면접 질문 구조화된 토론을 통해 깊이 있는 이해, 절충안, 확장성 판단 및 의사소통 능력을 드러냅니다.

철저한 준비는 클라우드 플랫폼, 분산 시스템, 데이터 엔지니어링 분야에서 다양한 직무 기회를 열어주며, 실제 분석을 통해 기술 전문성을 입증할 수 있도록 합니다. 해당 분야의 전문가들은 실무 능력을 향상시키고, 팀을 지원하며, 관리자의 의사 결정을 돕고, 신입부터 고위급에 이르기까지 전 세계적으로 통용되는 고급, 기초, 기술적 관점을 아우르는 일반적인 질문과 답변을 해결합니다.
자세히보기 ...

👉 무료 PDF 다운로드: 시스템 설계 면접 질문 및 답변

최고의 시스템 설계 인터뷰 질문 및 답변

1) 시스템 설계란 무엇이며 소프트웨어 엔지니어링에서 왜 중요한지 설명하십시오.

시스템 설계는 다음과 같습니다. 시스템의 아키텍처, 구성 요소, 인터페이스 및 데이터를 정의하는 프로세스 확장 가능하고 안정적이며 유지보수가 용이한 방식으로 특정 요구 사항을 충족하기 위한 것입니다. 이는 시스템이 달성해야 할 목표와 기술, 프로토콜 및 아키텍처 패턴에 대한 구체적인 결정을 연결합니다. 강력한 시스템 설계는 애플리케이션이 부하 상태에서도 우수한 성능을 발휘하고, 내결함성을 유지하며, 전체적인 재작성 없이 시간이 지남에 따라 발전할 수 있도록 보장합니다.

면접에서 이는 당신의 균형 감각을 보여줍니다. 기능 요구 사항비기능적 제약 조건 확장성, 지연 시간, 일관성 및 가용성과 같은 요소들을 중요하게 생각합니다. 모든 주요 기술 기업들은 지원자의 시스템 설계 능력을 평가하여 실제 엔지니어링 판단력을 가늠합니다.


2) 시스템 아키텍처에서 고수준 설계(HLD)와 저수준 설계(LLD)를 어떻게 구분하나요?

고수준 설계(HLD)는 다음 사항에 중점을 둡니다. 건축 개요 및 주요 구성 요소 구현 세부 사항에 깊이 들어가지 않고 시스템들이 어떻게 상호 작용하는지 보여줍니다. 예를 들어, 웹 서버, 데이터베이스, 캐시, API 게이트웨이글렌데일 메시징 시스템.

저수준 설계(LLD)는 더 깊이 들어갑니다. 클래스 정의, 메서드, 데이터 구조 및 상세 로직 각 구성 요소 내에서 HLD(고수준 설계)는 어떤 구성 요소를 사용할지, 그리고 구성 요소들이 어떻게 상호 작용하는지에 대한 것이고, LLD(저수준 설계)는 이러한 상호 작용을 어떻게 구현할지에 대한 것입니다. 이 둘을 모두 이해하면 면접관이 지원자의 큰 그림을 그리는 능력과 세부적인 엔지니어링 능력을 모두 평가하는 데 도움이 됩니다.


3) 시스템을 설계할 때 고려해야 할 주요 성능 지표는 무엇이며, 그 이유는 무엇입니까?

성능 지표는 시스템이 사용자 및 비즈니스 요구 사항을 얼마나 잘 충족하는지 정량화하는 데 도움이 됩니다. 주요 지표는 다음과 같습니다.

  • 대기 시간 : 단일 요청을 처리하는 데 걸리는 시간입니다. 지연 시간이 짧을수록 응답 속도가 빨라집니다.
  • 처리량 : 일정 기간 동안 처리된 작업량(예: 초당 요청 수). 처리량이 높을수록 부하 상태에서 효율성이 높다는 것을 의미합니다.
  • 운영시간: 시스템이 가동되는 시간의 비율. 높은 가용성은 글로벌 서비스에 매우 중요합니다.

이러한 지표는 설계자가 장단점을 비교 검토하는 데 도움이 됩니다. 예를 들어, 캐싱은 지연 시간을 줄여주지만 데이터 일관성을 유지하기 어렵게 만듭니다. 이러한 지표에 대한 이해도를 보여주는 것은 실제 시스템 품질에 대한 관심을 나타내는 것입니다.

메트릭 정의 중요성
숨어 있음 요청당 시간 사용자 경험
맞춤형 설비 단위 시간당 요청 확장성
유효성 가동 시간 vs. 비활성 시간 신뢰성

4) 부하 분산에 대해 설명하고 분산 시스템에서 부하 분산이 중요한 이유를 설명하십시오.

로드 밸런싱은 여러 단계를 거치는 과정입니다. 들어오는 요청을 여러 서버 또는 서비스에 분산시키는 것 특정 노드가 병목 현상을 일으키는 것을 방지합니다. 이를 통해 용량을 최적으로 활용하고, 응답 시간을 개선하며, 비정상적인 인스턴스에서 트래픽을 우회시켜 시스템 안정성을 향상시킵니다.

로드 밸런서에는 여러 종류가 있습니다. 레이어 4(L4) 밸런싱은 전송 계층(IP/포트)에서 작동하는 반면, 레이어 7(L7) 로드 밸런싱은 애플리케이션 계층에서 HTTP/S 시맨틱을 이해하며 작동합니다. 로드 밸런싱은 장애 허용, 다운타임 없는 확장, 프로덕션 시스템의 롤링 업데이트에 매우 중요합니다. 이 질문에 잘 답하면 성능, 일관성 및 비용 간의 기본적인 분산 시스템 상충 관계를 이해하고 있음을 보여줄 수 있습니다.


5) TinyURL 서비스를 어떻게 설계하시겠습니까? 핵심 구성 요소와 단계를 설명하십시오.

TinyURL 서비스 설계에는 기능적 요구사항(URL 단축, 사용자 리디렉션)과 비기능적 요구사항(확장성, 고유성, 성능)이 모두 포함됩니다.

먼저, 명확한 질문을 통해 예상 물량, 만료 정책, 분석 요구 사항 등과 같은 제약 조건을 정의할 수 있습니다. 주요 구성 요소는 다음과 같습니다.

  • API 계층: 단축/리디렉션 요청을 수신하고 처리합니다.
  • 데이터베이스 및 캐싱: 원본 URL과 단축 URL 간의 매핑 정보를 저장하며, 캐싱을 통해 읽기 성능을 향상시킵니다.
  • 간략 ID 생성기: 해싱 또는 베이스 인코딩을 이용한 고유 ID를 사용합니다.

고유 키를 효율적으로 생성하려면 다음 방법을 사용할 수 있습니다.

  • base-62 인코딩 순차적 ID(예: 1 → a, 2 → b 등)입니다.
  • 사용하십시오 충돌 해결 기능이 있는 해시 함수.

또한 부하를 줄이기 위해 분석, 속도 제한, 캐싱 또는 CDN 계층을 사용한 인기 URL 처리 등을 고려해야 합니다. 이러한 장단점을 설명하는 것은 설계 패턴과 확장성 고려 사항 모두에 대한 깊이 있는 이해를 보여줍니다.


6) 캐싱이란 무엇이며, 시스템 성능을 어떻게 향상시키나요?

캐싱 저장소 자주 접근하거나 계산 비용이 많이 드는 데이터 더 빠른 저장 매체(메모리, 분산 캐시)에 저장하여 반복적인 연산과 데이터베이스 부하를 줄입니다. 이를 통해 자주 요청되는 사항들을 신속하게 처리하여 지연 시간과 처리량을 크게 향상시킵니다.

캐싱은 애플리케이션 메모리, Redis 등 여러 계층에서 발생할 수 있습니다.EhcacheCDN 엣지 서버 또는 브라우저 로컬 스토리지를 사용할 수 있습니다. 캐싱은 응답 시간을 단축하지만, 데이터의 최신성 유지 및 무효화 문제를 야기하므로 설계 단계에서 이를 해결해야 합니다. 예를 들어, 기본 데이터가 변경될 때 TTL(Time-to-Live) 정책을 사용하거나 캐시 무효화 전략을 사용할 수 있습니다. 좋은 답변은 이러한 두 가지 문제를 모두 이해하고 있음을 보여줍니다. 장점과 함정 캐싱에 관하여.


7) CAP 정리와 그것이 분산 시스템 설계에 미치는 영향에 대해 설명하시오.

CAP 정리는 분산 시스템에서 다음 세 가지 보장 중 최대 두 가지만 선택할 수 있다고 명시합니다.

  1. 일관성 : 모든 노드가 동일한 데이터를 동시에 볼 수 있습니다.
  2. 운영시간: 모든 요청에는 응답이 주어집니다(정확성은 보장되지 않습니다).
  3. 파티션 허용 오차: 네트워크 장애에도 불구하고 시스템은 계속 작동합니다.

네트워크 분할 상황에서는 실질적인 분산 시스템에서 이 세 가지를 동시에 달성하는 것은 불가능합니다. 예를 들어, 네트워크 분할이 발생하면 시스템은 오래된 데이터를 제공하는 것(가용성)과 데이터 일관성이 복구될 때까지 요청을 거부하는 것(일관성) 중에서 선택해야 합니다. CAP(Critical Access Point)를 이해하면 운영 우선순위에 따라 정보에 입각한 절충안을 마련할 수 있다는 것을 알 수 있으며, 이는 시스템 설계 면접에서 중요한 역량입니다.


8) WhatsApp과 같은 채팅 메시징 서비스를 개략적으로 어떻게 설계하시겠습니까?

대규모 채팅 시스템을 설계하려면 실시간 메시지 전달, 데이터 영구 저장, 메시지 순서 지정, 오프라인 지원 및 확장성과 같은 주요 요구 사항을 파악하는 것부터 시작해야 합니다.

높은 수준에서:

  • 고객사 웹/모바일을 통해 게이트웨이 서버에 연결하세요.
  • 메시지 라우터 수신 메시지를 처리하고 (웹소켓과 같은 지속적인 연결을 통해) 수신자에게 전달합니다.
  • 데이터베이스 메시지 기록을 저장하고, 대규모 사용자 기반에 맞춰 적절한 파티셔닝을 적용합니다.

추가 구성 요소에는 최근 채팅 캐시, 비동기 전송 큐, 오프라인 사용자를 위한 알림 서비스 등이 포함됩니다. 이에 대해 논의해야 합니다. 메시지가 어떻게 저장되고, 순서가 정해지고, 사용자별 여러 기기로 전달되는지 장애 조치 및 내결함성을 어떻게 처리하는지 설명해 주세요.


9) 샤딩이란 무엇이며, 데이터베이스 확장에 어떻게 도움이 되나요?

샤딩은 일종의 수평 확장 대규모 데이터 세트를 샤드라고 하는 더 작고 독립적인 파티션으로 분할하여 각 샤드를 서로 다른 데이터베이스 노드에 저장하는 방식입니다. 이렇게 하면 단일 인스턴스를 확장하는 대신 데이터와 쿼리 부하를 여러 머신에 분산시켜 성능과 확장성을 향상시킬 수 있습니다.

데이터는 고객 ID, 지역 또는 해싱 방식을 기준으로 샤딩할 수 있습니다. 샤딩은 노드당 부하를 줄여주지만, 노드 추가 또는 제거 시 샤드 간 쿼리 및 리밸런싱 과정에서 복잡성을 야기합니다. 면접관은 지원자가 이러한 장단점을 이해하고, 일관성 있는 해싱이나 샤드 관리자가 운영을 어떻게 간소화할 수 있는지 알고 있기를 기대합니다.


10) API와 마이크로서비스가 모놀리식 아키텍처와 어떻게 다른지 설명하십시오.

A Monolithic architecture 애플리케이션의 모든 구성 요소를 단일 배포 가능한 단위로 묶습니다. 이는 초기 개발을 단순화할 수 있지만 시간이 지남에 따라 확장, 유지 관리 및 업데이트가 어려워집니다.

Microservices 시스템을 분해하다 소규모이며 독립적으로 배포 가능한 서비스각각 특정 비즈니스 기능을 담당합니다. API(애플리케이션 프로그래밍 인터페이스)는 이러한 서비스 간의 통신을 가능하게 합니다.

아래 단단히 짜여 하나로 되어 있는 마이크로 서비스
전개 단품 독립 서비스
확장성 제한된 서비스별 확장
결함 격리 가난한 강한
복잡성 처음에는 더 간단합니다 더 복잡한 작업

마이크로서비스는 확장성과 배포 유연성을 향상시키지만, 고급 운영 도구(서비스 검색, 추적 및 내결함성)를 필요로 합니다. 이를 논의함으로써 아키텍처 진화와 단순성 및 유연성 간의 절충점에 대해 논리적으로 생각할 수 있음을 보여줄 수 있습니다.


11) 콘텐츠 전송 네트워크(CDN)는 어떻게 작동하며, 어떤 장점이 있습니까?

A 콘텐츠 전달 네트워크 (CDN) 이는 다양한 지리적 지역에 전략적으로 배치된 프록시 서버들의 분산 네트워크입니다. 주요 목표는 다음과 같습니다. 사용자에게 콘텐츠를 최소한의 지연 시간으로 제공합니다. 가장 가까운 서버(엣지 노드라고 함)에서 서비스를 제공함으로써 가능합니다.

사용자가 웹 리소스(예: 이미지, 비디오 또는 정적 파일)를 요청하면 CDN은 해당 콘텐츠를 캐시하고 엣지 서버에서 직접 제공합니다. 콘텐츠가 캐시에 없으면 원본 서버에서 콘텐츠를 가져와 이후 요청을 위해 저장합니다.

CDN의 장점:

요인 장점
숨어 있음 사용자에게 더 가까운 위치에 콘텐츠를 제공하여 응답 시간을 단축합니다.
대역폭 원본 서버의 대역폭 사용량을 분산합니다.
신뢰성 분산 노드를 통해 내결함성을 제공합니다.
확장성 많은 트래픽을 효율적으로 처리합니다.

CDN은 글로벌 시스템에 필수적입니다. Netflix, YouTube또는 전자상거래 플랫폼과 같이 고성능과 가용성을 보장하는 플랫폼.


12) 속도 제한이란 무엇이며, API 설계에서 왜 필수적인가요?

속도 제한 클라이언트가 지정된 기간 내에 API에 요청할 수 있는 횟수를 제한합니다. 이는 매우 중요합니다. 학대 방지, 공정한 사용 유지글렌데일 백엔드 서비스 보호 과부하 또는 서비스 거부(DoS) 공격으로부터 보호합니다.

일반적인 속도 제한 알고리즘은 다음과 같습니다.

  • 고정 창 카운터 — 간단하지만 창 경계 부분에서 급증 현상이 발생할 수 있습니다.
  • 슬라이딩 로그 / 슬라이딩 윈도우 — 요청 처리가 더욱 원활해집니다.
  • 토큰 버킷 / 리키 버킷 — 제한된 범위 내에서 요청 급증을 허용하고 안정적인 요청 흐름을 유지합니다.

예를 들어, GitHub는 사용자당 시간당 API 호출 횟수를 5000회로 제한합니다. 이러한 속도 제한을 구현하면 시스템 안정성이 확보되고 전반적인 서비스 품질이 향상됩니다.


13) 분산 시스템 전반에 걸쳐 데이터 일관성을 어떻게 보장합니까?

분산 시스템에서 일관성을 유지하는 것은 복제 및 네트워크 지연 시간으로 인해 어려운 과제입니다. 일관성과 가용성 간의 균형점에 따라 여러 가지 전략이 존재합니다.

일관성 유형 기술설명 적용 사례
강력한 일관성 모든 고객은 동일한 데이터를 즉시 볼 수 있습니다. 금융 시스템
최종 일관성 업데이트는 비동기적으로 전파되며, 일시적인 차이는 허용됩니다. 소셜 미디어 피드
인과적 일관성 인과 관계의 순서를 유지합니다. 협업 앱

다음과 같은 기술 미리 쓰기 로그, 벡터 클록, 합의 알고리즘(Raft, Paxos)글렌데일 2단계 커밋(2PC) 동기화를 유지하는 데 도움이 됩니다. 면접관은 당신이 이를 설명할 수 있기를 기대합니다. when 성능 및 확장성 향상을 위해 일관성을 완화합니다.


14) 수평 확대/축소와 수직 확대/축소의 차이점을 설명하시오.

스케일링이란 시스템이 더 많은 부하를 처리할 수 있도록 용량을 늘리는 것을 의미합니다. 스케일링에는 크게 두 가지 유형이 있습니다.

스케일링 유형 방법 장점 단점
수직적 확장(규모 확대) 단일 머신에 더 많은 리소스(CPU, RAM)를 추가합니다. 구현이 더 간단합니다 하드웨어 한계, 단일 장애점
수평적 확장(스케일 아웃) 부하 분산을 위해 기계를 추가하세요. 높은 가용성, 비용 효율성 관리 및 조정이 복잡합니다.

예를 들어 웹 서버의 CPU를 2개에서 8개로 늘리는 것은 수직 확장이고, 로드 밸런서 뒤에 여러 서버를 추가하는 것은 수평 확장입니다. 쿠버네티스와 같은 최신 분산 시스템은 이러한 방식을 선호합니다. 수평 확장 탄력성을 위해서요.


15) 메시지 큐란 무엇이며, 분산 아키텍처에서 왜 사용되는가?

A 메시지 큐 메시지가 처리될 때까지 임시로 저장함으로써 생산자와 소비자를 분리합니다. 이를 통해 다음과 같은 이점이 있습니다. 비동기 통신분산 시스템의 복원력과 확장성을 향상시킵니다.

널리 사용되는 메시지 브로커는 다음과 같습니다. RabbitMQ, 카프카, Amazon SQS글렌데일 구글 퍼블리싱/구독.

이점:

  • 트래픽 급증 현상을 완화합니다.
  • 서비스 분리
  • 재시도 및 지속성 메커니즘을 활성화합니다.
  • 내결함성을 향상시킵니다.

예: 전자상거래 플랫폼에서 주문 서비스는 "주문 완료"라는 메시지를 게시할 수 있으며, 재고 및 결제 서비스는 이 메시지를 독립적으로 사용하여 직접적인 종속성을 피할 수 있습니다.


16) 확장 가능한 파일 저장 시스템을 어떻게 설계하시겠습니까? Google Drive or Dropbox?

클라우드 기반 파일 저장 시스템을 설계하려면 핵심 구성 요소별로 나누어야 합니다.

  • 프런트엔드 서비스: REST API를 통해 파일 업로드/다운로드를 처리합니다.
  • 메타데이터 서비스: 파일 소유권, 접근 권한 및 버전 기록을 저장합니다.
  • 보관 서비스: 분산 스토리지(예: S3, HDFS)에서 파일 청크를 관리합니다.
  • 청킹 : 파일은 효율적인 저장 및 전송을 위해 더 작은 덩어리(예: 4MB)로 분할됩니다.

과제에는 다음을 보장하는 것이 포함됩니다. 데이터 중복 제거, 일관성글렌데일 변경 사항 동기화 다양한 기기에서 사용 가능합니다. 블록 수준 동기화 및 콘텐츠 해싱을 구현하여 대역폭 효율성과 무결성을 보장합니다.


17) 확장 가능한 데이터베이스 스키마를 설계할 때 고려해야 할 주요 요소는 무엇입니까?

확장 가능한 스키마는 성능, 유연성 및 유지 관리 용이성의 균형을 유지합니다. 중요한 고려 사항은 다음과 같습니다.

  • 데이터 파티셔닝 (샤딩)은 성장을 처리하기 위한 것입니다.
  • 정규화와 비정규화: 데이터 무결성을 위해 정규화하고, 읽기 작업이 많은 환경에서의 성능을 위해 비정규화합니다.
  • 인덱싱 전략 빠른 검색을 위해.
  • 캐싱 및 복제 높은 트래픽을 처리하기 위해.

예: 소셜 미디어 애플리케이션에서는 사용자 데이터와 게시물을 분리하여 저장함으로써 결합도를 낮추고 쿼리 성능을 향상시킬 수 있습니다. 스키마 설계 시 이러한 점을 고려해야 합니다. 접근 패턴 쿼리 빈도.


18) 마이크로서비스 아키텍처를 사용하는 장점과 단점은 무엇입니까?

마이크로서비스는 최신 클라우드 애플리케이션의 핵심 기반이 되었지만, 몇 가지 단점도 있습니다.

장점 단점
독립적인 배포 및 확장 운영 복잡성 증가
고장 격리 및 복원력 분산 디버깅은 더 어렵습니다.
기술 도입이 더 쉬워집니다 강력한 DevOps 문화가 필요합니다.
코드 유지보수성 향상 네트워크 홉으로 인한 지연 시간 증가

마이크로서비스는 규모가 크고 지속적으로 변화하는 시스템에 이상적이지만, 강력한 모니터링 시스템, API 게이트웨이, 그리고 서비스 간 통신 전략이 필요합니다.


19) 대규모 시스템에서 데이터베이스 복제를 어떻게 처리하시겠습니까?

데이터베이스 복제 기본 데이터베이스의 데이터를 하나 이상의 복제본으로 복사하여 가용성과 읽기 성능을 향상시키는 작업입니다. 크게 두 가지 유형이 있습니다.

복제 유형 기술설명 적용 사례
Sync영리한 변경 사항은 복제본에 즉시 반영됩니다. 강력한 일관성
비동기 기본 서버는 복제본 업데이트 전에 쓰기 작업을 확인합니다. 더 나은 성능

복제는 향상됩니다 결함 허용, 가능하게 함 지리적 분포, 및 지원 읽기 스케일링 (복제본을 읽습니다). 하지만 이는 복제 지연 및 충돌 해결과 같은 문제를 야기합니다. 다음과 같은 도구들이 있습니다. MySQL 그룹 복제, MongoDB 레플리카 세트글렌데일 PostgreSQL 스트리밍 복제 표준적인 해결책입니다.


20) 이벤트 기반 아키텍처란 무엇이며, 어떤 상황에서 가장 유용하게 사용될 수 있습니까?

이벤트 기반 아키텍처(EDA)는 구성 요소들이 이벤트를 통해 서로 통신하는 설계 패러다임입니다. 이벤트 — 상태 변화 또는 동작을 알리는 메시지입니다. 서비스는 직접적인 요청 대신 비동기적으로 이벤트를 게시하고 구독합니다.

이 디자인은 다음과 같은 용도에 적합합니다. 느슨하게 결합된 시스템사물인터넷(IoT) 플랫폼, 전자상거래, 실시간 분석 시스템 등이 그 예입니다.

이점:

  • 높은 확장 성
  • 분리된 구성 요소
  • 실시간 대응성

예: 우버의 아키텍처에서는 탑승 예약이 완료되면 가격 책정, 운전자 매칭, 알림 시스템이 동시에 업데이트되지만, 각 시스템은 긴밀하게 연동되지 않습니다.


21) 시스템 설계에서 멱등성이란 무엇이며, 왜 중요한가?

멱등성 이는 동일한 작업을 여러 번 수행하는 것을 의미합니다. 한 번 시술했을 때와 동일한 효과이는 장애나 네트워크 지연으로 인해 요청이 재시도될 수 있는 분산 시스템에서 안정성을 보장합니다.

예 :

  • 바로 삭제 요청은 본질적으로 멱등성을 지닙니다(반복해도 상태가 변하지 않습니다).
  • POST (거래 생성과 같은) 요청은 특별히 설계되지 않는 한 멱등성을 갖지 않습니다.

멱등성을 구현하려면:

  • 고유 요청 ID 중복 제출을 추적하기 위해.
  • 유지하다 트랜잭션 로그 반복 작업을 무시합니다.

이 원칙은 매우 중요합니다. 지불 게이트웨이, 주문 처리글렌데일 이메일 시스템 중복된 작업은 심각한 불일치를 초래할 수 있습니다.


22) 최종적 일관성 개념을 예를 들어 설명하시오.

최종 일관성 분산 데이터베이스에서 업데이트가 모든 노드에 즉시 표시되지 않는 모델입니다. 시스템은 시간이 지남에 따라 일관된 상태로 수렴합니다..

예:

In Amazon의 DynamoDB한 지역에서 항목이 업데이트되면 다른 지역의 복제본에는 일시적으로 이전 데이터가 표시될 수 있습니다. 하지만 백그라운드 복제를 통해 결국 동기화가 완료됩니다.

이 모델은 시스템 우선순위 지정에 유용합니다. 유효성 위에 엄격한 일관성같은 :

  • 소셜 미디어 타임라인
  • 캐싱 시스템
  • DNS 레코드

핵심적인 절충점은 다음과 같습니다. 변질 허용 오차 응답 속도.


23) 이메일, SMS, 푸시 알림 등 여러 채널을 지원하는 알림 시스템을 어떻게 설계하시겠습니까?

확장 가능한 알림 시스템을 설계하려면 모듈성과 유연성이 필수적입니다.

Archi강의:

  1. 알림 API – 애플리케이션으로부터 알림 요청을 수신합니다.
  2. 큐/메시지 버스 – 이벤트를 저장하고 배포합니다(Kafka, SQS).
  3. 근로자 서비스 – 채널별 프로세서(이메일, SMS, 푸시 알림).
  4. 배송업체 - Twilio 또는 Firebase와 같은 외부 API와 통합합니다.
  5. 사용자 환경설정 DB – 참여/거부 설정 및 빈도 선호도를 저장합니다.

주요 고려 사항:

  • 실패한 전송을 백오프 전략으로 재시도합니다.
  • 일관성을 유지하려면 템플릿을 사용하세요.
  • 메시지 우선순위 지정(긴급 vs. 중요도가 낮은 메시지)을 지원합니다.

이 모듈식 설계는 새로운 알림 채널이 등장함에 따라 안정성과 확장성을 보장합니다.


24) 데이터베이스 인덱싱이란 무엇이며, 성능에 어떤 영향을 미칩니까?

A 데이터베이스 인덱스 데이터베이스가 스캔하는 레코드 수를 줄여 쿼리 속도를 향상시키는 데이터 구조(일반적으로 B-트리 또는 해시 테이블)입니다.

예를 들어, 사용자 테이블의 이메일 열에 인덱싱을 생성하면 데이터베이스 엔진이 테이블 전체를 스캔하지 않고도 이메일로 사용자를 신속하게 찾을 수 있습니다.

아래 인덱스 포함 색인 제외
쿼리 속도 빠른 검색 느린 순차 스캔
쓰기 속도 속도가 느립니다 (인덱스 업데이트 필요) 더 빠른 쓰기
스토리지 디스크 공간 추가 Less 스토리지

인덱스는 읽기 성능을 향상시키지만, 속도를 저하시킬 수도 있으므로 신중하게 사용해야 합니다. 쓰기 작업이 많은 유지보수 부담으로 인해 시스템이 손상됩니다.


25) 대규모 분산 시스템에서 내결함성을 어떻게 보장하시겠습니까?

결함 허용 이는 시스템 구성 요소에 오류가 발생하더라도 시스템이 계속 작동함을 의미합니다. 이는 이중화, 모니터링 및 자동 복구를 통해 달성됩니다.

전략에는 다음이 포함됩니다.

  • 복제: 지역 간 중복 데이터 또는 서비스.
  • 장애 조치 메커니즘: 요청을 자동으로 정상적인 노드로 재라우팅합니다.
  • 상태 점검 및 로드 밸런싱: 오류가 발생한 인스턴스를 감지하고 격리합니다.
  • 회로 차단기: 종속 서비스 간의 연쇄 장애를 방지합니다.

예: Netflix'카오스 몽키'는 복원력을 테스트하기 위해 프로덕션 환경의 인스턴스를 의도적으로 종료하는데, 이는 내결함성 원칙의 고급 응용 사례입니다.


26) 분산 시스템에서 동기 통신과 비동기 통신의 차이점은 무엇입니까?

특색 Synchronous 커뮤니케이션 비동기 통신
의존 발신자는 응답을 기다립니다. 발신자는 독립적으로 진행합니다.
HTTP REST API 호출 메시지 큐, 카프카
숨어 있음 더 높은 (차단) 인지되는 지연 시간 감소
신뢰성 실패 시 더 낮아짐 더 높은 수준 (메시지가 지속될 수 있음)

Sync비동기 시스템은 더 단순하지만 서로 긴밀하게 연결되어 있는 반면, 비동기 시스템은 확장성과 오류 격리성을 향상시킵니다.

예를 들어, 전자상거래 시스템에서 주문 처리는 비동기식으로 이루어질 수 있지만, 결제 확인은 사용자에게 즉각적인 피드백을 제공하기 위해 동기식으로 유지되어야 합니다.


27) 분산 API 시스템을 위한 속도 제한기를 어떻게 설계하시겠습니까?

분산형 속도 제한기는 여러 서버에서 공정한 API 사용을 보장합니다.

구혼:

  1. 토큰 버킷 알고리즘 - 각 사용자는 시간이 지남에 따라 충전되는 토큰을 받습니다.
  2. 누출 버킷 알고리즘 – 요청은 일정한 속도로 처리됩니다.
  3. 중앙 집중식 카운터(예: Redis) - 사용자별 요청 횟수를 관리합니다.

구현 예:

  • Redis 아토믹 카운터를 TTL과 함께 사용하세요.
  • 사용자 키별로 요청 타임스탬프를 추적합니다.
  • 임계값을 초과하는 요청은 거부합니다.

속도 제한은 방지합니다 남용, DoS 공격글렌데일 예상치 못한 비용 급증이를 통해 모든 고객에게 일관된 서비스 품질을 보장합니다.


28) 분산 합의 알고리즘이란 무엇이며, 왜 필요한가?

분산 합의 알고리즘은 시스템 내의 여러 노드가 합의에 도달하도록 보장합니다. 단일 데이터 값에 동의합니다오류가 발생하더라도 마찬가지입니다.

일반적인 알고리즘:

  • Paxos
  • 뗏목
  • 재브 (ZooKeeper에서 사용됨)

유지 관리에 필수적입니다. 지도자 선거, 상태 복제글렌데일 데이터 일관성 분산 데이터베이스 및 Kubernetes와 같은 클러스터 관리 프로그램에서 사용됩니다.

예: Raft는 모든 노드가 로그 항목을 상태 머신에 적용하기 전에 해당 항목에 대해 일치하는지 확인하여 노드가 충돌하더라도 안정성을 보장합니다.


29) 마이크로서비스를 위한 로깅 및 모니터링 시스템을 어떻게 설계하시겠습니까?

분산 시스템을 모니터링하려면 문제를 감지하고 해결하기 위해 중앙 집중식 관찰 기능이 필요합니다.

핵심 구성 요소 :

  • 벌채 반출: 다음과 같은 도구를 사용하여 모든 서비스의 로그를 수집합니다. Fluentd or Logstash.
  • 측정 항목 : Prometheus 또는 Datadog을 사용하여 성능 지표(CPU, 메모리, 요청 지연 시간)를 추적하십시오.
  • 트레이싱: 서비스 간 요청 경로를 추적하기 위해 분산 추적(Jaeger, Zipkin)을 구현합니다.
  • 경고: PagerDuty에서 알림을 트리거하는 임계값을 설정하거나 Slack.

최고의 연습:

상관관계 ID 여러 마이크로서비스에 걸쳐 단일 사용자 요청을 추적하는 것은 운영 환경 문제를 디버깅하는 데 매우 중요합니다.


30) 고가용성(HA) 시스템 구축을 위한 주요 설계 고려 사항은 무엇입니까?

A 고가용성(HA) 이 시스템은 가동 중지 시간을 최소화하고 지속적인 서비스를 보장합니다.

주요 디자인 요소:

  1. 여분: 구성 요소별로 여러 서버를 사용하십시오.
  2. 단일 장애점(SPOF)을 제거하십시오.
  3. 자동 장애 조치: 정전 시 트래픽을 우회합니다.
  4. 데이터 복제: 영역 간 데이터 내구성을 보장합니다.
  5. 건강 모니터링 : 비정상적인 노드를 자동으로 감지하고 교체합니다.
  6. 재해 복구(DR): 백업 및 지리적 복제를 구현하십시오.

예: AWS는 가용 영역(AZ)에 서비스를 배포하고 Elastic Load Balancer를 사용하여 자동 장애 조치를 수행함으로써 99.99%의 가동 시간 SLA를 보장합니다.


🔍 실제 시나리오 및 전략적 대응 방안을 포함한 시스템 설계 면접에서 가장 많이 나오는 질문들

1) 대규모 분산 시스템을 처음부터 설계할 때 어떤 접근 방식을 취하시나요?

후보자에게 기대하는 것: 면접관은 지원자의 체계적인 사고방식, 요구사항을 명확히 하는 능력, 그리고 복잡한 문제를 관리 가능한 구성 요소로 나누는 능력을 이해하고자 합니다.

예시 답변: "먼저 확장성, 가용성, 지연 시간과 같은 기능적 및 비기능적 요구 사항을 명확히 합니다. 그런 다음 고수준 아키텍처를 개략적으로 설명하고, 핵심 구성 요소를 식별하고, 데이터 흐름을 정의하고, 적절한 기술을 선택합니다. 이후 병목 현상, 장애 시나리오 및 절충점을 고려한 후 설계를 구체화합니다."


2) 가로 확대/축소와 세로 확대/축소의 차이점과 각각을 언제 사용해야 하는지 설명해 주시겠습니까?

후보자에게 기대하는 것: 면접관은 지원자의 확장성에 대한 기초 지식과 실제 시스템에 올바른 전략을 적용하는 능력을 평가하고 있습니다.

예시 답변: "수직 확장은 단일 머신에 리소스를 추가하는 방식이고, 수평 확장은 부하 처리를 위해 머신 수를 늘리는 방식입니다. 수직 확장은 간단하지만 한계가 있는 반면, 수평 확장은 더 복잡하지만 내결함성과 장기적인 확장성이 뛰어납니다."


3) 시스템 설계에서 고가용성을 어떻게 보장합니까?

후보자에게 기대하는 것: 면접관은 지원자의 이중화, 장애 조치 메커니즘 및 시스템 복원력에 대한 이해도를 평가하고자 합니다.

예시 답변: "이전 직무에서는 로드 밸런싱을 사용하고, 여러 가용 영역에 서비스를 배포하고, 상태 점검을 구현하고, 가능한 경우 상태 비저장 서비스를 설계하여 높은 가용성을 보장했습니다. 이러한 전략을 통해 단일 장애 지점을 줄였습니다."


4) 일관성과 가용성 사이에서 절충해야 했던 경험을 설명해 주세요.

후보자에게 기대하는 것: 면접관은 지원자가 CAP 정리를 얼마나 잘 이해하고 있는지, 그리고 제약 조건 하에서 의사결정을 내리는 능력을 평가하고 있습니다.

예시 답변: "이전 직장에서는 지연 시간이 매우 중요한 시스템을 다뤘습니다. 네트워크 분할 중에도 가용성을 유지하기 위해 강력한 일관성 대신 최종 일관성을 선택했는데, 이는 비즈니스 사용 사례에 적합했습니다."


5) 주어진 시스템에 사용할 데이터베이스를 어떻게 결정하시나요?

후보자에게 기대하는 것: 면접관은 지원자가 데이터 저장 방식을 시스템 요구 사항에 어떻게 맞춰 선택하는지 알고 싶어합니다.

예시 답변: "저는 데이터 접근 패턴, 일관성 요구 사항, 확장성 필요성, 쿼리 복잡성을 평가합니다. 관계형 데이터베이스는 구조화된 데이터와 트랜잭션에 적합하고, NoSQL 데이터베이스는 높은 처리량과 유연한 스키마에 더 적합합니다."


6) 갑작스러운 트래픽 급증을 처리할 수 있는 시스템을 어떻게 설계하시겠습니까?

후보자에게 기대하는 것: 면접관은 확장성과 예측 불가능한 부하를 고려한 설계 능력을 평가하고 있습니다.

예시 답변: "저는 자동 스케일링 그룹, 로드 밸런서, 그리고 인메모리 스토어와 같은 캐싱 계층을 사용할 것입니다. 이전 직장에서 이러한 기술들을 통해 시스템은 성능 저하 없이 트래픽 급증을 처리할 수 있었습니다."


7) 시스템 설계에서 캐싱은 어떤 역할을 하며, 어디에 구현해야 할까요?

후보자에게 기대하는 것: 면접관은 지원자가 어떻게 성능을 최적화하고 핵심 서비스의 부하를 줄이는지 이해하고자 합니다.

예시 답변: "캐싱은 응답 시간을 개선하고 데이터베이스 부하를 줄입니다. 사용 사례에 따라 클라이언트 측, CDN, 애플리케이션 수준, 데이터베이스 쿼리 캐싱 등 여러 계층에서 구현할 수 있습니다."


8) 데이터 파티셔닝과 샤딩은 어떻게 처리하시나요?

후보자에게 기대하는 것: 면접관은 데이터의 수평적 확장을 고려한 시스템 설계 능력을 평가하고 있습니다.

예시 답변: "저는 데이터를 균등하게 분산하고 샤드 간 쿼리를 최소화하는 샤딩 키를 선택합니다. 또한 시스템 규모가 커짐에 따라 핫스팟이 발생하지 않도록 리샤딩을 계획하고 데이터 분포를 모니터링합니다."


9) 시스템 모니터링이 설계 결정에 영향을 미친 상황을 설명하십시오.

후보자에게 기대하는 것: 면접관은 당신이 관찰 가능성을 활용하여 시스템의 안정성과 성능을 어떻게 향상시키는지 알고 싶어합니다.

예시 답변: "지연 시간 및 오류율과 같은 지표를 모니터링한 결과 API 서비스에 병목 현상이 있음을 발견했습니다. 이러한 분석을 바탕으로 서비스를 비동기식으로 재설계하여 처리량을 크게 향상시켰습니다."


10) 복잡한 시스템 설계를 비기술적인 이해관계자에게 어떻게 전달하시나요?

후보자에게 기대하는 것: 면접관은 지원자의 의사소통 능력과 기술적 결정을 비즈니스 목표에 맞춰 조정하는 능력을 평가합니다.

예시 답변: "저는 핵심 개념에 집중하고, 다이어그램을 활용하며, 기술적 구성 요소를 비즈니스 성과와 연관시킵니다. 이러한 접근 방식은 이해관계자들이 기술적인 세부 사항에 얽매이지 않고 설계의 가치와 영향력을 이해하는 데 도움이 됩니다."

이 게시물을 요약하면 다음과 같습니다.