반응형

매일 공부/Backend CS 17

[매일메일] HTTPS란 무엇인가?

[매일메일] HTTPS란 무엇인가? HTTPS,HTTP 우리가 URL 링크를 복사하면 따라 나오는 문자입니다. 이는 클라이언트와 서버 간 통신을 위한 통신 규약입니다. (규약 = 약속)HTTP와 HTTPS 의 차이점은 HTTP는 암호화되지 않은 평문 데이터를 전송하기 때문에 제3자가 정보를 조회할 수 있다는 위험이 있어서 HTTPS가 등장했습니다. 따라서 우리가 HTTP 주소로 링크를 이동하게되면 안전하지 않은 링크라고 경고가 뜨는걸 알 수 있습니다. HTTPS 적용하는 방법인증된 기관(Certificate Authorite, CA)에게 인증서를 받을 요청서버 도메인 (www.naver.com)서버의 공개키 (Public Key)CA는 다음을 수행해당 정보를 검토하고 인증서를 생성인증서에 전자서명을 추가..

[매일메일] 서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점 알아보기

개발 방식웹 애플리케이션 개발 방식에는 SSR(Server Side Rendering)과 CSR(Client Side Rendering)이라는 두 가지 대표적인 렌더링 방식이 존재합니다. 각각의 렌더링 방식은 데이터 처리 시점, 사용자 경험, SEO 최적화, 초기 로딩 속도 등에서 차이를 보이며, 개발 환경에 따라 적절히 선택되어야 합니다. 서버 사이드 렌더링 (SSR)서버 측에서 렌더링은 이름 그대로 서버에서 HTML을 렌더링한 후 브라우저에 전달하는 방식입니다. 페이지에 필요한 데이터를 즉시 가져옴HTML 구조에 데이터를 삽입CSS까지 적용된 완성된 HTML 문서를 브라우저에 응답브라우저는 전달받은 HTML을 바로 렌더링할 수 있으며, JS 파일은 이후 다운로드되어 작동합니다.장점 :SEO에 유리 :..

[매일메일] @Transactional은 private 메서드에서 동작할까? — Spring AOP의 진짜 동작 원리

private 메서드에서 트랜잭션은 동작할까?-> 아니요. 동작하지 않습니다 이유 1. Spring AOP는 프록시 기반이며, private 메서드는 프록시가 가로챌 수 없습니다.Spring AOP는 런타임에 프롤시 객체를 생성하여 부가기능(transactional, @Cashable, @Async)을 적용합니다.JDK 동적 프록시는 인터페이스 기반의 public 메서드에만 적용됩니다.CGLIB 프록시는 클래스 상속 기반으로 public, protected, package-private 까지만 적용됩니다.즉, private 메서드는 대상이 되지 않습니다. 이유 2 .Self-invocation 문제 (같은 클래스 내부 호출)클래스 내에서 자신의 메서드를 호출하면, 프록시를 거치지 않고 직접 호출됩니다.이..

[매일메일] Connection Timeout, Socket Timeout, Read Timeout의 차이점?

Connection TimeoutConnection Timeout 은 클라이언트가 서버에 연결을 시도할 때, 일정 시간 내에 연결이 이루어지지 않으면 발생하는 타임아웃입니다. TCP 소켓 통신에서 클라이언트와 서버가 연결될 때, 정확한 전송을 보장하기 위해 사전에 세션을 수립하는데, 이 과정을 3-way-handshake라고 합니다. Connection Timeout은 이 3-way-handshake가 일정 시간 내에 완료되지 않을 때 발생합니다. 즉, 서버의 장애나 응답 지연으로 인해 연결을 맺지 못하면 Connection Timeout이 발생합니다.정의 : 클라이언트가 서버와 연결을 시도할 때, 정해진 시간 안에 3-way-handshake가 완료되지 않았을 때 발생.원인 : 서버 다운, 방화벽 차단..

[매일메일] 리버스 프록시와 포워드 프록시

리버스 프록시 (Reverse Proxy) 란?서버에 가까운 프록시클라이언트는 실제 서버가 아닌, 리버스 프록시에게 요청하고 리버스 프록시가 알맞은 백엔드 서버에 요청을 전달리버스 프록시의 핵심 기능 중 하나는 로드 밸런싱다수의 백엔드 서버로 트래픽을 분산시켜 서버 과부하를 방지하고, 서비스의 고가용성을 유지할 수 있습니다.또한 외부에서 직접 백엔드 서버에 접근하지 못하게 하여 DDos 공격이나 해킹 시도로부터 서버를 보호할 수 있습니다.SSL 종료는 리버스 프록시의 중요한 기능SSL/TLS 암호화를 리버스 프록시에서 처리함으로써 백엔드 서버의 부담을 줄이고, 중앙에서 인증서를 관리할 수 있습니다.리버스 프록시는 캐싱 및 콘텐츠 최적화 기능을 통해 정적 콘텐츠를 캐싱하여 응답 속도를 향상하고 서버 부하를..

