1. 멀티모듈이란 무엇이고, 하나의 프로젝트를 여러 모듈로 구성했을 때 얻을 수 있는 장점은 무엇인가요
  2. Redis와 같은 캐시 시스템을 도입하는 이유는 무엇인가요? 캐시를 사용했을 때 얻을 수 있는 장점과 발생할 수 있는 문제점에 대해 설명해주세요.
  3. Scale-up과 Scale-out의 차이점은 무엇인가요? 각각의 장단점에 대해 설명해주세요.
  4. 특정 사용자가 짧은 시간 동안 API를 과도하게 호출하여 서버에 부하를 주고 있습니다. 이를 제한하기 위해 어떤 방법을 사용할 수 있을까요?
  5. 이미지나 동영상과 같은 정적 콘텐츠 요청이 증가하면서 서버의 트래픽과 응답 시간이 증가하고 있습니다. 이를 개선하기 위해 어떤 방법을 사용할 수 있을까요?
  6. 동기 통신과 비동기 통신의 차이점은 무엇인가요? 각각 어떤 상황에서 사용하는 것이 적절한가요?
  7. 데이터베이스 Replication이란 무엇인가요? Replication을 사용하는 이유와 장단점에 대해 설명해주세요.
  8. 로드 밸런서(Load Balancer)란 무엇인가요? 대표적인 로드 밸런싱 방식에 대해 설명해주세요.
  9. Web Server와 WAS에 대해 설명해주세요.
  10. 본인이 진행한 프로젝트의 전체 아키텍처에 대해 설명해주세요.
  11. 도커를 사용해서 배포를 진행하셨는데 도커를 사용하신 이유는 무엇인가요?

2. Redis와 같은 캐시 시스템을 도입하는 이유는 무엇인가요? 캐시의 장점과 문제점은 무엇인가요?

자주 조회되지만 자주 바뀌지 않는 데이터를 빠르게 제공하고, DB나 외부 API의 반복 작업을 줄이기 위해 캐시를 사용합니다. Redis를 활용하면 여러 서버가 같은 캐시를 공유할 수 있어 조회 지연과 원본 시스템의 부하를 줄일 수 있습니다.

흔한 방식인 Cache-Aside에서는 캐시를 먼저 조회하고, 값이 없으면 원본에서 읽어 캐시에 저장합니다. 대신 원본 데이터가 바뀐 뒤 캐시가 갱신되기 전까지 오래된 값이 보일 수 있으므로 TTL과 쓰기 시 무효화 정책을 정해야 합니다. 인기 데이터의 TTL이 동시에 만료되면 요청이 원본에 몰릴 수 있고, Redis 장애나 메모리 부족에도 대비해야 합니다. 따라서 캐시가 없어도 원본 조회로 기능을 유지할지, 어떤 데이터에 얼마 동안의 불일치를 허용할지를 먼저 정하겠습니다.

3. Scale-up과 Scale-out의 차이점과 장단점은 무엇인가요?

Scale-up은 서버 한 대의 CPU·메모리 같은 자원을 늘리는 것이고, Scale-out은 서버 대수를 늘려 요청을 분산하는 것입니다. Scale-up은 애플리케이션 변경이 적고 운영이 단순하지만, 장비의 성능 한계가 있고 한 대의 장애에 취약합니다. Scale-out은 처리량과 가용성을 높일 수 있고 필요한 만큼 단계적으로 증설할 수 있지만, 로드 밸런싱과 배포·모니터링이 복잡해집니다. 특히 여러 서버가 요청을 처리하므로 세션을 서버 메모리에만 두지 않는 등 상태 공유 문제를 해결해야 합니다. 병목이 DB에 있다면 애플리케이션 서버만 늘려서는 효과가 제한적이므로, 먼저 병목 지표를 확인하고 증설 대상을 결정하겠습니다.

4. 특정 사용자가 API를 과도하게 호출할 때 어떻게 제한하나요?

답변 예시: 사용자별로 일정 시간 동안 허용할 요청 수를 정하는 Rate Limiting을 적용하겠습니다. 인증된 사용자는 사용자 ID, 비인증 요청은 IP나 API 키 등을 기준으로 제한할 수 있지만, IP만 사용하면 NAT 뒤의 여러 사용자가 함께 제한될 수 있어 정책을 구분해야 합니다. 짧은 순간의 요청 폭증을 어느 정도 허용하면서 평균 호출량을 제한하려면 토큰 버킷 방식을 사용할 수 있습니다. 서버가 여러 대라면 각 서버의 메모리에서 따로 제한하지 않고 Redis 같은 공유 저장소에서 토큰 차감을 원자적으로 처리해야 우회가 어렵습니다. 한도를 넘으면 HTTP 429 Too Many Requests와 Retry-After로 재시도 시점을 알려 주고, 사용자·API별 한도와 차단 현황을 모니터링하겠습니다.

5. 정적 콘텐츠 요청 증가로 트래픽과 응답 시간이 늘면 어떻게 개선하나요?

