AOP 기반 Lock 인터페이스 추상화, Redisson 분산락 적용 동시성 처리(Spring)
·
Spring/AOP
들어가며이번 포스팅에서는 100명의 사용자가 동시에 같은 게시글에 좋아요 또는 좋아요 취소를 누르는 상황에서 발생하는 예시 상황과 같은, 동시성 문제를 어떻게 해결할 수 있을지 다루어보려 한다 일단 내가 구현한 기능에서 좋아요는 인스타의 좋아요처럼 누르고, 다시 누르면 취소하는 로직이였다. 그래서 좋아요 수를 올리는 과정에서 락을 걸지 않으면, 동시에 여러 쓰레드나 요청이 동일한 데이터를 수정하면서 정합성 이나 데이터 유실 문제가 발생할 수 있다고 판단했어서 여러 방법을 고민하다가 분산락을 적용하는 방향으로 생각했다Redisson먼저 Redisson이 뭔지에 대해서 먼저 알아보자Redisson이란 ?자바 언어로 구현된 Redis 클라이언트 라이브러리이다. 주로 분산 시스템에서 동시성 문제를 해결하기 위해..
AOP 활용해서 Request 로그 추적 (Spring)
·
Spring/AOP
들어가며먼저, AOP를 사용해야겠다라고 생각했던 이유는 Redis 캐싱을 적용해서, 게시글 상세 조회나 전체 목록 조회 등의 내용의 응답 시간을 단축 시켰는데, 실제로 구체적인 Request 로그로 확인해보고 싶었기에 해당 내용에 대해서 공부한 뒤 적용해봤다(Redis 캐싱은 Caffeine + Redis 을 합친 2-Level 캐시로 구현했는데, 구현한 내용은 다른 포스팅에서 작성해보려한다)AOP의 개념먼저 AOP와 해당 기능을 사용했을때 장점에 대해서 얘기해보려 한다AOP란 ?관점(Aspect)지향 프로그래밍으로, 관점을 기준으로 다양한 기능을 분리하여 보는 프로그래밍이다.여기서 관점은, 부가 기능과 그 적용처를 정의하고 합쳐서 모듈로 만든 것을 의미한다 즉, 정리하자면 비즈니스 핵심적인 기능은 아닐..