들어가며 '동시성 문제'는 CS 공부를 하거나, 백엔드 개발을 하다 보면 종종 마주하는 문제입니다. 저 역시도 프로젝트 개발 과정에서 본래 상승해야 하는 값이 아닌 다른 값으로 update 되는 케이스를 마주한 경험이 있었습니다. 문제를 해결하기 위해서 전에 공부했던 지식과 기술 블로그, GPT 등을 통해 공부하며 느낀 점은, 선택지가 굉장히 다양하다는 점이었습니다. 아무래도 우리는 개발자니까, 많은 선택지 가운데서 각각의 특징을 이해하고, 서비스와 팀의 상황에 가장 적합한 방법을 고려하는 것이 중요하죠. 이번 글에서는 제가 준비한 여러 방법들에 대한 간단한 개념과 특징, 그리고 적용 방법에 대한 예제를 소개하겠습니다. 그리고 마지막에는 충돌 상황에서 각 방법에 대한 성능 테스트를 진행한 결과를 표와 그..
Spring
개요프로젝트를 진행하면서, 개발자는 로그를 남기게 됩니다. 로그를 남기는 이유는 다양합니다. 저 같은 경우엔 주로 값이 잘 넘어갔는지, 값이 다시 잘 왔는지, 오류가 났는지, 오류가 났다면 어디서 났는지... 등의 이유로 로그를 남기곤 했습니다.꼼꼼하게 로그를 남긴다면 오류가 발생했을 때 빠르게 원인파악이 가능해서 대응에 도움이 될 것입니다. 추가로 사용자들이 어떻게 서비스를 이용하는지에 대한 데이터를 확보할 수 있을 겁니다. 이처럼 중요한 정보를 담고 있는 로그를 저는 지금까지 별 생각없이 매번 Spring이 해주는 기본 설정으로 로그를 사용했었는데요, 기본 설정을 벗어나, 로그 라이브러리를 제대로 사용하는 방법을 공부해야 할 필요성을 느꼈습니다. Spring Boot에서 기본으로 사용한다는 `Logb..

개요Java, Spring으로 백엔드를 구성하면 데이터베이스를 다룰 일이 있을 것입니다.저의 주변에선 주로 JPA나 Mybatis를 이용해서 데이터를 다루는 것을 확인했습니다.저 역시 일반적으로는 JPA와 QueryDSL과 같은 기술들을 이용하지만 특정 상황에서 성능이 너무 떨어진다면 JdbcTemplate이나 Mybatis를 고려하게 되는 일들이 있었습니다. 이번 포스팅에서는 이처럼 다양한 DB 접근 방법 중 insert를 하는 방법에 대해서 알아보고, 각 방법의 성능을 비교해 보도록 하겠습니다. Insert를 하는 다양한 방법 기본적으로 Java에서 DB에 접근하기 위해선 JDBC를 이용해야 합니다. 하지만 직접 JDBC를 이용해서 DB를 조작하는 것은 여러 반복 코드가 발생하고, 커넥션 관리 등 신..