2025/09/04 6

[Interview Question] Docker를 써본 경험이 있나요? 컨테이너 vs VM 차이는 무엇인가요?

주로 백엔드 서버(Spring Boot), 데이터베이스(PostgreSQL, MongoDB), 캐시 서버(Redis) 같은 환경을 Docker 컨테이너로 띄워 개발과 테스트를 진행했습니다. 로컬 환경에서 팀원들마다 설정 차이가 생기는 문제를 줄이고, 동일한 환경을 빠르게 구성할 수 있어 협업에 큰 도움이 되었습니다. VM은 하이퍼바이저(VMware, VirtureBox) 위에 각각의 운영체제를 올려서 실행하기 때문에 하나하나가 독립적인 서버처럼 동작합니다. 그래서 보안과 안정성 측면에서는 강점이 있지만, 운영체제를 포함해야 하므로 무겁고 부팅 속도가 느린 단점이 있습니다. 컨테이너는 우리가 실행하려는 애플리케이션 파일, 런타임 환경, 환경변수 파일, 라이브러리 등을 하나의 이미지로 묶습니다.컨테이너는 운..

Interview Question 2025.09.04

[Interview Question] 서버 로그를 확인하고 장애를 추적하는 방법을 설명해보세요.

일단 서버 장애가 발생하면 로그를 확인합니다.로그는 애플리케이션 로그, 웹서버 로그, DB 로그, 시스템 로그 순으로 확인하면 됩ㄴ다.애플리케이션 로그는 보통 코드로직에서 잘못된 서버에러가 발생합니다.웹서버 로그는 HTTP 요청과 응답에 대한 에러가 발생하는데, 200번대 같은 경우는 정상, 400번대의 경우 인증/인가 or 리소스 없음 오류, 500에러는 서버오류, 게이트웨이, 타임아웃 오류 등을 나타냅니다.DB 로그에서는 보통 쿼리 실행시 slow query오류나 connection 문제가 발생합니다.시스템 로그에서는 CPU 프로세스 과다사용, 네트워크 지연 등 OS 계층에서 발생할 수 있는 문제들이 있습니다. 이렇게 로그를 확인한 뒤 원인들을 찾고 해결한 다음 다시 실행합니다.

Interview Question 2025.09.04

[Interview Question] 로드밸런싱이 필요한 이유는 무엇인가요?

일단 로드밸런싱을 하게되면 트래픽을 분산할 수 있습니다. 하나의 서버에 갑자기 요청이 몰리게 되면 서버에 부하가 걸리게 되어 다운되거나 병목현상이 발생할 수 있습니다. 그 때, 로드밸런서가 요청을 여러 서버로 분산시켜 부하를 나누어 처리할 수 있습니다. 또한 늘어난 트래픽을 감당하기 위한 서버 수평확장을 하게되면 알아서 로드밸런서가 분산시켜줍니다. 또한, 특정 한 서버가 장애가 생기더라도 자동으로 정상 운영중인 서버로 요청을 보내줍니다. 그러면서 무중단 운영이 가능합니다. 마지막으로 로드밸런서가 외부 요청을 받아 내부 서버로 전달하기 때문에 서버의 직접적인 IP가 노출되지 않으며 SSL 인증서 관리도 로드 밸런서에서 한 번만 하면 되기 때문에 보안 관리도 편리합니다.

Interview Question 2025.09.04

[Interview Question] CORS란 무엇이고 왜 발생하나요?

CORS 정책은 브라우저에서 다른 origin의 리소스에 접근할 권한을 허용하는 정책입니다. 여기서 origin이란 프로토콜 + 도메인 + 포트를 말합니다. CORS가 발생하는 이유는사용자가 어떤 브라우저에 접속했을 때, 그 사이트의 js코드가 api를 호출해 각종 개인정보 유출이나 악성코드를 실행시킬 수 있기 때문에, 기본적으로는 다른 출처를 허용하지 않습니다. 개발 환경에서 보통 현실적으로 백엔드랑 프론트엔드가 origin이 다르므로 CORS오류가 발생합니다. 브라우저는 요청을 보낼 때, 서버가 응답 헤더에 Access-Control-Allow-Origin 등을 포함해야만 응답을 JS 코드에서 접근할 수 있게 허용합니다.

Interview Question 2025.09.04

[Interview Question] 3-way handshake와 4-way handshake 과정은 무엇인가요?

TCP 연결 같은 경우에는 데이터를 주고받을 때, 서로 준비가 되었는지 확인하는 절차가 필요합니다. 그 방법이 3-way handshake입니다. 처음에 클라이언트가 서버에 syn 패킷을 보내면서버가 클라이언트의 syn 패킷을 수신하고 요청을 수락하며 자신의 isn이 담긴 syn 패킷을 재전송합니다. 또한, 클라이언트의 syn에 대한 응답인 ack도 전송합니다.클라이언트가 서버의 syn패팃을 수신하면 그에 맞는 응답인 ack를 서버에 보냅니다. 이 단계가 끝나면 서로 연결이 완료됩니다. 연결을 종료할 때, 서로 양쪽 모두 통신이 끝났음을 알려야하므로 4-way-handshake를 진행하게 됩니다. 처음에 클라이언트가 서버에게 더이상 보낼 데이터가 없음을 알리고 fin을 전송합니다.서버가 fin을 받았다는..

Interview Question 2025.09.04