본문 바로가기

CS2

Cache vs MQ 성능 개선을 위해 무엇을 도입해야 할까?? 최근 성능 개선을 위해 Redis(캐시)나 Kafka(메시지 큐)를 가장 먼저 떠올리곤 합니다. 결론부터 말하면 성능 저하의 정확한 원인을 파악하여 읽기 성능의 병목을 해결하기 위한 캐시 도입인지, 혹은 쓰기 및 데이터 저장이나 복잡한 로직 처리의 부하를 분산하기 위한 메시지 큐 도입인지를 명확히 결정하는 것입니다. 캐시(Cache)캐시는 자주 사용하는 데이터나 복잡한 계산 결과를 메모리에 미리 저장해 두었다가 필요할 때 즉시 재사용함으로써, 데이터 접근 시간을 단축하고 데이터베이스의 읽기 부하를 효과적으로 줄여주는 기술입니다. 좋은 상황반복되는 데이터 조회: 동일한 데이터(예: 공지사항, 베스트 상품 목록)를 반복해서 조회하는 경우계산 비용이 큰 작업: 복잡한 쿼리나 통계 작업 결과를 매번 계산하기.. 2026. 1. 26.
Deadlock과 Livelock 개념 정립 with Java 멀티스레드 환경이나 분산 시스템에 리소스 관련 용어 중 가장 대표적인 것이 바로 데드락과 라이브락입니다. 두 용어의 네이밍으로만 봐서 어느정도 이해할 수 있습니다. 하지만 개발자 관점에서 어떠한 차이점이 있는지 분명하게 알아야 되기 때문에 이 두 용어에 대해서 알아보겠습니다. 데드락 (Deadlock)데드락은 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리느라 대기 상태로 멈춰버린 상태를 의미합니다. 조금 풀어서 이야기 하면 자신이 가진 자원은 절대 놓지 않으면서 상대방이 가진 자원만 얻으려고 버티다 보니, 결국 무한 대기에 빠져 아무런 작업을 못하게 되는 상태입니다. 시스템적으로 설명하면 스레드가 Blocked / Waiting 상태에 머물며, CPU 사용률이 0%에 수렴하여 시스템이 .. 2026. 1. 25.