[Kafka] 개념과 툴 정리
·
카테고리 없음
해당 자료는 데브원영 DVWY강사님의 자료를 기반으로 정리하였습니다. 이미지들은 제가 직접 테스트 후 변경할 예정입니다. 문제될 시 비공개 처리 후 수정하겠습니다!카프카 사용 이전에는 end to end로 많은 문제점이 발생했다. 링크드인에서는 이러한 문제를 해결하기 위해서 데이터 전송을 실시간 처리도 가능하면서 확장에 용이한 이런 시스템을 개발하기 위해 만든 시스템이다.문제점EndToEnd 연결 방식의 아키텍처데이터 연동의 복잡성 증가(하드웨어, 운영체제, 장애 등)각기 다른 데이터 파이프라인 연결 구조확장에 엄청난 필요문제 해결 요구 사항모든 시스템으로 데이터를 전송 실시간 처리도 가능한 것데이터가 갑자기 많아지더라도 확장이 용이한 시스템이 필요함출처 : 데브원영 DVWY해결방법 : 카프카프로듀서와 ..
[Redis] @Cacheable의 작동 원리
·
Redis
프록시를 통한 작동Cacheable 어노테이션 또한 CachingConfigurationSelector 클래스를 통해 Configuration이 등록된다. 이 때 @EnableCaching에서 설정한 AdviceMode에 따라 Proxy, AspectJ 중 하나로 동작하기 위해 각각의 Configuration 목록이 제공된다. 내부 메서드 호출 해결 방법기본적으로 Spring AOP에서 사용하는 Proxy 기반으로 작동하지만 특수한 상황에서는 AspectJ를 사용하거나 다른 방식으로 사용할 필요가 있다.예를 들어, Spring AOP는 프록시 클래스를 기반으로 작동하는데 같은 클래스의 메서드를 내부적으로 호출하는 경우 프록시 클래스를 거치지 않기 때문에 AOP 로직이 적용되지 않는다. 이때 AspectJ..
[Redis/ Caching ] Spring에서 Cache를 구현하는 방식
·
Redis
Redis 특징Key-Value 방식으로 저장된다.컬렉션을 지원해서 다양한 타입으로 저장 가능하다.Pub/Sub 기능을 지원한다. 이 방식은 채팅이나 이벤트 소싱 방식에서 사용할 수 있다.디스크 저장이 가능하다. 메모리에 데이터를 저장하여 휘발성메모리라고 하지만 AOF/RDB 방식을 사용해서 영구적인 저장이 가능하다. 하지만 성능적인 측면에서 저하된다거나 중간에 데이터가 유실될 수도 있다는 단점이 있다.복제가 가능하다. Master/Slave 구조를 지원한다. 또한 샤딩을 사용해서 수평적인 확장이 가능하다.메모리를 통해 데이터를 조회하기 때문에 빠른 속도로 데이터를 처리한다.Redis의 타입 정리Redis 기본 개념, 자료구조Redis는 가장 자주 기본적으로 사용하는 구조는 다음과 같다. 각 타입의 특성..
[DB] PhantomRead란?
·
면접 준비/DB
Phantom Read(팬텀 리드)란? 팬텀 리드는 같은 트랜잭션 내에서 동일한 조건으로 여러 번 데이터를 조회했을 때, 새로운 행이 추가되거나 삭제되어 결과가 달라지는 현상입니다. 즉, 트랜잭션이 실행되는 동안 다른 트랜잭션에 의해 새로운 데이터가 삽입되거나 삭제되어, 처음 조회한 결과와 이후 조회한 결과가 달라지는 문제입니다.📌 Phantom Read 예제 1️⃣ 문제 상황 1. A 트랜잭션이 WHERE 조건을 만족하는 데이터를 조회합니다. 2. B 트랜잭션이 새로운 데이터를 INSERT합니다. 3. A 트랜잭션이 동일한 조건으로 다시 조회하면, 처음 조회할 때 없던 데이터가 추가된 것을 확인할 수 있습니다. 4. 동일한 SELECT 쿼리를 실행했는데도 새로운 데이터가 추가되면서 결과가 변경됨 → ..
[DB / Transaction] 트랜잭션 고립 수준
·
면접 준비/DB
트랜잭션 격리 수준(Isolation Level) 트랜잭션 격리 수준(Isolation Level)은 하나의 트랜잭션이 다른 트랜잭션의 변경 사항을 볼 수 있는 정도를 정의하는 규칙입니다.즉, 데이터의 일관성을 유지하면서 동시성을 관리하는 방법을 결정하는 중요한 요소입니다. 1. 트랜잭션에서 발생할 수 있는 동시성 문제 트랜잭션이 동시에 실행될 때, 아래와 같은 문제가 발생할 수 있습니다.문제 유형설명Dirty Read (더티 리드)다른 트랜잭션이 커밋하지 않은 데이터를 읽는 문제Non-Repeatable Read (반복 불가능한 읽기)같은 데이터를 읽었을 때 값이 변경되는 문제Phantom Read (팬텀 리드)같은 조건으로 조회했을 때 새로운 행이 추가되거나 삭제되는 문제각 트랜잭션 격리 수준은 이러..
[DB / JPA] 낙관적 락과 비관적 락
·
면접 준비/DB
비관적 락과 낙관적 락의 차이점 비관적 락(Pessimistic Lock)과 낙관적 락(Optimistic Lock)은 동시성 제어(Concurrency Control) 를 위해 사용되는 두 가지 대표적인 방식입니다.1. 비관적 락(Pessimistic Lock) 비관적 락은 데이터를 수정하는 동안 다른 트랜잭션이 해당 데이터를 변경하지 못하도록 차단하는 방식입니다. 즉, 트랜잭션이 시작되면 즉시 잠금을 걸고, 트랜잭션이 종료될 때까지 다른 트랜잭션이 접근할 수 없도록 하는 방식입니다. 특징 ✅ 장점 • 경쟁이 심한 환경에서도 안전하게 데이터 정합성을 보장할 수 있습니다. • 동시성 충돌이 발생할 가능성이 높은 경우 적합합니다. ❌ 단점 • 잠금이 유지되는 동안 다른 트랜잭션이 대기해야 하므로 성능 저하..