전체 글

나와 더불어 성장할 개발새발 블로그
Database/Redis

[Redis] Redis를 이용한 예약 선점 로직 리팩토링

개요최근에 캐치 테이블을 타겟 클론하여 프로젝트를 진행하였다.예약 하기 전 해당 시간에 대한 선점을 먼저 요구하는 예약기능의 요구사항이 기억에 남는다. 최근에 이 기능에 대한 로직을 쭉 살펴보다가 개선점이 보였다.기존 로직을 리팩토링 후 글로 남겨본다. 요구사항예약 시, 요구사항은 다음과 같다.가게의 예약시간을 클릭 시, 그 시간에 대해 해당 유저는 7분 동안 예약 선점권을 갖는다.예약 선점권을 가진 유저가 상세정보를 입력 후 예약을 할 수 있다. 기존 코드@Service@RequiredArgsConstructorpublic class MemberReservationService { private final ReservationTimeRepository reservationTimeReposito..

Database/RDB

[Database] 트랜잭션 격리 수준이란?

개요DB에 관심을 갖고 테코톡과 Real MySQL을 읽으며, 트랜잭션과 동시성 처리 등에 관심을 갖게 되었다. 그 중 가장 어렵다고 느낀 트랜잭션 격리 수준에 대한 개념을 정리하려 한다. 트랜잭션 격리 수준은 4단계로 나누어지며, 각 단계 별 부정합 문제점들을 갖고 있어 뒤로 갈 수록 갖고 있던 문제점들을 해결해 나간다. 1. READ UNCOMMITTED각 트랜잭션의 변경내용이 COMMIT 혹은 ROLLBACK 여부에 상관없이 다른 트랜잭션에 노출된다. 예시사용자 A가 트랜잭션을 시작함과 동시에 emp_no = 50000 인 사원을 INSERT 후 COMMIT은 하지 않는다.하지만 사용자 B가 테이블 SELECT 시, emp_no = 50000 인 사원이 조회된다. 트랜잭션이 COMMIT 되기도 ..

Spring/Security

[Spring Security] Security OAuth2.0 디버깅 & 커스텀 여행기

개요현재 프로젝트에 인증 & 인가 부분을 맡게 되면서, 요구사항으로 OAuth2.0을 이용한 로그인 기능을 구현하고 JWT 토큰 방식을 접목하게 되었다. Security OAuth2.0 기능이 추가되면 그 기능이 FilterChain 안에서 어떻게 동작하게 되고, 커스텀을 위해 어떤 부분을 어떻게 건드려야 되는지 간단히 알아보았다. OAuth2.0 인증 방법 OAuth2.0은 여러 인증 방법이 있지만, 대게 Authorization Code Grant 방식을 사용한다고 한다.코드 안에서는 여러 일이 일어나지만, Flow는 다음과 같다. Flow 1. 사용자가 어플리케이션에 소셜 로그인 요청 -> 소셜 로그인 페이지로 리다이렉트 Flow 2. 소셜 인증 완료 -> 인증 서버에서 Authorization ..

kkang._.h00n
깡훈인뎁쇼