There are 13 posts.

물리적 관점에서 인덱스 살펴보기

January 06, 2023

데이터베이스 쿼리 향상을 언급할 떄, 인덱스는 항상 빠지지 않고 등장하는 항목 중 하나입니다. 왜 쿼리 향상에는 인덱스에 대한 애기가 항상 나오는 걸까요?? 이번 글에서 데이터 I/O 작업에 대해서 근본적으로 살펴보면서 인덱스에 대해서 조금 더 알아보는 시간을 가져보려고 합니다. 저장 매체를 사용하는 방식 컴퓨터의 CPU나 메모리처럼 전기적 특성을 가지고…


JpaTransactionManager는 JDBC도 처리해준다

December 13, 2022

스프링은 트랜잭션 처리에 대한 추상화를 제공하기 때문에 제공되는 PlatformTransactionManager(정확하게는 AbstractTransactionManager)를 기준으로 여러 형태의 트랜잭션 제공 기술들을 사용할 수 있도록 기능을 제공하고 있습니다. 직접 JpaTransactionManager를 확인해보면, JDBC를 사용하기 위해서는 Da…


현재 시간을 검증해야 하는 로직 개선에 대해 고민해보기

December 10, 2022

현재 우아한테크코스 기간동안 진행했던 프로젝트인 “꼭꼭” 프로젝트를 개선하는 작업을 개인적으로 해보고 있습니다. 개선사항으로 느꼈던 부분 중 하나가 바로 “현재 시간을 검증해야 하는 로직”이였는데요. 이번 글에서는 해당 부분을 개선하기 위해서 어떤 방법을 고민했었는지를 작성해보는 시간을 가져보려고 합니다. 문제 사항은 무엇인가? 제작하고 있는 어플리케이션…


로컬 캐시와 글로벌 캐시에 대해서 고민해보기

December 09, 2022

최근 관심가지고 학습하고 있는 부분은 “캐시”입니다. 이러한 캐시를 적용하는 방법은 크게 로컬 캐시와 글로벌 캐시로 구분하여 적용을 할 수 있습니다. 각각의 종류들을 수행하고자 하는 기능에 맞게 선택하여 사용할 수 있는데요. 이번 글에서는 두 종류에 대해서 알아보고 적용시 어떤 부분들을 고민해야 하는지, 어떻게 적용해야 하는지 살펴보려고 합니다. 로컬 캐…


캐시 설계 전략에 대해서 고민해보기

December 08, 2022

온라인 면접만 보다가 최근 처음으로 오프라인 기술 면접을 보게 되었습니다. 기술 질문 중 분산 환경에서의 캐시의 정합성을 어떻게 보장할 것인가에 대한 내용이 나왔었고 어찌어찌 대답은 했지만 썩 만족할만큼 대답을 하진 못했던 것 같습니다. 이번 글을 통해서 캐시에 대해서 한번 살펴보고 어떻게 구현을 해야할지 고민해보는 시간을 가져보려고 합니다. 캐시 전략이…


동시성 문제 해결을 통한 제고 시스템 구현하기 - 2

December 05, 2022

저번 글에서는 트랜잭션의 관점에서 어떻게 동시성 문제를 해결하는지 살펴보고, Spring에서는 어떻게 트랜잭션을 지원하는지 살펴보는 시간을 가졌었습니다. 이번 시간에서는 요구사항을 구현하기 위해 추가적으로 필요한 개념과 실제 코드를 통해 동시성 문제를 해결해보는 과정을 한번 작성해보려고 합니다. 분산 환경에서 동시성 문제를 해결하기 위해 고민해야 할 점 …


동시성 문제 해결을 통한 제고 시스템 구현하기 - 1

November 16, 2022

재고를 기반으로 운영되는 쿠폰 시스템은 개발자가 고려해야 할 점이 많습니다. 현재 개발되고 있는 프로젝트는 자바와 스프링을 기반으로 한 웹 어플리케이션으로 운용되고 있습니다. 이러한 어플리케이션은 기본적으로 멀티 스레드 환경에서 구동이 되기 때문에 공유 자원에 대한 경쟁 상태가 발생하지 않도록 주의를 기울여 개발을 해야 합니다. 이러한 문제를 해결하기 위…


DAO와 Repository

November 01, 2022

우테코 미션을 진행하다보면 유행?이 되는 논쟁이 있습니다. 그 중에 하나가 Repository와 DAO의 차이점 입니다. 당시 미션을 진행할 때는 “그냥 부르는 명칭의 차이가 아닌가?” 라는 생각을 했었습니다. 그리고 지금 이 시점에서 어느 정도 Repository와 DAO의 차이에 대해서 설명할 수 있을 것 같은데요. 이번 글에서는 제가 생각하고 있는 …


테스트에서의 @Transactional

October 29, 2022

테스트 격리를 위해서는 데이터를 롤백시키는 과정이 필요합니다. 하지만 이 과정에서 잘못된 방법을 사용할 경우 몇가지 문제가 발생할 수 있는데요. 이번 포스팅에서는 문제가 생길 수 있는 상황들과 테스트 격리 방법을 조금 더 고도화하기 위해서 고민했던 내용에 대해서 작성해보려고 합니다. SpringBootTest는 @Transactional로 롤백되지 않을 …


JPA를 사용함으로서 겪었던 문제들

October 24, 2022

들어가기 전에.. 데이터 접근 기술에 관련된 개발 효율성은 를 알기 전과 후로 나뉜다고 할 수 있습니다. 그만큼 는 개발자에게 많은 도움을 주는 도구라고 할 수 있습니다. 하지만 그만큼 잘못 사용하면 독으로 다가올 수도 있는 도구인데요. 이번 글에서는 를 사용함으로써 겪었던 문제들을 소개하기 전, 먼저 그에 대한 개념을 설명하고 각각의 문제사항에 대해서 …