무지를 아는 것이 곧 앎의 시작

Spring 2

멀티 모듈 프로젝트 세팅하기

멀티 모듈 프로젝트는 왜 세팅할까? A 엔티티가 있고 이걸 다루는 API 서버 어플리케이션이 있다. 근데 마침 같은 A 엔티티를 다루는 배치 어플리케이션의 개발이 필요하다. 별도의 프로젝트로 배치 어플리케이션을 개발하면, 그 배치 어플리케이션 쪽에도 A 엔티티와 관련된 코드를 옮겨줘야 한다. 그리고 이 A엔티티를 다루는 어드민 전용 API 어플리케이션이 또 필요하다. 이것도 별도의 프로젝트로 개발한다면, A 엔티티는 세 군데에 동시에 코드가 존재하게 될 것이다. 마치 아래 그림처럼. 이러한 구조가 되었을 때, 만약 A 엔티티의 요구사항이 변해서 수정이 생기면 어떻게 될까? 각각의 프로젝트에서 각각 A 엔티티에 수정 사항을 반영시켜야 하고, 미처 반영하지 못하고 배포를 나갔을 경우엔 어떠한 문제가 생길지도..

Spring 2023.11.27

분산락 언제 잡고 어떻게 잡는게 좋을까

프로젝트 진행하다 보면 동시성 이슈를 해결해야할 때가 있다. 최근 사이드 프로젝트에 북마크 기능을 구현할 때 어떻게 동시성 이슈를 잡았었고 어떤 고민을 해서 잡는 방법을 채택했는지 기록해볼까 한다. 도메인 간단 이해 일단 도메인 구조를 보면, Place(장소)라는게 있고, 이 장소에 북마크를 찍는개념으로 해서 Bookmark(북마크)가 있고 1(장소):N(북마크)로 되어있다. 그리고 Place 리스트를 조회할 때 bookmark 갯수가 같이 노출돼야하기 때문에 성능 최적화를 위해 bookmarkCount라는 컬럼을 Place가 반정규화해서 들도록 했다. /// imports... /// annotations... public class Place extends AbstractRootEntity { @Id..

CS 2023.10.09