동시성 문제를 해결하기 위해 MySQL 스토리지 엔진(InnoDB) 은 Lock 기능을 제공합니다. 그 중 MySQL 디폴트 Isolation Level인 Repeatable Read 에서 사용되는 Record Lock, Gap Lock, Next-Key Lock 에
https://www.youtube.com/watch?v=XSkz0kO7J3w해당 영상을 보고 작성한 글입니다.Test 코드를 작성하다보면 여러 infrastructure 빈을 의존하고 있는 경우 상당히 많은 모킹 작업이 필요하다. 이러다보니 테스트 코드 자체
대부분의 IT 회사에서 많이 쓰고 있다는 도커.. 도커가 도대체 무엇이고 왜 쓰고 있는 것일까? 이번에 공부를 해보려고 한다.도커의 정의를 구글에 검색하면 거의 대부분 이렇게 설애명한다. 컨테이너 기반 가상화 도구, 컨테이너를 관리하는 플랫폼컨테이너가 뭔지 모르면 뭐하
AOP 에서 Order 어노테이션을 적용했을 때 실행 순서 입니다. Order(n-1) Order(n) Order(n+1) JoinPoint.proceed() Order(n+1) Order(n) Order(n-1)
카프카(kafka)는 메세지큐의 대표적인 솔루션 중 하나이다. 링크드인에서 개발했으며 현재는 오픈소스로 공개되어있어 데이터 파이프라인 구축을 위해 많은 사람들이 사용하고 있다. 카프카 기본 구조 카프카는 크게 브로커, 컨슈머, 프로듀서 세가지 컴포넌트로 구성된다.
MQ는 어떤 장점이 있고 왜 사용하는지에 대한 포스트 입니다. Case 1. 한가지 시나리오를 생각해보자. 시스템 A 는 시스템 B,C,D 에게 동일한 데이터를 전송중이다. 만약 시스템 E도 이 데이터를 원한다면 어떻게 될까? 만약 시스템 C가 이 데이터를 더이상 원
레디스를 사용하면서 얻었던 tip 들을 기록합니다.특정상황에서는 캐시를 갱신하는 것보다 캐시를 삭제하는게 더 좋은 선택이다. ex) 캐시 갱신 cost 가 크고, cold data 성격의 값일 때
레디스가 메모리에만 데이터를 저장한다면, 레디스가 다운되어 재실행 될 때 데이터를 잃어 버릴 것이다. 다행히도 레디스는 데이터를 디스크에도 저장하여 영속성(persistence) 을 보장한다. 레디스가 영속성 보장을 위해 제공하는 두가지 방법에 대하여 알아보자 RDB는
레디스는 기본적으로 TTL 이 만료된 데이터를 아래 두가지 방법으로 삭제한다 주기적으로(100ms) 만료시간이 설정된 일부 키를 임의로 선택하여 만료여부를 확인 후 삭제 레디스에 저장된 키가 많을경우 일정주기 마다 이 키를 확인하면 CPU 부하가 심해진다. 레디스
JPA 를 사용하면서 겪었던 이슈들을 까먹지 않기위해 작성한 포스트입니다. (지속적으로 추가) > N + 1 문제는 언제나 주의할것! > OneToMany 관계의 엔티티에 fetch join 을 걸고 limit 쿼리를 실행하면 full scan 이후 어플리케이션 레
레디스는 기본적으로 싱글스레드로 동작한다고 알려져 있습니다.https://www.sobyte.net/post/2022-08/redis-single-thread/
결론부터 말하면persist 가 호출되는 경우 영속화되고, merge 가 호출되는 경우 영속화되지 않는다.언제 persist 가 호출되고 언제 merge 가 호출되는지? : https://insanelysimple.tistory.com/300위 코드를 실행시키
apt update 시 아래와 같은 오류가 발생한다면업데이트를 확인합니다. (오류가 나도 계속 진행)sudo apt update패키지를 설치합니다.sudo apt install ca-certificates다시한번 업데이트 명령어를 사용해서 적용이 되는지 확인합니다.su
얼마전 스프링 배치를 이용해 청크단위로 데이터를 처리하다가 데이터를 read 하지 못하는 문제가 발생했다. 간략한 시나리오는 아래와 같다.현재 상황status 컬럼의 값이 ENABLED 인 데이터를 가져와서 disbaled 상태로 바꿔야함chunkSize = 5 현재
최범균님의 유튜브 강의를 보고 작성한 글입니다. https://www.youtube.com/watch?v=NaeXpswLvxk&ab_channel=%EC%B5%9C%EB%B2%94%EA%B7%A0 코드를 나누지 않는다면 코드 순서대로 구현을 이해하는 것이 가능하다.
Gateway 라는 말을 종종 들어본 적이 있을 것이다. Gateway란 관문, 출입구를 뜻하는 단어로 네트워크에서는 패킷이 특정 네트워크로 들어올 때 가장 먼저 통과하는 포인트를 말한다.그렇다면 API Gateway 란 무엇일까?API Gateway 는 여러 API
스프링부트 프레임워크를 사용하여 만든 웹 어플리케이션 코드를 배포하는 방법에는 JAR, WAR 두 가지가 있다. JAR 배포와 WAR 배포의 차이점에 대해서 알아보자. JAR JAR 는 자바로 만든 어플리케이션의 구성요소들을 압축시켜 놓은 파일이다. JRE or JD
테스트를 작성하다가 아래와 같은 불편함을 겪은적이 있습니다.UserService 라는 클래스에 대한 단위 테스트를 작성하기 위해 UserServiceTest 라는 클래스를 만들었다. 근데 이후에 UserService 에 대한 통합 테스트를 만들고 싶어졌다. 이미 Use