프로젝트

프로젝트/똑립

멀티모듈에서 AOP 사용시 주의점

Spring AOP 멀티모듈 이슈안녕하세요, 이번 포스팅에서는 Spring AOP를 멀티모듈 환경에서 사용하면서 겪은 문제와 그 해결 방법을 공유하려고 합니다. 멀티모듈에서 공통 기능을 분리해 사용하는 분들께 도움이 되기를 바랍니다.문제 상황: 멀티모듈에서 애노테이션 추출 문제Spring AOP를 활용해 특정 메서드 실행 후 이벤트를 발생시키는 기능을 구현하면서 문제가 발생했습니다. 공통 모듈에 정의한 애노테이션을 API 모듈에서 사용하고 있었고 다음과 같이 AOP를 적용했을 때 오류가 발생했습니다@Aspect@Componentpublic class CommentNotificationAspect { @AfterReturning(value = "@annotation(commentNotification..

프로젝트/똑립

똑립 3. 멀티쓰레드 환경에서 동시성 제어. 분산락 적용

말로만 듣던 동시성 문제 따닥을 직접 마주할 줄이야. 아래는 해결과정을 글로 남겨보았다.분산락 Codehttps://github.com/ttoklip/BackEnd/blob/main/src/main/java/com/api/ttoklip/domain/aop/filtering/SignupDistributedLockAspect.java BackEnd/src/main/java/com/api/ttoklip/domain/aop/filtering/SignupDistributedLockAspect.java at main · ttoklip/BackEnd사회초년생의 똑! 부러지는 독립을 위한 커뮤니티 플랫폼, 똑립 Backend 레포 🌳. Contribute to ttoklip/BackEnd development by ..

프로젝트/똑립

똑립 2. REQUIRES_NEW / TransactionalEventListener + Async 알림 문제 복기

최근 Spring Transaction 전파에 대해 깊이있게 학습하며 예전 알림 문제를 어떻게하면 해결할 수 있을지 계속 고민이 들었다.과연 에전에 내가 한 방법이 정말 올바른 방법이였을까?2024.04.20 - [대외활동] - 알림기능, 문제의 시작 알림기능, 문제의 시작기존 서비스저희 게시판 서비스는 HoneyTip(꿀팁공유해요 게시판)과 HoneyTipComment(꿀팁공유해요 댓글)이 연관관계 매핑이 되어있습니다. HoneyTipComment는 Comment를 단일테이블 전략으로 상속받고 있습toychip.tistory.com 예제를 아주 간단하게 세팅해서 문제를 명확히 파악해보자. Entity/* Entity */@Getter@Entity@NoArgsConstructor(access = Acce..

프로젝트/Maship

Maship 4. MVP 발표, 서버 터짐 🥵 (Mash-Up Maship Project)

현재 Mash-Up 14기수를 진행중이다. 8월 24일 MVP 배포를 했다. 실제 동아리 구성원분들에게 어떤 서비스인지 간략하게 알려주는 행사이다. 원래는 7월 27일이 MVP 배포였지만, 미뤄지게 되어 8월 24일에 발표하게 됐다. Goorm에서 진행한 MVP 배포 먼저, 우리의 서비스를 기획할 때 팀원들과 잡은 가장 큰 매쉬업 구성원은 81명이라 4/3 이상인 DAU 60이 목표였다. 매쉬업 동아리 구성원들의 니즈를 고민해봤는데, 도파민을 뿜뿜하게 해주는 것으로 결정했다. 현재 동아리 사람들은 2030의 it 에대한 열정이 넘치는 사람들이 모인 곳이다. 파트가 6개로 구성되어있는 만큼, 사람들이 81명이나 된다. 그렇기에 친해지고 싶어도 다른 파트, 다른 프로젝트 팀 사람들과는 쉽게 친해지지 못하는 ..

프로젝트/Maship

Maship 3. ShedLock사용. Scale-out시 Scheduler 중복 실행 방지

최근에 스케줄러가 동시에 발생한 이슈가 생겼다.우리의 스케줄러는 각각 하루에 2번만 발생하기 때문에, 매초 실행하는 스케줄러들과는 다르다. 현재 메모리를 t3.micro로 두었고, 이를 Scale-out을 하게될 경우 스케줄러가 동시에 실행되는 문제를 확인했다. 현재 질문이 12개인 QuestionSet를 생성하는 스케줄러, 각 사용자의 해당 회차의 QuestionSet에 대한 후보자를 뽑는 QuestionSheet를 생성하는 스케줄러가 있다.2024.08.14 - [대외활동] - JPA 배치 처리로 벌크성 쿼리 최적화하기 (Mash-Up Maship Project) JPA 배치 처리로 벌크성 쿼리 최적화하기 (Mash-Up Maship Project)JPARepository에서 기본적으로 제공하는 메서..

프로젝트/Maship

Maship 2. Select, Insert 쿼리 분리 및 JPA 배치 처리로 벌크성 쿼리 최적화하기 (Mash-Up Maship Project)

JPARepository에서 기본적으로 제공하는 메서드들이 있다.  findById, findAll, delete(), deleteAll() 등. 이들 메서드는 CRUD 작업을 손쉽게 처리할 수 있도록 돕는다.  그런데 최근에 궁금해진 것이 있다. 이 작업들을 한 번에 최적화하여 처리할 수는 없을까? 데이터베이스 쿼리에서 select 연산을 조인으로 최적화하여 N번의 쿼리를 단일 쿼리로 해결하는 경우가 많다. 이를 통해 성능을 크게 향상시킬 수 있다.  그렇다면 insert, update, delete와 같은 벌크성 쿼리도 비슷한 방식으로 최적화할 수 있을까?  벌크성 쿼리의 최적화 일반적으로 insert, update, delete와 같은 벌크성 쿼리는 select처럼 조인을 통해 N번의 쿼리를 단일 ..

프로젝트/똑립

똑립 1. 알림기능, 문제의 시작

트랜잭션 전파를 깊이 있게 학습 후 상태를 재구성 후 테스트2024.09.04 수정최근에 트랜잭션 전파에 대해 깊이 있게 학습하며 이전에 알림 기능을 개발할 때를 재구성 후 테스트하였고 잘못 알고 있던 점을 되짚었습니다. 2024.09.04 - [프로젝트/똑립 (UMC)] - REQUIRES_NEW / TransactionalEventListener + Async 알림 문제 복기 기존 서비스저희 게시판 서비스는 HoneyTip(꿀팁공유해요 게시판)과 HoneyTipComment(꿀팁공유해요 댓글)이 연관관계 매핑이 되어있습니다.HoneyTipComment는 Comment를 단일테이블 전략으로 상속받고 있습니다.다른 댓글 서비스와 HoneyTipCommentService는 댓글 생성, 삭제시 최종적으로 C..

토이 개발 스토리
'프로젝트' 카테고리의 글 목록