😀 Jerry/면접 질문 31

[1분 면접] 로드 밸런싱이란 ?

📌 면접 대답로드 밸렁싱이란 리소스 풀에 들어오는 네트워크 트래픽(요청)을 균등하게 분산하는 것을 의미한다. 이를 수행하는 로드 밸런서는 애플리케이션 서버 앞단에 위치하며 클라이언트 요청을 지시하고 제어한다.이를 통해 가용성, 확장성, 보안 및 성능을 확보 할 수 있다.  로드 밸런싱 알고리즘라운드 로빈모든 요청이 순서대로 처리 서버 3대(A,B,C)가 있다면 요청은 ABCABC 순서대로 전달모든 서버의 처리 능력 동등가중치 라운드 로빈라운드 로빈 방식에 가중치라는 개념 추가서버는 처리 능력과 가용 자원에 따라서 가중치 할당최소 연결연결 수를 모니터링해야 사용 가능 가장 적은 활성 연결 서버에 요청 전달가중치 최소 연결가중치 개념을 더한 최소 연결최소 응답 시간응답 시간을 모니터링하고 있는 경우에사용 ..

[1분 면접] 다중 서버 환경에서 세션 기반 인증 방식 사용의 문제점

📌 면접 답변 다중 서버 환경에서 세션 기반의 인증 방식을 사용하는 경우 세션 불일치 문제가 발생할 수 있다.예를 들어, 로드 밸런서를 통해 트래픽이 서버 A와 서버 B로 분산되는 환경을 가정해 보자. 1. 사용자가 로그인하면, 세션 정보는 최초로 요청을 받은 서버 A에 저장된다.2. 이후, 사용자가 추가 요청을 보낼 때 로드 밸런서가 서버 B로 요청을 전달할 경우, B 서버에는 해당 사용자의 세션 정보가 존재하지 않기 때문에 인증이 실패한다.  이는 서버 간 세션 공유가 이뤄지지 않았기 때문에 발생한다.    그렇다면 세션 불일치 문제는 어떻게 해결 할 수 있을까 ?1. 스티키 세션 방식사용자의 요청이 항상 사용자 세션 정보가 저장된 서버로 가도록 고정쿠키나 IP를 통해서 어느 서버로 고정 시킬지 결..

[1분 면접] SOLID 원칙이란 ?

