해결된 질문
작성
·
110
·
수정됨
0
안녕하세요 선생님
동시성 처리 방법에는 redisson을 활용한 방법도 있는데요 혹시 이 방법은 언제 써야할까요?
감사합니다
답변 2
0
wnsqud70님, 안녕하세요!
redisson은 레디스 클라이언트 라이브러리일 뿐이고, 결국 레디스를 이용한 분산락을 말씀하신 것 같습니다.
분산 시스템에서 락을 잡고자 한다면 언제든 사용해도 됩니다!
다만, 강의에서 진행하는 좋아요 수 데이터는 메인 데이터베이스로 MySQL을 사용하고,
MySQL의 트랜잭션과 로우락을 이용하여 문제를 해결하고 있습니다.
이미 MySQL에서 해결책을 제시하고 있는 상황인데, 타 DB를 도입하는 것은 시스템 복잡성과 운영 비용을 높일 수 있습니다.
하지만 로우락 잡는 것 자체도 DB에 더 큰 부담을 주는 것이고, 메인 DB의 리소스는 가장 중요할 수 있으므로,
락에 대한 처리를 레디스와 같은 타 DB로 이관하는 것도 가능한 선택지 중에 하나입니다.
인메모리 기반이라 더욱 빠르고, 메인 DB 부담을 줄여준다는 장점이 있겠네요.
문제 없는 범위에서는 복잡성/운영 비용/성능 등 고려하여 다양한 도구를 활용할 수 있을 것 같습니다.
타 DB 연동할때 고려할만한 부분은,
트랜잭션이 시작됨에 따라 MySQL 커넥션을 물고 있을텐데, Redis 장애로 인해 지연이 발생하면, MySQL 리소스가 낭비될 수 있는 등 여러 문제 사항에 대해서 검토가 필요할 것 같습니다. 관련해서 개발 비용이 높아질 수 있다는 점도 같이 고려 대상이 될 수 있겠네요.
그리고 분산락은 이후 강의 진행하다보면 사용하게 됩니다!
혹시 더 궁금한 점 있으시면 편히 문의 주세요!
0
안녕하세요, 인프런 AI 인턴입니다. wnsqud70님.
스프링부트 프로젝트에서 동시성 문제를 해결하기 위해 다양한 방법이 존재하며, 그중 Redisson을 활용한 방법도 있습니다. Redisson은 자바에서 Redis와 결합해 분산 환경에서의 다양한 기능을 제공하는 라이브러리입니다.
분산 락: Redisson은 Redis의 기능을 사용하여 분산된 환경에서도 락을 관리할 수 있는 메커니즘을 제공합니다. 여러 노드가 동시에 자원에 접근하는 상황에서는 Redisson을 활용한 분산 락이 유용할 수 있습니다.
고가용성: 시스템이 여러 인스턴스로 구성되어 있고, 어디서든 동일한 자원 관리가 필요할 때 Redisson을 통해 락을 관리할 수 있습니다. 이는 노드의 증가에도 동일한 자원에 대한 락을 유지할 수 있게 해줍니다.
가벼운 운용: Redisson은 Redis 클러스터링과 같은 고급 기능을 통해 다중 노드에 대해 관리할 수 있으며, 네이티브 Redis에 비해 좀 더 고급 기능들을 제공합니다.
성능 요구: Redis에 의존하는 만큼 네트워크 지연에 따른 성능 이슈가 발생할 수 있어 사전 테스트가 필요합니다.
복잡성: 레거시 코드에 새로운 기술을 도입할 때 발생하는 복잡성을 고려해야 하며, 개발자의 경험과 능력에 따라 적용 여부를 결정할 수 있습니다.
관련된 심도 있는 토론과 구체적인 사례는 다음 링크에서 도움을 받을 수 있습니다:
- 백엔드 시스템에서의 Redisson 활용 사례
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
활용 사례 링크가 404가 떠요