Tsunayoshi Tsuna Sawada - Katekyo Hitman Reborn 3 'Spring' 카테고리의 글 목록 — 개발하는 핸니
[ Spring ] 비관적 락 성능 개선을 해보자
·
Spring
Notion에서 작성 된 글입니다. 템플릿이 깨진다면 Notion을 확인해주세요. 비관적 락 성능 개선을 해보자 | Notion들어가기 앞서 . . .hail-buttercup-c86.notion.site 들어가기 앞서 . . .동시성 보장을 위해 비관적 락을 적용했지만, 부하 테스트에서 TPS가 1.3으로 너무 낮게 측정되는 문제를 확인했다.락 자체를 포기하지 않은 상태에서(=비관적 락 유지) 어디에서 병목이 생기고 무엇을 줄이면 성능을 끌어올릴 수 있는지 검증·개선해 보고자 이 글을 정리했다. 비관적 락 적용 후 성능부하 테스트를 진행하며 성능이 너무 느리게 나와 가장 먼저 드는 의문이 DB가 잘못설계되었나?라는 생각이 들었다.쿼리를 개선할 수 있는 부분이 있지 않나해서 요청할 때 실행되는 SQL..
[ 트러블슈팅 ] HikariPool-1 - Connection is not available, request timed out after...
·
Spring/Error
Notion에서 작성 된 글입니다. 템플릿이 깨진다면 Notion을 확인해주세요. https://hail-buttercup-c86.notion.site/DB-HikariPool-1-Connection-is-not-available-request-timed-out-after-266a011d2d8380ac81b5ec3b9d4d5ed5?pvs=74 [DB] HikariPool-1 - Connection is not available, request timed out after… | Notion들어가기 앞서..hail-buttercup-c86.notion.site 들어가기 앞서..📄 티켓 이벤트 성능 테스트 과정에서 발생한 트러블 슈팅입니다.문제 상황o.h.engine.jdbc.spi.SqlExceptionH..
[ Spring ] Redis의 분산 락을 적용하고 Pub/Sub로 동시성 문제를 해결하자.
·
Spring
Notion에서 작성 된 글입니다. 템플릿이 깨진다면 Notion을 확인해주세요. Redis의 분산 락을 적용하고 Pub/Sub로 동시성 문제를 해결하자. | Notion들어가기앞서…hail-buttercup-c86.notion.site 들어가기 앞서 . . .프로젝트에서 동시성 문제를 해결하기 위해 락에 대해서 공부하고, 또 성능 개선을 위해 고민까지 해보았다.하지만 결국 락을 걸고 동시성을 해결한다는 것은, 하나의 요청을 처리하는 동안 모든 요청이 대기를 하기때문에 성능이 눈에띄게 좋아지는 것은 힘들 것 같다는 생각이 들었다.성능을 개선하기위해 구글링을 하니 ‘분산 락’이라는 것에 대한 언급이 많았다. 분산 락은 무엇일까? 한 번 알아보자. 분산 락분산락은 분산 시스템에서 여러 노드나 프로세스가 동..
[ 트러블슈팅 ]데이터 정합성 이슈: 커밋 시점으로 인해 발생한 동시성 문제
·
Spring/Error
Notion에서 작성 된 글입니다. 템플릿이 깨진다면 Notion을 확인해주세요. https://hail-buttercup-c86.notion.site/269a011d2d8380108873fb5bc477ec7f 분산 락 이후의 포인트 누적 동시성 문제 | Notion들어가기 앞서..hail-buttercup-c86.notion.site 들어가기 앞서.. 📄 동시성 성능 개선 과정에서 발생한 트러블 슈팅입니다. 분명 lock을 통해서 동시성을 보장해주었다고 생각했는데, 이벤트 누적 금액이 정상적으로 반영되지 않는 결과가 있었다. 왜 동시성이 제대로 보장되지 않았을까? 오류를 해결해보자.문제 상황필자의 서비스는 이벤트에 응모할 시, 사용자의 포인트를 차감하여 해당 포인트만큼 이벤트에 누적하게 된다.하지만 ..
[ Spring ] 동시성을 잠금으로 안전하게 처리해보자
·
Spring
Notion에서 작성 된 글입니다. 템플릿이 깨진다면 Notion을 확인해주세요. 동시성을 잠금으로 안전하게 처리해보자 | Notion들어가기앞서…hail-buttercup-c86.notion.site 들어가기앞서…이제 본격적으로 공부한 내용을 프로젝트에 적용해보고자한다.필자가 맡고있는 이벤트 기능의 주요 서비스는 여러명의 사용자가 포인트를 지불하고 이벤트에 참여하면 이벤트에 누적 금액이 쌓이게되고, 목표 금액에 달성한 사용자만이 티켓을 얻게되는 이벤트이다.때문에 동시에 여러명이 요청할 가능성이 있는 이벤트 응모 요청은 동시성 처리가 필수이다. 실습 전 읽어보면 도움되는 문서화 노트 [ CS ] LockNotion에서 작성 된 글입니다. 템플릿이 깨진다면 Notion을 확인해주세요. Lock | Not..
[ 트러블슈팅 ] 낙관적 락 동시성 처리 에러
·
Spring/Error
Notion에서 작성 된 글입니다. 템플릿이 깨진다면 Notion을 확인해주세요. 낙관적 락 동시성 처리 에러 | Notion들어가기 앞서..hail-buttercup-c86.notion.site 들어가기 앞서..동시성 테스트 과정에서 발생한 트러블 슈팅입니다. 쿠폰 이벤트의 동시성 문제를 처리하기 위해 Lock 전략 중 낙관적 락을 먼저 도입해보기로했다. 처리하기 위해 Event 엔티티에 Version 필드를 추가해주었다.문제 상황스크린샷을 첨부하여 어떤 문제가 발생하였는지 작성하자.@Getter@Entity@Table(name = "event")@NoArgsConstructor(access = AccessLevel.PROTECTED)public class Event { . . . @Versi..
[Spring OAuth] Jwt 적용한 카카오 소셜로그인 Postman으로 테스트하기
·
Spring/Security
들어가기 앞서 . . .OAuth에 대한 지식이 부족하고 전체적인 흐름을 잘 이해하지 못한 채 개발을 시작하면서, 유독 더 많은 에러를 마주하고 많은 시간을 소요했던 것 같습니다. 자체 로그인은 여러 번 구현해본 경험이 있어서 JWT 토큰 발급까지는 어렵지 않았지만, 소셜 로그인에서는 인가 코드 등 익숙하지 않은 개념과 용어들이 많아 처음부터 난관이었습니다.  보통 코드는 구글링하면서 직접 타이핑해보며 이해하는 게 빠르다고들 하죠. 저 역시 그런 방식이 익숙했고 실제로 많은 도움이 되곤 했습니다. 하지만 이번엔 다양한 블로그 포스팅을 참고하며 적용해봤지만, 생각보다 잘못된 정보가 많았고 그로 인해 같은 에러를 오랫동안 해결하지 못했습니다.결국 천천히 OAuth의 이론과 흐름을 먼저 이해한 뒤 다시 코드를..
[트러블슈팅]io.jsonwebtoken.ExpiredJwtException: JWT expired 564427
·
Spring/Error
💬 들어가기앞서 . . .JWT와 OAuth2 기반 인증 시스템을 직접 구현하면서, 생각보다 많은 예외 상황과 마주하게 되었습니다.그중에서도 accessToken이 만료된 이후의 처리 흐름에서 예상치 못한 에러가 발생하며, 인증 로직 전반을 다시 점검할 필요가 있었습니다.이 글은 refreshToken을 통한 accessToken 재발급 과정 중 발생한 에러와 그 원인, 해결 방법을 정리한 포스팅입니다.저처럼 인증 흐름을 처음 설계하거나 JWT 관련 에러로 어려움을 겪고 있는 분들께 도움이 되기를 바랍니다!🛠️ [트러블슈팅] io.jsonwebtoken.ExpiredJwtException: JWT expired 564427 문제 상황 (Issue) 프로젝트를 진행하며, 로그인 시 발급되는 access..