profile
백엔드 개발자

MySQL InnoDB Lock

동시성 문제를 해결하기 위해 MySQL 스토리지 엔진(InnoDB) 은 Lock 기능을 제공합니다. 그 중 MySQL 디폴트 Isolation Level인 Repeatable Read 에서 사용되는 Record Lock, Gap Lock, Next-Key Lock 에

6일 전
·
0개의 댓글
·

Test 코드 given 지옥 탈출하기

https://www.youtube.com/watch?v=XSkz0kO7J3w해당 영상을 보고 작성한 글입니다.Test 코드를 작성하다보면 여러 infrastructure 빈을 의존하고 있는 경우 상당히 많은 모킹 작업이 필요하다. 이러다보니 테스트 코드 자체

2023년 11월 11일
·
0개의 댓글
·
post-thumbnail

도커(docker)란 무엇이고 왜 쓰는 것일까

대부분의 IT 회사에서 많이 쓰고 있다는 도커.. 도커가 도대체 무엇이고 왜 쓰고 있는 것일까? 이번에 공부를 해보려고 한다.도커의 정의를 구글에 검색하면 거의 대부분 이렇게 설애명한다. 컨테이너 기반 가상화 도구, 컨테이너를 관리하는 플랫폼컨테이너가 뭔지 모르면 뭐하

2023년 5월 5일
·
0개의 댓글
·

AOP Order 순서

AOP 에서 Order 어노테이션을 적용했을 때 실행 순서 입니다. Order(n-1) Order(n) Order(n+1) JoinPoint.proceed() Order(n+1) Order(n) Order(n-1)

2023년 5월 5일
·
0개의 댓글
·
post-thumbnail

카프카(kafka)란? (기본구조, 토픽, 파티션)

카프카(kafka)는 메세지큐의 대표적인 솔루션 중 하나이다. 링크드인에서 개발했으며 현재는 오픈소스로 공개되어있어 데이터 파이프라인 구축을 위해 많은 사람들이 사용하고 있다. 카프카 기본 구조 카프카는 크게 브로커, 컨슈머, 프로듀서 세가지 컴포넌트로 구성된다.

2023년 3월 4일
·
0개의 댓글
·

MQ(Message Queue) 를 사용하는 이유

MQ는 어떤 장점이 있고 왜 사용하는지에 대한 포스트 입니다. Case 1. 한가지 시나리오를 생각해보자. 시스템 A 는 시스템 B,C,D 에게 동일한 데이터를 전송중이다. 만약 시스템 E도 이 데이터를 원한다면 어떻게 될까? 만약 시스템 C가 이 데이터를 더이상 원

2023년 2월 25일
·
0개의 댓글
·

레디스 사용 tip

레디스를 사용하면서 얻었던 tip 들을 기록합니다.특정상황에서는 캐시를 갱신하는 것보다 캐시를 삭제하는게 더 좋은 선택이다. ex) 캐시 갱신 cost 가 크고, cold data 성격의 값일 때

2023년 2월 25일
·
0개의 댓글
·

레디스(Redis)의 영속성(persistence) 보장 방식

레디스가 메모리에만 데이터를 저장한다면, 레디스가 다운되어 재실행 될 때 데이터를 잃어 버릴 것이다. 다행히도 레디스는 데이터를 디스크에도 저장하여 영속성(persistence) 을 보장한다. 레디스가 영속성 보장을 위해 제공하는 두가지 방법에 대하여 알아보자 RDB는

2023년 2월 18일
·
0개의 댓글
·

레디스(Redis) 캐시 만료/삭제 정책

레디스는 기본적으로 TTL 이 만료된 데이터를 아래 두가지 방법으로 삭제한다 주기적으로(100ms) 만료시간이 설정된 일부 키를 임의로 선택하여 만료여부를 확인 후 삭제 레디스에 저장된 키가 많을경우 일정주기 마다 이 키를 확인하면 CPU 부하가 심해진다. 레디스

