Hello, I’m Gyumyung Lee👋

Backend Programmer, Spring Boot, Java, Kotlin. and I consider it important to record. Such as TIL and Blog.

Latest Posts

테스트 컨테이너로 통합 테스트 환경 구축하기

이번에 회사 조직에서 통합 테스트를 위한 환경을 구축하는 과정에서 테스트 컨테이너를 도입하게 되면서, 그 과정을 정리하고자 한다. 그 전에 왜 통합 테스트 환경으로 테스트 컨테이너를 채택하게 되었는지 배경은 다음과 같다. 왜 테스트 컨테이너를 채택했나? H2 인메모리 DB 고려 처음 통합 테스트 환경을 H2를 활용해 구축...

Spring Boot 특정 클래스만 Bean 등록하기 (feat. @SpringBootTest classes 속성)

Spring Boot 특정 클래스만 Bean 등록하기 feat. @SpringBootTest의 classes 속성 개요 회사에서 통합테스트 환경을 구축하는 과정에서 통합테스트 작성 시 선언해줘야 하는 어노테이션의 재사용성을 위해 하나의 커스텀 어노테이션을 생성하여 관리하고자 했다. 여기서 회사 프로젝트의 특성 상 테스트 환경...

옵시디언 데일리 투두리스트로 일감 관리하기

옵시디언 데일리 투두리스트로 일감 관리하기 1. 데일리 노트 (Daily notes) 설정하기 옵시디언에서 기본적으로 제공하는 코어 플러그인 (Core plugins)에 데일리 노트가 있다. 옵시디언 설정에 들어가 코어 플러그인에서 데일리 노트를 활성화한다. 그 다음 코어 플러그인 설정에서 데일리 노트 파일에 대한 설정...

데이터베이스 락 (공유락과 베타락)

데이터베이스 락 1. 공유락 공유락은 데이터를 변경하지 않는 읽기 작업을 위한 락으로, 리소스를 읽을 수는 있지만 수정할 수 없게 하기 위한 락이다. 다른 트랜잭션에서 공유락이 걸린 데이터를 읽어도 데이터의 정합성은 지켜지기 때문에 다른 트랜잭션의 공유락은 막지 않는다. 하지만 공유락이 걸린 데이터에 베타락을 걸고 접근할 ...

트랜잭션 락

트랜잭션 락 1. 비관적 락 (Pessimistic Lock) 설명 데이터 충돌 가능성이 높다고 가정하고 트랜잭션이 데이터에 접근할 때마다 락을 걸어 다른 트랜잭션의 접근을 제한하는 방식으로, 즉 비관적인 관점에서 데이터 충돌을 사전에 방지하는 방식이다. DB 락의 공유락, 베타락 기법을 사용하는 방식이다. (각 DB 락의...

항해 플러스 6기 수료 회고 (벌써 10주가 지났지만)

벌써 2024년도 12월이 오고 나에게 큰 변화가 찾아왔다. 그렇다. 길었고 동시에 짧았던 10주 간의 항해 플러스 백엔드 6기 여정에 종지부가 찍혔다. 이번 포스팅에서는 항해 플러스 백엔드 6기의 수료 회고를 작성해보려 한다. 🧑‍💻나의 배경은… 지난 중간 회고때도 소개한 것처럼 3년차 백엔드 개발자이다. 메인으로...

항해 플러스 6기 9주차를 회고하며 - 카프카요? 제가 아는 이벤트 브로커 중에 최고였어요

1. 문제 이번 9주차의 과제는 다음과 같다. * 카프카를 구축해보고, 우리의 서비스에 카프카를 연동 및 실제 Producer, Consumer를 구현하여 적용해보기 * 카프카 메시지 발행의 결과에 대한 일관성을 보장하기 위한 Transactional Outbox Pattern 전략을 실제로 구현해보기 * 카프카 메시지 ...

카프카 서버 구축부터 Spring Boot 연동, 결과적 일관성 보장까지

개요 카프카의 서버 구축부터 Spring Boot 와 카프카를 연동해보고, 더 나아가 카프카 메시지 발행의 결과적 일관성을 보장하는 방법까지 다뤄본다. (본 포스팅에서 다루는 프로젝트는 다음 이커머스 프로젝트입니다.) 카프카 톺아보기 카프카? 카프카 (Kafka)는 링크드인에서 처음 개발된 오픈소스로, 그 당시 링크드...

항해 플러스 6기 8주차를 회고하며 - 인덱스는 진짜 유명한 쿼리 튜닝임 & 사가 패턴 사가세요

1. 문제 이번 8주차의 과제는 다음과 같다. * 시나리오에서 수행하는 조회 쿼리를 수집하고 인덱스를 적용하여 성능을 개선할 쿼리가 있다면 적용하여 성능 비교 분석하기 * 시나리오에서의 트랜잭션 범위를 분석해보고, 서비스가 확장된다고 가정할 때 현재 구조의 한계와 해결 방안을 분석해보기 * 부가 기능을 현재 비즈니스 로직...

인덱스 톺아보기

인덱스 톺아보기 인덱스란? 인덱스란 테이블의 검색 속도를 향상시키기 위해 사용하는 자료구조로, 데이터와 데이터의 위치를 포함한 자료구조이다. 인덱스를 활용하면 데이터를 조회하는 SELECT 쿼리 동작 외에도 UPDATE나 DELETE 성능도 함께 향상된다. 데이터를 수정, 삭제하기 위해서는 해당 대상을 조회해야 하기 때...