📌 면접 답변 SOLID 원칙은 객체지향 설계의 핵심인 의존성 관리를 위한 원칙이다.객체지향 프로그래밍을 하면서 지켜야 할 5대 원칙으로, 변경에 용이하고, 유지보수와 확장에 도움이 된다.   SRP (SIngle Responsibility Priciple, 단일 책임 원칙)하나의 클래스가 여러 가지 기능을 담당하면 안 되고, 하나의 역할(책임)만 수행해야 한다.SRP를 잘 지키면 변경이 필요할 때 수정할 대상이 명확해진다. SRP 위반 예시class Report { public String generate() { return "Report Content"; } public void print() { System.out.println("Printing Repor..

[1분 면접] DB Replication이란 ?

📌 면접 답변 DB ReplicationDB의 고가용성과 데이터 안정성을 보장하기 위해 활용되는 기술데이터의 지속적인 가용성과 신뢰성을 위해 원본(Source)서버와 복제(Replica)서버 간의 데이터 동기화 Source와 Replica 서버의 데이터 일관성 유지 과정은 주로 Binary log를 기반으로 이뤄진다.   Binary log 서버에서 실행된 모든 데이터 변경 쿼리 기록하는 역할MySQL에서 변경된 데이터를 기록하는 로그 파일 Binary log 저장 방식으로는 Row, Statemet, Mixed의 방식이 있다. Row각 행별로 변경된 내용 정확히 기록 (데이터 일관성 높게 유지)모든 행의 변경 사항을 저장하여 Binary log 파일의 크기 급격히 증가  Statement데이터 변경을..

[1분 면접] record를 DTO로 사용하는 이유

📌 면접 답변record 불변성 (Immutable)을 기본으로 한다.기본 클래스와 달리 모든 필드가 final 키워드로 선언필드 선언으로 자동으로 생성자, getter, equals(), hashCode(), toString() 등의 메서드 자동으로 생성객체 생성 후 변경 불가능단순히 데이터 캡슐화 목적으로 사용 기존 코드// 기존 클래스 기반 DTOpublic class MemberDto { private final String name; private final String email; private final int age; public MemberDto(String name, String email, int age) { this.name = name; this.email = email; ..

[1분 면접] HTTPS란 무엇인가 ?

📌 면접 답변HTTP는 클라이언트와 서버 간 통신을 위한 통신 규약하지만 HTTP는 암호화되지 않는 평문 데이터를 전송하여 제3자가 정보 조회 위험 이러한 문제를 해결하기 위해 HTTPS 등장HTTPS는 데이터 암호화를 추가하여 암호화된 데이터를 전송   HTTPS 동작 원리 (TLS 핸드쉐이크)1. Client Hello (클라이언트의 최초 요청) 클라이언트는 서버에게 최초 요청할 때, 암호화 알고리즘, 프로토콜 버전 등을 무작위 값으로 전달 2. Server Hello (서버 응답)서버는 클라이언트에게 암호화 알고리즘, 인증서, 무작위 값 전달 3. 클라이언트 인증서 검증 클라이언트는 서버의 인증서를 CA 공개키로 복호화하여 검증 4. Pre-Master Secret 생성클라이언트는 Pre-Mast..

[1분 면접] WAS와 웹 서버의 차이점

📌 면접 답변   Web Server (WS, 웹 서버)정적 컨텐츠 (HTML, CSS, JS, 이미지 등)을 제공동적 컨텐츠 요청 시 WAS로 전달대표적인 웹 서버로 Apache, Nginx 등이 있음  Web Apllication Server서블릿 컨테이너 기능 제공 (Java 기준)동적으로 컨텐츠 생성HTTP 요청을 받아 애플리케이션 로직 실행JSP, Servlet, Spring, Django, Node.js 같은 프레임워크 실행하는 환경 포함대표적인 WAS로는 Tomcat이 있음 Spring Boot는 내장 Tomcat이 있음WAS는 실행 활경으로, WAS 안에 프레임워크 포함   WAS가 너무 많은 역할을 담당하면 과부화 문제가 발생한다.때문에 WS와 WAS를 분리하고, WAS는 중요한 애플리..

[1분 면접] SSR과 CSR 차이점

📌 면접 답변SSR(Sever Side Rendering)서버는 CSS까지 모두 적용하여 렌더링 준비를 마치고 HTML과 JS 코드 응답모든 데이터가 이미 HTML 담긴 채로 브라우저에 전달 때문에 SEO에 유리사용자는 JS 코드 다운 전에 이미 렌더링 된 HTML 볼 수 있어 초기 구동 속도 빠름 코드 예시/ssr-example ├── server.js ├── views ├── index.ejs// server.jsconst express = require("express");const app = express();app.set("view engine", "ejs"); // EJS 템플릿 엔진 설정app.get("/", (req, res) => { res.render("index",..

[1분 면접] (Connection, Socket, Read) Timeout 차이점

📌 면접 답변 Connection Timeout TCP 3-way-handshake가 일정 시간 내에 완료되지 않을 때 발생서버의 장애나 응답 지연으로인해 연결을 맺지 못하는 경우 Connection Timeout은 대부분 방화벽이 발생 원인  Socket TimeoutConnection Timeout 이후에 발생할 수 있는 Timeout서버가 데이터를 패킷 단위로 클라이언트에게 전달하는데, 일정 시간 내에 다음 패킷을 보내지 않는 경우 클라이언트가 Socket Timeout을 발생시키고 연결 종료Socket Timeout이 Read Timeout 보다 더 넓은 개념  Read Timeout 클라이언트와 서버가 연결은 되었지만 서버의 응답이 느린 경우 (서버 부하)클라이언트에서 설정한 시간까지 서버에서..

[1분 면접] 얕은 복사와 깊은 복사의 차이

📌 면접 답변얕은 복사객체의 주소를 복사하는 방식원본과 복사본이 같은 메모리 주소를 공유 (내부 객체 공유) 한쪽 값을 변경하면 다른 쪽도 영향을 받음 깊은 복사객체뿐만 아니라 내부에 있는 참조된 객체까지 모두 새로운 메모리 공간 할당 내부 객체도 독립적복사본을 변경해도 원본 객체에는 영향을 주지 않음 📌 내 답변얕은 복사 같은 경우, 주소까지 가져오는게 아니라 해당 주소가 가르키는 값만 가져온다. 하지만 깊은 복사 같은 경우, 주소와 값 모두 가져오는데,이로 인해 복사해온 값이 변경되면 깊은 복사한 값도 해당 값의 주소를 가르키기 때문에 같이 값이 변하게 된다.  얕은 복사와 깊은 복사에 대해 반대로 알고 있었다.그리고 복사는 주소와 값만을 복사하는 줄 알았다... 얕은 복사하면 대충 복사한 느낌이..