auditLog는 기록도 기록이지만 조회가 가장 중요한 API이다.조회 성능을 개선하기 위해 어떤 방식이 있을가 고민하던 중 인덱싱을 적용하기로 했다.인덱싱은 커서 기반 페이징에서 커서 키로 사용하는 CREATE INDEX idx_auditlog_loggedat_id ON audit_log (logged_at DESC, id DESC);logged_at , id 에 인덱싱을 걸었다. 인덱싱 적용 후 이전과 동일하게 마지막 페이지를 조회했더니2025-08-08 18:35:58.215 [https-jsse-nio-443-exec-9] INFO com.welcommu.moduleapi.aop.ExecutionTimeLogger - ⏱️ LogsWithCursor com.welcommu.moduleservi..
이전 게시글에서 AuditLog의 N + 1 문제를 해결하여 성능을 개선하였다.하지만 10,000건의 데이터는 너무 적다.여러 조언을 구해본결과 1000만건은 해야 유의미한 결과를 얻을 수 있다는 판단이 들었다.그렇게 해서 데이터 1000만건 삽입!audlitLog는 1000만건INSERT INTO vivim.audit_log (actor_id, target_type, target_id, action_type, logged_at)WITH RECURSIVE numbers AS (SELECT 1 AS n UNION ALL SELECT n + 1 FROM numbers WHERE n audlitLogDetail는 200만건 삽입하였다.INSERT INTO vivim.audit_lo..
들어가며프로젝트 관리 시스템 프로젝트를 진행하면서유저, 회사, 프로젝트, 댓글 등 여러 엔티티의 생성, 수정, 삭제 내역을 조회하는 API를 개발해야 했다. ERD는 위와 같이 구성되어 있었다.만약 수정의 경우 audit_log_detail을 통해 수정 전과 수정 후 데이터를 저장하고자 했다.최초 구상시에는 Spring AOP를 활용해 구현하고자 했지만AOP를 적용하기 위해선 현재 작동하는 비즈니스 로직들을 수정해야하는 상황이 발생해서결국 AOP를 사용하지 않고 비즈니스 로직에 AuditLog에 데이터를 기록하는 로직을 추가했다. 로직 설명예시로 프로젝트 생성 로직의 경우createProjcet -> createAuditLog -> auditLogFactory식의 의존 방향을 통해 생성 로그가 DB에 저..
문제상황Github Action을 활용해서 CI / CD를 구축하던 중CI 과정에서 테스트 코드 검사를 활성화 후 파이프라인을 진행시켰다. 그런데..분명 로컬에서는 잘 작동하던 테스트가 위 이미지 처럼 다수가 실패해 CI 가 제대로 동작하지 않게 되었다.. 원인파악 + 해결1차로 확인한 원인ConfigDataResourceNotFoundException이 발생하여 테스트가 실패하고 있었다. ConfigDataResourceNotFoundException란 스프링이 로딩할 설정파일을 읽지 못해 발생하는 익셉션이다 테스트 패키지에 application-test.yml 파일을 추가하여 해당 익셉션을 해결하였다.추가적으로 Test 클래스마다 @ActiveProfiles 어노테이션을 추가해 설정파일 옵션을 부..
들어가며..최근 사이드 프로젝트를 진행하면서 테스트 코드에 대해 공부할 겸 TDD로 프로젝트를 진행하고 있다. 지금까지 다양한 백엔드 프로젝트를 진행해보았지만테스트 코드를 작성해본 경험이 없었기에이번 프로젝트를 진행하면서 TDD로 개발하며 무조건! 테스트 코드를 작성하며 개발을 하고자 했다. 그렇게 시작시작은 User API를 개발하며 TDD를 진행하였다.생성, 조회 API 까지는 나름 TDD가 할만했다.컨트롤러, 서비스 모듈 별로 테스트를 작성하며 진행했다.@Test public void 일반회원_회원가입() throws Exception{ String id = "username"; String password = "password"; String nickna..
서론6.27 ~6.29 무박3일로 진행되었던 us code 해커톤에 다녀왔다.예선 (기획서 제출)을 통해 총 25팀이 선발되고 선발된 팀들이 의성 체육관에 모여서 진행되는 해커톤이였다. 살면서 이런 무박 3일 해커톤은 처음 나가봐서설렘반 긴장반으로 경험하고 왔다.생각보다 환경은 좋았다.주최측에서 많이 준비한게 느껴지는 환경이였다.성별별로 침대 9개정도 있던 거도 나름 굿..(자리 차지는 힘들었지만..) 첫날밤에는 저 플라스틱 의자에 앉아서 자기도 했다.. 러브버그도 없는 좋은 의성.. 그렇게 우리 팀이 무박3일간 만든 프로젝트.. 의성올래.. 메타버스 기반 AI 의성 워케이션 추천 플랫폼이다https://www.youtube.com/watch?v=i44lReR7_Q4기능 1. 벡터 연산을 통해 워케이션 ..