
현재 전체 통합 테스트를 진행하면 아래와 같이 세 번의 스프링 부트 서버가 실행된다. > > > 테스트 코드를 작성하고 실행하며 유지보수하는 과정은 모두 비용이다. 따라서 테스트 시간을 단축하는 것은 개발 생산성을 위해 중요한 과제다. 현재는 프로젝트 규모가 작아 차이가 미미할 수 있지만, 규모가 커질수록 이 차이는 확연하게 벌어질 것이다. 테스트...

나는 왜 테스트 코드를 작성하는가? 지금까지는 API를 만들고 나면 Postman을 켜고, 버튼을 누르고, DB를 조회하며 "눈"으로 검증했다. 하지만 다양한 프로젝트를 진행할수록 이 과정은 지루해지고 번거로웠다. (물론 Postman으로 검증하지 않는것은 아닙니다) 특히 이번 프로젝트에서는 TDD의 철학을 조금이라도 녹여내고 싶었은 마음이 있었다. 테스...

테스트 강의를 들으며 토이 프로젝트를 진행하던 중 흥미로운 현상을 발견했다. HTTP 요청에서 Java Object JSON 직렬화/역직렬화 과정은 필수적인데, 이전에 Redis 캐싱을 구현하며 겪었던 이슈가 이번에도 생각나 정리를 해보려 한다. 기본 생성자가 없는 DTO 상황은 단순했다. 주문 요청 API를 만들고 있었고 코드는 다음과 같다. @...

회원가입 성공 시 가입 축하 메일을 발송하는 로직을 구현했다. 초기에는 단순한 동기 호출로 시작했지만, 시스템의 결합도를 낮추고 데이터 정합성을 보장하기 위해 점진적으로 구조를 고도화했다. 초기: 이벤트 발행 없는 강결합 로직 개선: '회원가입'과 '메일발송'의 결합

기존 아키텍처 구조 현재 프로젝트는 아래와 같은 아키텍처로 구성된 상태입니다. Spring Boot ↔ Redis (SET 구조) ↔ MySQL 사용자가 게시글 상세 페이지를 조회하면, 기본적인 게시글 정보(제목, 내용 등)와 함께 좋아요 수도 함께 반환됩니다. 이때 좋아요 수는 실시간성과 성능을 고려하여 RDB가 아닌 Redis의 Set 자료구조를 활...

redis 도입 전/후 동시성 이슈 해결 및 성능 최적화

docker compose 사용하여 모니터링 구축 과정 정리 및 트러블 슈팅