2023년 2월 11일
·
0개의 댓글
·

JPA 사용시 주의점

JPA 를 사용하면서 겪었던 이슈들을 까먹지 않기위해 작성한 포스트입니다. (지속적으로 추가) > N + 1 문제는 언제나 주의할것! > OneToMany 관계의 엔티티에 fetch join 을 걸고 limit 쿼리를 실행하면 full scan 이후 어플리케이션 레

2022년 11월 18일
·
0개의 댓글
·
post-thumbnail

레디스(Redis) 와 싱글스레드(Single Thread)

레디스는 기본적으로 싱글스레드로 동작한다고 알려져 있습니다.https://www.sobyte.net/post/2022-08/redis-single-thread/

2022년 9월 20일
·
0개의 댓글
·

static 함수 모킹하기

3.4.0 이상 버전의 mockito-inline 의존성을 추가한다.

2022년 8월 4일
·
0개의 댓글
·

jpa save 호출시 파라미터로 넘긴 Entity 는 영속화될까?

결론부터 말하면persist 가 호출되는 경우 영속화되고, merge 가 호출되는 경우 영속화되지 않는다.언제 persist 가 호출되고 언제 merge 가 호출되는지? : https://insanelysimple.tistory.com/300위 코드를 실행시키

2022년 8월 4일
·
0개의 댓글
·

apt Certificate verification failed 오류

apt update 시 아래와 같은 오류가 발생한다면업데이트를 확인합니다. (오류가 나도 계속 진행)sudo apt update패키지를 설치합니다.sudo apt install ca-certificates다시한번 업데이트 명령어를 사용해서 적용이 되는지 확인합니다.su

2022년 8월 2일
·
0개의 댓글
·

Spring batch Chunk 처리시 주의할점! (데이터 무결성 깨짐)

얼마전 스프링 배치를 이용해 청크단위로 데이터를 처리하다가 데이터를 read 하지 못하는 문제가 발생했다. 간략한 시나리오는 아래와 같다.현재 상황status 컬럼의 값이 ENABLED 인 데이터를 가져와서 disbaled 상태로 바꿔야함chunkSize = 5 현재

2021년 12월 14일
·
0개의 댓글
·

코드 나누기

최범균님의 유튜브 강의를 보고 작성한 글입니다. https://www.youtube.com/watch?v=NaeXpswLvxk&ab_channel=%EC%B5%9C%EB%B2%94%EA%B7%A0 코드를 나누지 않는다면 코드 순서대로 구현을 이해하는 것이 가능하다.

2021년 11월 21일
·
0개의 댓글
·

API Gateway

Gateway 라는 말을 종종 들어본 적이 있을 것이다. Gateway란 관문, 출입구를 뜻하는 단어로 네트워크에서는 패킷이 특정 네트워크로 들어올 때 가장 먼저 통과하는 포인트를 말한다.그렇다면 API Gateway 란 무엇일까?API Gateway 는 여러 API

2021년 10월 11일
·
0개의 댓글
·

스프링부트 JAR, WAR 배포 차이

스프링부트 프레임워크를 사용하여 만든 웹 어플리케이션 코드를 배포하는 방법에는 JAR, WAR 두 가지가 있다. JAR 배포와 WAR 배포의 차이점에 대해서 알아보자. JAR JAR 는 자바로 만든 어플리케이션의 구성요소들을 압축시켜 놓은 파일이다. JRE or JD

2021년 9월 10일
·
0개의 댓글
·

[java,gradle]단위 테스트(unit test)와 통합 테스트(integration test) 환경 분리

테스트를 작성하다가 아래와 같은 불편함을 겪은적이 있습니다.UserService 라는 클래스에 대한 단위 테스트를 작성하기 위해 UserServiceTest 라는 클래스를 만들었다. 근데 이후에 UserService 에 대한 통합 테스트를 만들고 싶어졌다. 이미 Use

2021년 7월 3일
·
0개의 댓글
·