인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

박철현님의 프로필 이미지
박철현

작성한 질문수

Spring Boot를 활용하여 채팅 플랫폼 만들어보기

Transaction Manager을 활용한 WebSocket 경계 설정하기

독립적인 Transactional을 둔 이유

작성

·

23

1

음.. 코드를 보다가 강사님이 설명이 잘 이해가 가지않아서 질문 드립니다.

saveChatMessage같은 경우 트랜잭션을 따로 빈으로 등록하여 saveChatMessage호출 시 독립된 트랜잭션을 호출해서 웹 소켓과 연관된 메시지 저장 작업만 독립적으로 관리하기 위함이라고 생각하면 될까요??

보통 우리가 생각하는 웹소켓으로 메시징 작업을 하기 위해서는 실시간이기 때문에... 음 성능적인 부분과 데이터의 일관성을 유지하고 다른 트랜잭션 작업과 충돌을 방지하기 위해서 웹소켓사용시의 독립적인 트랜잭션을 사용한다라고 이해하면 될까요??

그리고 또 한가지 현재 프로젝트에서는 MySQLConfig 클래스를 따로 정의해서 커스터마이징 하였는데, 만약 커스터마이징 하지 않고 웹소켓 기능을 사용하게 되었을 때에도 독립적인 트랜잭션 기능을 사용할 수 있나요??

답변 2

0

Hong님의 프로필 이미지
Hong
지식공유자

일단 MySQL Config 클래스를 따로 선언하지 않는다면, 기본적으로 Spring에서 원자성을 관리해주게 됩니다. 그래서 사실 작업 자체가 더 편해지는 경우가 있습니다.

 

하지만 직접적으로 선언해서 다루는 이유는 상황에 따라서 어떻게 변환할지 모르기 때문입니다.

해당 설정을 사용하지 않고 있다가, 후반에 갑자기 도입하게 된다면, 코드의 변경해야 하는 부분이나 그로인해서 버그가 많이 발생할 수 있기 떄문이죠. 그래서 저는 실질적으로 실무에서는 커스터마이징 해서 사용을 하고 있습니다.

  • 따로 커스터마이징을 해주지 않는다면, 알아서 관리가 되기 떄문에 제 기억상으로는 아마 문제가 없는것으로 알고 있습니다.

 

알람을 받지 못해 질문에 대한 답변이 늦어서 죄송합니다. 질문 남겨주셔서 감사합니다 :)

0

안녕하세요, 인프런 AI 인턴입니다. 박철현님.

질문해 주신 주제인 웹소켓과 독립적인 트랜잭션 관리에 대한 이해를 돕기 위해 비슷한 주제를 다루는 기존 답변을 찾아보았습니다. 독립적인 트랜잭션을 사용하는 이유와 웹소켓 사용 시의 데이터 일관성 유지 및 성능 최적화에 대한 링크를 제공합니다.

관련 질문 및 답변:

  1. Spring에서 웹소켓과 트랜잭션 관리

  2. JPA와 웹소켓 통합 환경에서의 트랜잭션 전략

부연 설명하자면:
- 독립적인 트랜잭션 관리 이유: 트랜잭션을 독립시켜 웹소켓을 통해 수신된 메시지를 저장하는 이유는 주로 실시간 데이터 전송에서 성능 최적화 및 데이터 일관성을 유지하기 위해서입니다. 특히, 웹소켓 환경에서는 여러 사용자가 동시에 데이터를 주고받기 때문에 충돌을 방지하고, 각 메시지 저장이 다른 데이터 작업과 분리되어 안정적으로 처리되도록 하는 것이 중요합니다.

  • MySQLConfig 커스터마이징: MySQLConfig 클래스가 제공하는 기능을 통해 데이터베이스와의 세션 관리 및 트랜잭션 처리를 커스터마이징할 수 있습니다. 만약 커스터마이징 없이도 웹소켓 기능을 사용하고 싶다면 기본적인 트랜잭션 관리 설정으로 충분할 수 있습니다. 그러나 프로젝트의 복잡성이나 요구 사항에 따라 이러한 설정을 조정하는 것이 장기적으로 더 안정적인 운영에 도움이 될 수 있습니다.

위의 링크들이 질문자의 이해를 도울 수 있을 것입니다. 웹소켓과 독립적 트랜잭션 관리에 관련하여 보다 실제적인 예제와 설명을 포함하고 있어, 강의 내용을 좀 더 깊이 이해하는 데 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

박철현님의 프로필 이미지
박철현

작성한 질문수

질문하기