답변 예시: 이미지와 동영상은 애플리케이션 서버에서 매번 전달하기보다 오브젝트 스토리지에 저장하고 CDN을 통해 제공하겠습니다. CDN의 엣지 서버가 사용자와 가까운 곳에서 콘텐츠를 반환하면 원본 서버의 트래픽과 전송 지연을 줄일 수 있습니다. 변경되지 않는 파일은 파일명에 버전이나 해시를 넣고 긴 Cache-Control 유효 기간을 설정해 브라우저와 CDN이 재사용하게 합니다. 이미지 크기·포맷을 최적화하고 동영상은 필요에 따라 적응형 스트리밍을 사용하면 전송량도 줄일 수 있습니다. 갱신되는 파일은 URL 버전 변경이나 CDN 무효화 전략이 필요하고, 비공개 콘텐츠라면 서명 URL 등으로 접근을 제어해야 합니다.

6. 동기 통신과 비동기 통신의 차이점과 적절한 사용 상황은 무엇인가요?

답변 예시: 동기 통신은 요청한 쪽이 상대의 처리 결과를 받아야 다음 흐름을 진행하는 방식이고, 비동기 통신은 요청을 전달한 뒤 결과를 기다리는 동안 다른 일을 진행할 수 있는 방식입니다. 예를 들어 로그인 성공 여부처럼 즉시 결과가 필요한 작업은 동기 API 호출이 자연스럽고, 주문 완료 후 이메일 발송처럼 본 처리와 분리할 수 있는 작업은 메세지 큐를 통한 비동기 처리에 적합합니다. 비동기는 호출자의 대기 시간을 줄이고 순간적인 작업량을 큐에 쌓아 완충할 수 있지만, 처리 완료가 늦어질 수 있고 실패 재시도·중복 처리·순서 보장이 어려워집니다. 그래서 작업 상태를 추적하고 소비자가 중복 메시지를 안전하게 처리하도록 설계해야 합니다. 동기·비동기는 완료 결과를 다루는 방식이며, 스레드가 대기하는지 나타내는 블로킹·논블로킹과는 구분합니다.

7. 데이터베이스 Replication이란 무엇이며, 왜 사용하나요? 장단점은 무엇인가요?

두 개 이상의 DBMS 이용하여 Master/Slave (수직적)구조를 활용하여 DB의 부하를 분산 시키는 기술 입니다.

읽기 요청을 Replica로 분산해 원본의 조회 부하를 줄이고, 원본 장애 시 Replica를 승격해 복구 시간을 단축할 수 있습니다. 다만 일반적인 비동기 복제에서는 원본에 커밋된 변경이 Replica에 아직 반영되지 않을 수 있어, 저장 직후 Replica를 조회하면 이전 값이 보일 수 있습니다. 즉시 최신 값이 필요한 조회는 원본으로 보내거나 복제 적용을 기다리는 정책이 필요합니다. 장애 조치 시에는 최신 Replica를 선택하고 이전 원본의 쓰기를 차단해야 하며, 복제 지연과 오류를 모니터링해야 합니다. 잘못된 삭제도 복제되므로 Replication은 별도 백업을 대체하지 않습니다.

8. 로드 밸런서란 무엇이며, 대표적인 분산 방식은 무엇인가요?

로드 밸런서는 여러 서버 앞에서 요청을 건강한 서버로 분산하는 장치 또는 소프트웨어입니다.

단일 서버의 과부하를 줄이고, 서버 추가와 장애 시 우회를 가능하게 합니다. 대표적으로 요청을 순서대로 보내는 라운드 로빈, 연결 수가 적은 서버를 고르는 최소 연결, 서버 성능 차이를 반영하는 가중치 방식이 있습니다. 요청별 처리 시간이 다르다면 단순 라운드 로빈보다 최소 연결 방식이 유리할 수 있지만, 연결 수가 실제 CPU 부하와 항상 같지는 않으므로 서비스 특성에 맞춰 선택해야 합니다. L4는 주로 IP·포트 같은 전송 계층 정보를, L7은 HTTP 경로·헤더 등을 보고 분산할 수 있습니다. 실제 운영에서는 분산 알고리즘과 함께 헬스 체크, 타임아웃, 세션 처리 정책이 중요합니다.

9. Web Server와 WAS에 대해 설명해주세요.

웹 서버는 HTTP 요청을 받아 정적 파일을 제공하거나 요청을 뒤쪽 애플리케이션으로 전달하는 역할을 합니다.
WAS는 애플리케이션 코드를 실행해 요청마다 달라지는 응답을 만들며, DB 조회와 비즈니스 로직 처리 등을 담당합니다.

예를 들어 Nginx가 TLS 종료와 정적 파일 제공, 리버스 프록시 역할을 하고, Spring Boot의 내장 Tomcat과 애플리케이션이 API 요청을 처리할 수 있습니다. 둘을 함께 사용하면 정적 콘텐츠 전송과 동적 요청 처리를 분리하고, 웹 서버에서 여러 애플리케이션 인스턴스로 요청을 분산할 수 있습니다. 다만 경계가 절대적인 것은 아닙니다. WAS도 정적 파일을 제공할 수 있고, 웹 서버도 프록시·캐싱 등 다양한 기능을 수행합니다.