본문 바로가기
[PlayHive] Redisson을 제거했더니, 성능이 2.5배 빨라졌다 - 추천 기능 리팩토링의 두번째 진화 "락은 정말 필요했던 걸까?" 코드 리뷰 도중 백엔드 팀원은 한 마디가 시작이었다."이거... Redisson 분산락 쓰셨던데, 추천 수가 자주 바뀌고 조회도 많은 API잖아요? 락 계속 쓰면 오히려 병목 되지 않을까요?" 🔍 질문에서 시작된 새로운 고민기존에 Redisson을 도입해 추천 기능에 분산락을 적용한 이유는 명확했다:"추천은 사용자별 중복을 막아야 하고, 멀티 인스턴스에서도 정합성이 보장되어야 하니까." 그러나 새로 합류한 팀원의 질문은 단순히 도구 사용 여부가 아니라, 설계 자체의 적합성을 다시 돌아보게 만들었다.“추천이면, 락보다 Redis에서만 처리하고 나중에 DB로 밀어넣는 방식이 더 좋지 않을까요?” 🧠 생각의 전환 – 도구보다 데이터 흐름이 먼저다사실 처음엔 멀티 인스턴스 환경.. 2025. 6. 26.
[PlayHive] Headless Chrome 크롤링 시 좀비 프로세스 정리 및 메모리 문제 해결 방법 기존에 batch 서버를 구축하여 크롤링을 진행하시던 백엔드 개발자 분이 팀을 나가시면서 작업하셨던 부분을 넘겨받아 운영중에 일어나는 에러나 크롤링 코드를 유지보수하게 되었다.배치 인스턴스가 갑자기 중단되거나 크롤링이 메모리문제로 Fail뜨는 경우가 종종 있었는데 내가 넘겨받게되면서 문제를 해결하고 싶어서 이것저것 살펴보게되었다. 그래서 이 포스팅은 Playhive 서비스 뉴스 크롤링 배치 서버에서 발생한 문제 해결 사례를 공유하려고 한다. 우선 작업을 넘겨받게 되고나서, 뉴스 크롤링이 while문을 사용하여 새로운 뉴스를 모두 가져오는 것이 좋지만 현재는 끊기지 않고 운영이 잘되는것이 목표이며, 모든 뉴스를 가져오지는 않는 전제로 스크롤 max 수치를 정하여 크롤링하도록 코드 수정하였다.또한, WebD.. 2025. 6. 18.
[PlayHive] S3 PresignedUrl 기반 파일 업로드/삭제 API 구현기 (with AWS & MinIO) 게시판이나 댓글과 같은 커뮤니티 기능에서 이미지/동영상 업로드가 필요해져서 S3를 이용해서 파일 업로드를 구현하게 되었다.서버에서 파일을 직접 받아 S3에 업로드하는 구조도 고려했지만, 다음과 같은 이유로 Presigned URL 방식을 선택했다.🔒 보안 강화서버를 거치지 않고 클라이언트가 직접 S3에 업로드함으로써, 서버에 파일이 직접 노출되지 않음Presigned URL에 유효시간 제한을 둠으로써, 만료된 URL로는 접근이 불가능업로드 가능한 경로와 권한을 세밀하게 제어 가능 (ex. 특정 경로에만 PUT 허용)🚀 성능 향상파일이 서버를 거치지 않고 바로 S3로 전송되기 때문에 서버 부하 감소서버의 네트워크 I/O와 메모리 사용량 절감🧱 시스템 아키텍처 분리업로드/다운로드 로직이 스토리지와 클라.. 2025. 6. 18.
[PlayHive] Redis, Redisson 으로 조회수·댓글수·추천수 처리 성능 44% 향상시키기 📌 이글 이후, Redisson 분산락 구조 역시 다시 점검하게 되면서 성능을 더 끌어올리기 위한 리팩토링을 진행했습니다.👉 2025.06.26 - [# Study/프로젝트] - [PlayHive] Redisson을 제거했더니, 성능이 2.5배 빨라졌다 - 추천 기능 리팩토링의 두번째 진화 [PlayHive] Redisson을 제거했더니, 성능이 2.5배 빨라졌다 - 추천 기능 리팩토링의 두번째 진화"락은 정말 필요했던 걸까?"코드 리뷰 도중 백엔드 팀원의 한 마디가 시작이었다."이거... Redisson 분산락 쓰셨던데, 추천 수가 자주 바뀌고 조회도 많은 API잖아요? 락 계속 쓰면 오히려 병목 되지jiy0ung.tistory.com🎯 프로젝트 배경과 기능의 목적이 글은 스포츠 커뮤니티 서비스 .. 2025. 6. 17.
[PlayHive] 댓글/대댓글 구조 리팩토링하기 🎯 프로젝트 배경과 기능의 목적본 리팩토링은 스포츠 커뮤니티 서비스 Playhive의 댓글/대댓글 기능 개선을 위한 작업입니다.Playhive는 게시판, 뉴스, 경기 예측 등 다양한 콘텐츠를 중심으로 팬들이 소통하는 플랫폼으로, 사용자 간 활발한 상호작용을 위해 댓글 기능이 핵심적으로 사용됩니다.특히 “내가 쓴 댓글 보기” 기능 추가 요청이 들어오면서, 기존 구조에서 성능 문제와 유지보수 이슈가 불거졌고, 이에 따라 전체 댓글 시스템의 구조를 재설계하게 되었습니다.이 글에서는 기존 설계의 한계를 짚고, 이를 어떻게 단일 테이블 구조로 리팩토링하여 성능과 확장성을 개선했는지를 써본 정리글입니다.❗️기존 설계의 한계점을 만나다...처음 DB를 설계 할 당시 게시판/뉴스/경기 예측 등 카테고리 마다 별도의 .. 2025. 6. 11.