본문 바로가기

전체 글

(14)
[트러블 슈팅] 레이어별 멀티 모듈 적용 (과도한 모듈 분리로 실패🤪) 도입 원데이 히어로 프로젝트는 멀티 모듈 단일 프로젝트이다. 프로젝트에 멀티 모듈을 적용하면서 트러블슈팅을 겪었다. 이번 글에선 프로젝트 내에서 과도한 모듈 분리로 인한 실패 경험을 소개하고자 한다. 단어 그대로 실패 경험이니 우리처럼 하지 마세요!라는 글이다. 먼저 멀티 모듈을 왜 적용했고 어떻게 모듈을 나눴는지 그리고 발생했던 문제와 해결하긴 했지만 왜 잘못된 설계인지 이야기해보겠다. 멀티모듈이란 멀티 모듈을 왜 사용할까? 멀티 모듈은 역할과 의존성 분리를 통해 시스템의 분리, 통합을 유연하게 만들어 줄 수 있는 좋은 아키텍처를 만들 수 있다. MSA에서 멀티 모듈이 부각되곤 하는데, 멀티 모듈을 활용해 역할과 의존성을 잘 분리한다면 모놀리틱에서 MSA로 용이하게 전환될 수 있다.  잘 설계된 멀티 ..
[트러블 슈팅] 랭킹 조회에 로컬 캐시 적용하기 도입[10분 테코톡] 📸소니의 Cache를 보고 프로젝트에 캐시를 적용해보고 싶었다. 그런데 어디에 적용할지 어떤 캐시를 사용할지 고민되었다. 참고로 웹 브라우저 캐시가 아닌 컴퓨터 운영체제에서의 캐시를 적용하고자 했다.  원데이 히어로 프로젝트에서 히어로 점수를 기준으로 히어로 랭킹 조회하는 기능이 있다. 여기서 히어로란 프로젝트 내 도메인 용어로 단기 알바, 심부름 등을 해주는 사람을 뜻한다. 이러한 랭킹 조회에 로컬 캐시를 적용했고 이번 글에선 캐시 적용 과정에 대해서 이야기해 보겠다. 캐시란 무엇인가?먼저 캐시에 대해서 소개하겠다. 캐시는 데이터나 값을 미리 복사해 놓는 임시 저장소이다. 캐시는 캐시의 접근 시간에 비해 원본 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을..
[트러블 슈팅] Testcontainers로 통합 테스트 환경 만들기 (+ Testcontainers를 Spring Bean으로 등록) 배경이전 글, [트러블 슈팅] 멀티모듈에서 JaCoCo와 SonarCloud를 적용하여 코드 품질 높이기에서 인프라 영역이 나타났고 그로 인해 통합 테스트가 어려워졌다고 이야기했다. 테스트는 멱등성(Idempotent)을 보장하도록 작성되어야 한다. 멱등성이란 어떤 연산이 여러 번 수행되어도 동일한 결과를 내놓는 성질을 의미한다. 결국 테스트는 한 번만 수행한 결과와 여러 번 수행한 결과가 동일해야 한다. 그렇다면 결정적인 테스트 결과를 가져오도록 통합 테스트를 구성하려면 어떻게 해야할까? 원데이히어로 프로젝트 내 통합 테스트에서 사용할 주요 모듈은 웹 애플리케이션 서버(WAS)와  MongoDB이다. 테스트를 위해서 이 두 가지 모듈이 어딘가에서 실행되어야 한다. 프로젝트에서 스프링 부트를 사용하고 있..