인프런 커뮤니티 질문&답변
네임드 락 사용 시 커넥션 풀을 분리하는 방법에 대한 질문
작성
·
12
·
수정됨
0
1. 현재 학습 진도
몇 챕터/몇 강을 수강 중이신가요? 4-10
2. 어려움을 겪는 부분
강의 끝 부분에서 네임드 락을 위한 커넥션과 일반 트랜잭션을 처리하는 커넥션을 분리시켜서 중요한 트랜잭션 처리에 영향을 주지 않는 방법을 말씀해주셨습니다.
제가 기술면접을 보면서 서킷 브레이커라는 내용을 접하게 되었는데, 이 부분이 해당 내용과 연관이 있는건지 궁금합니다.
정확히는 외부 API의 호출 지연으로 인해 스레드 풀이 고갈되는 상황에서 어떻게 설계할 것인지에 대한 질문이었고, 이 과정에서 예시 키워드로 서킷 브레이커 Bulk Head가 있었습니다.
또한, 실제 실무 환경에서는 커넥션 풀을 분리하기 위해 어떤 방법들을 사용하는지 궁금합니다! Q&A로 설명이 어렵다면, 키워드라도 알고 싶습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. cho766님.
네임드 락 사용 시 커넥션 풀을 분리하는 방법에 대한 질문을 하셨군요. 네임드 락은 분산 환경에서 여러 트랜잭션 간의 자원 접근을 조율하기 위한 방법으로, 커넥션 풀을 분리하는 전략은 성능을 최적화하고 한 트랜잭션이 다른 트랜잭션에 영향을 미치지 않도록 하기 위해 사용됩니다.
커넥션 풀 분리의 이유
- 성능 최적화: 네임드 락과 일반 트랜잭션을 다른 풀에서 처리함으로써 락이 걸린 트랜잭션이 다른 트랜잭션의 성능에 미치는 영향을 줄입니다.
- 리소스 격리: 각 트랜잭션 유형이 독립적으로 자원을 사용할 수 있도록 하여, 자원 고갈 등의 문제를 방지합니다.
커넥션 풀 분리를 위한 방법
- Spring Boot 사용 시: 여러 DataSource를 설정하여 네임드 락과 일반 트랜잭션을 분리된 동작 환경으로 실행할 수 있습니다. 두 개의 DataSource를 정의하고, 각기 다른 Hibernate EntityManager를 통해 접근하면 됩니다.
- HikariCP 사용: HikariCP의 설정을 통해 각 커넥션 풀의 최대 크기 또는 최소 유휴 시간을 맞춤 설정할 수 있습니다.
- 구성: 환경 변수나 Configuration 파일을 통해 필요에 따라 설정을 동적으로 분리할 수 있습니다.
서킷 브레이커와의 관계
서킷 브레이커는 실패한 호출을 잠시 중단하여 시스템의 안정성을 높이는 패턴입니다. 커넥션 풀 분리와 서킷 브레이커는 직접적으로 연관되기보다는, 시스템 리소스의 안정적인 사용과 보호라는 측면에서 동일한 목표를 가집니다.
다음의 링크에서 관련 내용을 확인하시면 도움이 될 것입니다:
- Spring Boot에서 여러 DataSource 설정
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




