[포텐데이 409-1pick] 분석 서비스 개발 중 만난 데드락과 동시성 문제 해결기 (5)
·
Project
이전 포스팅에서 데드락과 동시성 문제를 해결하는 시리즈를 마치려고 했습니다.그런데 생각해 보니 데일리 리포트를 생성하는 부분뿐만 아니라 위클리 리포트를 생성하는 부분에서도 네임드 락 호출이 필요했습니다. 함께 고도화를 하고 있는 팀원들이 네임드 락을 사용할 때 반납하는 코드를 깜빡한다면 서비스 장애가 일어날 수도 있습니다. 비즈니스 로직에서 동기화가 필요한 부분에 `try-finally`문으로 반납하는 부분이 반복돼서 사용될 것도 예상되죠. 그래서 이번 포스팅에서는 `AOP`를 활용해 비즈니스 로직에서 네임드 락 관련 관심사를 분리하는 과정을 담았습니다. 관심사 분리네임드 락의 사용 목적과 특성을 고려해야 한다네임드 락의 사용 목적네임드 락은 왜 사용할까요?핵심은 `동기화`입니다.저의 경우처럼 멀티 스레..
[포텐데이 409-1pick] 분석 서비스 개발 중 만난 데드락과 동시성 문제 해결기 (4)
·
Project
이전 포스팅: 2024.11.26 - [Project] - [포텐데이 409-1pick] 분석 서비스 개발 중 만난 데드락 해결기 (3) [포텐데이 409-1pick] 분석 서비스 개발 중 만난 데드락 해결기 (3)이번 포스팅에선 네임드 락을 이용해 데드락을 해결하는 과정을 담았습니다. 이전 포스팅이 궁금하시다면 아래 링크를 참고해 주세요!2024.11.25 - [Project] - [포텐데이 409-1pick] 분석 서비스 개발dev-gallery.tistory.com이전 포스팅에서 네임드 락을 이용해 데드락을 해결을 시도했습니다.하지만 문제가 있었는데요, 데드락을 해결했지만 `INSERT INTO ...` 쿼리가 2번 발생했다는 부분입니다.`INSERT` 쿼리가 2번 발생했다는 뜻은 이미 외부 API..
[포텐데이 409-1pick] 분석 서비스 개발 중 만난 데드락과 동시성 문제 해결기 (3)
·
Project
이번 포스팅에선 네임드 락을 이용해 데드락을 해결하는 과정을 담았습니다. 이전 포스팅이 궁금하시다면 아래 링크를 참고해 주세요!2024.11.25 - [Project] - [포텐데이 409-1pick] 분석 서비스 개발 중 만난 데드락 해결기 (1) [포텐데이 409-1pick] 분석 서비스 개발 중 만난 데드락 해결기 (1)이번 포스팅은 분석 서비스를 개발하다 만난 데드락을 해결하는 과정을 담았습니다.감정 분석 서비스 미리 보기기존 서비스에 이용자를 모으기 위해 고도화하는 프로젝트 중 하나가 `감정 분석dev-gallery.tistory.com2024.11.26 - [Project] - [포텐데이 409-1pick] 분석 서비스 개발 중 만난 데드락 해결기 (2) [포텐데이 409-1pick] 분석 서..
[포텐데이 409-1pick] 분석 서비스 개발 중 만난 데드락과 동시성 문제 해결기 (2)
·
Project
이번 포스팅에선 Testcontainers 내용이 잠깐 나옵니다.Testcontainers 환경을 구성하는 방법은 이전 포스팅을 참고해 주시면 됩니다.2024.09.16 - [Project] - [예약 대기 시스템] 4. 컨테이너 환경에서 테스트하기 (Testcontainers) [예약 대기 시스템] 4. 컨테이너 환경에서 테스트하기 (Testcontainers)이전 포스팅에서 애플리케이션을 컨테이너화 하기 위해 도커를 사용했습니다.(이전 포스팅 : 2024.09.13 - [Project] - [예약 대기 시스템] 3. 프로젝트 설정 (어드민 시스템)) [예약 대기 시스템] 3. 프dev-gallery.tistory.com데드락 원인 찾기데드락의 원인을 찾기 위해 MySQL을 확인해 볼 필요가 있습니다...
[포텐데이 409-1pick] 분석 서비스 개발 중 만난 데드락과 동시성 문제 해결기 (1)
·
Project
이번 포스팅은 분석 서비스를 개발하다 만난 데드락을 해결하는 과정을 담았습니다.감정 분석 서비스 미리 보기기존 서비스에 이용자를 모으기 위해 고도화하는 프로젝트 중 하나가 `감정 분석 서비스`입니다.핵심 기능사용자가 작성한 편지를 `Clova API`를 이용해 `감정 분석`을 수행하고, 하루에 작성한 편지들을 바탕으로 `데일리 리포트`를 발행하는 서비스입니다.제약 사항: 비용이 발생하는 외부 API인 `Clova API` 를 최소한으로 사용한다.핵심 기능은 비용이 발생하는 외부 API를 사용하기 때문에 최소한으로 사용해야 하는 제약 사항이 있습니다.편지마다 감정 분석은 `1회만 수행`해야 한다.데일리 리포트는 `하루에 한 번만 생성`돼야 한다.이런 제약 사항을 해결하기 위해 한 번의 `Clova API`..