[매일메일] 넥스트키 락(Next-Key Lock)이란?

Next-Key Lock이란 무엇인가요? 넥스트키 락은 레코드 락과 갭락을 결합한 형태로, 특정 인덱스 레코드와 그 주변의 갭을 동시에 잠그는 락입니다. 이를 통해 레코드 자체의 변경과 함께 그 주변 공간의 변경도 동시에 제어할 수 있습니다.넥스트키 락은 특정 레코드와 그 주변 공간을 잠그기 때문에, 다른 트랜잭션이 새로운 레코드를 삽입하여 팬텀 리드를 발생시키는 것을 방지합니다. orders_id | orders_amount----------|---------------1 | 1002 | 2003 | 300// 트랜잭션 A 시작START TRANSACTION;// 트랜잭션 A amount = 200인 orders_id = 2 레코드에 대한 레코드 락과 1-2,..

[매일메일] 갭락(Gap Lock)이란?

Gap Lock이란 무엇인가요? 갭 락은 특정 인덱스 값 사이의 공간을 잠그는 락입니다. 기존 레코드 간의 간격을 보호하여 새로운 레코드의 삽입을 방지합니다. 갭 락은 범위 내에 특정 레코드가 존재하지 않을 때 적용됩니다. 트랜잭션이 특정 범위 내에서 데이터의 삽입을 막아 팬텀 읽기(Phantom Read) 현상을 방지합니다. 예를 들어, 인덱스 값 10과 20 사이의 갭을 잠그면 이 범위 내에 새로운 레코드 15를 추가할 수 없습니다.// id 1, 3, 5가 저장된 orders 테이블// 트랜잭션 A 시작START TRANSACTION;// 트랜잭션 A 1-3과 3-5 사이의 갭과 3 레코드 락 설정(넥스트키 락)SELECT * FROM orders WHERE orders_id BETWEEN 2 AN..

[매일메일] 팬텀 리드(Phantom Read) 란?

Phantom Read란 무엇인가요?Phantom Read는 트랜잭션이 동일한 조건의 쿼리를 반복 실행할 때, 나중에 실행된 쿼리에서 처음에는 존재하지 않았던 새로운 행이 나타나는 현상입니다. 이는 주로 읽기 일관성(Read Consistency) 을 유지하는 과정에서 발생할 수 있는 문제로, 데이터 삽입이나 삭제가 다른 트랜잭션에 의해 이루어질 때 발생합니다.  -- 트랜잭션 A 시작START TRANSACTION;-- 트랜잭션 A 첫 번째 조회SELECT * FROM orders WHERE amount > 150;-- 트랜잭션 B 시작START TRANSACTION;-- 트랜잭션 B 새로운 행 삽입INSERT INTO orders (customer_id, amount) VALUES (4, 250);-..

[매일메일] 데이터베이스 시스템 동시성 제어 (MVCC, Lock-Based Concurrency Control)

MVCC(Multi-Version Concurrency Control) 란? 대표적인 동시성 제어 방식으로 MVCC(Multi-Version Concurrency Control) 와 Lock-Based Concurrency Control이 있습니다. 🔒 1. MVCC(Multi-Version Concurrency Control)MVCC는 데이터의 여러 버전을 유지하여 트랜잭션이 동시에 데이터를 읽고 쓸 수 있도록 하는 방식입니다. 각 트랜잭션은 자신만의 일관된 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항에 영향을 받지 않습니다.데이터의 각 버전을 유지하여 읽기 작업이 쓰기 작업과 독립적으로 이루어질 수 있습니다. 트랜잭션은 시작 시점의 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 ..

[매일메일] HTTP 메서드에서 멱등성이란

멱등성이란멱등성이란 같은 연산을 여러 번 수행해도 결과가 변하지 않는 성질을 의미해.즉, 같은 요청을 한 번 보내든, 여러 번 보내든 결과가 동일해야 해! ✅ 멱등한 HTTP 메서드 vs 멱등하지 않은 메서드GET✅ 멱등함같은 데이터를 조회하므로 결과가 변하지 않음PUT✅ 멱등함같은 데이터를 여러 번 수정해도 결과가 동일DELETE✅ 보통 멱등함같은 데이터를 여러 번 삭제 요청해도 결과가 동일 (이미 삭제된 경우 404 응답)POST❌ 멱등하지 않음같은 데이터를 여러 번 생성하면 중복 삽입될 수 있음 ✅ 멱등성을 보장하는 방법고유한 요청 ID 사용예: requestId를 클라이언트가 생성해서 서버에서 중복 요청인지 확인POST 요청 시 requestId가 동일하면, 이미 처리된 요청이라면 무시데이터 업데..

반응형