
회원가입을 진행하는데 회원이름이 겹치지 않게 unique 조건을 걸어두었습니다. 그리고 간단히 중복되는 이름으로 가입하는 테스트를 만들어 중복될 경우 어떤 Exception이 발생하는지 해보았습니다. 결과는 아무 예외도 일어나지 않았습니다. 쿼리를 보면 두번의 회원가입 모두 정상처리가 되어있습니다. ??? 분명히 중복인데 ??? unique 설정이 잘못 되었나 싶어 MySQL DB를 확인해 보았습니다. member_name 기준으로 Unique가 True인 인덱스가 잘 생성되어 있습니다. 그렇다면 문제는 JPA에 있다는 것 테스트에서 @Transaction을 제거한 결과 DataIntegrityViolationException이 발생하였습니다. 객체를 저장하는 JPA 영속성 컨텍스트에서는 unique속성..

이번에는 MSA(Micro-Service Architecture)를 구성하는데 있어 하나의 서비스에 해당하는 채팅기능을 개발해봅니다. 가용성을 위해 서버를 여러대로 확장하는 Scale-Out 을 하고 다양한 기술들을 활용해 볼텐데 사용될 기술의 사용 목적을 간단히 설명하고 시작하겠습니다. 구독/발행 기반의 STOMP 채팅 MessageBroker로 Kafka 채팅내역을 저장하기 위한 MongoDB 여러대의 서버관리, 트래픽 분산처리와 장애복구를 위한 Kubernetes Kafka와 MongoDB는 kubernetes 내부가 아닌 외부IP 에서 사용한다고 가정합니다. 대략적인 구조 데이터 처리 과정 사용자가 Stomp 커넥션을 요청 Kubernetes LoadBalancing으로 여러대의 서버중 하나와 연..

이전에 Spring Cloud Loadbalancing을 사용해 로드밸런싱 환경을 구성하고 RabbitMQ 메세지 브로커를 사용해 가용성을 높이는 아키텍처 구조를 설계하고 구현해보았습니다. 2023.07.25 - [Spring/채팅앱] - [Spring 채팅앱 성능 개선기 5] Spring Cloud LoadBalancing 적용 [Spring 채팅앱 성능 개선기 5] Spring Cloud LoadBalancing 적용 이전게시글 2023.07.13 - [Spring/채팅앱] - [Spring 채팅앱 성능 개선기 4] Redis Cache 적용 [Spring 채팅앱 성능 개선기 4] Redis Cache 적용 이전 게시글 2023.07.06 - [Spring/채팅앱] - [Spring 채팅앱 성능 개선..

이전 포스트 2023.07.25 - [Spring/채팅앱] - [Spring 채팅앱 성능 개선기 5] Spring Cloud LoadBalancing 적용 [Spring 채팅앱 성능 개선기 5] Spring Cloud LoadBalancing 적용 이전게시글 2023.07.13 - [Spring/채팅앱] - [Spring 채팅앱 성능 개선기 4] Redis Cache 적용 [Spring 채팅앱 성능 개선기 4] Redis Cache 적용 이전 게시글 2023.07.06 - [Spring/채팅앱] - [Spring 채팅앱 성능 개선기 3] Cac wans1027.tistory.com 로드밸런싱을 적용하면서 문제가 생겼습니다. 현재는 발행(pub)과 구독(sub)의 서버 포트가 같아야만 통신이 가능합니다. ..

이전게시글 2023.07.13 - [Spring/채팅앱] - [Spring 채팅앱 성능 개선기 4] Redis Cache 적용 [Spring 채팅앱 성능 개선기 4] Redis Cache 적용 이전 게시글 2023.07.06 - [Spring/채팅앱] - [Spring 채팅앱 성능 개선기 3] Cache 설계 전략 [Spring 채팅앱 성능 개선기 3] Cache 설계 전략 이전글 보러가기 2023.07.04 - [Spring/채팅앱] - [Spring 채팅앱 성능개선 wans1027.tistory.com 서비스와 트래픽 규모가 커진다면 가용성을 보장하기 위해 Scale-Out이 반드시 필요합니다. 이번에는 서버의 가용성을 높이는 가장효과적인 방법인 LoadBalancing을 적용해보겠습니다. LoadB..

이전 게시글 2023.07.06 - [Spring/채팅앱] - [Spring 채팅앱 성능 개선기 3] Cache 설계 전략 [Spring 채팅앱 성능 개선기 3] Cache 설계 전략 이전글 보러가기 2023.07.04 - [Spring/채팅앱] - [Spring 채팅앱 성능개선기 2] Cache를 이용한 속도향상 [Spring 채팅앱 성능개선기 2] Cache를 이용한 속도향상 성능개선기 1편을 이어나가 2편 시작합니다. 20 wans1027.tistory.com 남은 문제점을 되짚어 봅시다. 로컬 캐시를 사용하므로, Scale-Out에 적합하지 않다. RAM용량은 제한적인데, 채팅방이 늘어남에 따라 캐시가 무한정으로 늘어날 수 있어 제한이 필요하다. 오늘은 REDIS를 활용해 남은 문제점들을 한번에 ..

이전글 보러가기 2023.07.04 - [Spring/채팅앱] - [Spring 채팅앱 성능개선기 2] Cache를 이용한 속도향상 [Spring 채팅앱 성능개선기 2] Cache를 이용한 속도향상 성능개선기 1편을 이어나가 2편 시작합니다. 2023.07.03 - [Spring/채팅앱] - [Spring 채팅앱 성능개선기 1] JPA 쓰기지연을 활용한 채팅내역 저장 [Spring 채팅앱 성능개선기 1] JPA 쓰기지연을 활용한 채팅내 wans1027.tistory.com 이전 포스트에서는 채팅을 보낼 때만 캐시가 생성되고 저장되었습니다. 오늘은 캐시 불러오는 로직을 Cache 설계 전략에 맞춰 개발해보겠습니다. Cache 전략 캐시를 이용하게 되면 반드시 닥쳐오는 문제점이 있는데 바로 데이터 정합성 문..

성능개선기 1편을 이어나가 2편 시작합니다. 2023.07.03 - [Spring/채팅앱] - [Spring 채팅앱 성능개선기 1] JPA 쓰기지연을 활용한 채팅내역 저장 [Spring 채팅앱 성능개선기 1] JPA 쓰기지연을 활용한 채팅내역 저장 이전 포스트에서 STOMP를 이용해 웹소켓 실시간 채팅을 구현해 보았습니다. 실시간 채팅은 되지만 채팅방에 나갔다 들어오면 저장된 기록이 없어 기존 채팅 내역이 리셋됩니다. 이를 해결하기 위 wans1027.tistory.com 1편에 문제점들이 있었습니다. 큐사이즈만큼 요청이 들어와야 DB에 저장된다. 서버 내 메모리에 큐를 저장하는 방식이라 메모리 용량의 한계가 있다. 위의 이유로 서버 하나에 저장하는 방식이라 여러 서버를 로드밸런싱할 경우 다른 서버와 공..
- Total
- Today
- Yesterday
- spring orphan
- Authentication
- 로컬캐시
- Vmmem종료
- Stomp RabbitMQ
- springboot
- 웹소켓 채팅
- Spring WebSocket
- nativeQuery
- ERD설계
- Spring 채팅
- Vmmem
- ChattingApp
- FCM
- 게시판 채팅
- Bcypt
- loadbalancing
- Flutter
- Kubernetes
- Spring RabbitMQ
- Spring Stomp
- Spring
- Stomp Kafka
- 푸시알림동작원리
- Cache
- authorization
- bcrypt
- MessageBroker
- Spring 대댓글
- Security
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |