Junby Log

실시간 매칭 구조 리팩터링: 낙관적 락에서 MQ로 전환하기까지

문제 상황 두 명 이상이 동시에 입장할 때, 세션 정원을 충족해도 입장이 가능하다고 판단하여 정원보다 많은 사용자가 한 세션에 매칭되는 문제 두 명 이상이 동시에 입장할 때, 새로운 세션을 생성하는 과정이 중복으로 실행되며 세션이 두 개 만들어지고, 먼저 생성된 세션에는 사용자가 정상적으로 매칭되지 않는 문제 낙관적 락 처음에는 Red...

개인 도메인으로 무료 메일 보내기

회원 가입 과정에서 이메일 인증이 필요하며 이를 백엔드 서버에서 요청을 받아 인증 메일을 보내도록 할 것이다. 인증 메일은 서비스 운영 중 실제 사용자에게 보내질 메일이기 때문에 개인 메일로 보내지 않고, 사용중인 도메인으로 메일을 보낼 계획이다. 본 글은 도메인의 네임서버가 Cloudflare인 환경에서의 과정이다. 무료로 도메인으로 이메일을 보...

깃허브 수정사항을 다른 기기로 옮기려면?

밖에서는 맥북을 사용하고, 집에서는 데스크탑을 사용한다. 이렇게 개발 환경을 옮기면서 작업을 하면 커밋되지 않은 수정사항을 공유해야 한다. 어떻게 수정사항을 공유할 수 있을지 알아보자. 🚀 방법 찾아본 적절한 방법은 아래와 같이 두 가지가 있다. 1️⃣ 임시 커밋 방식 2️⃣ Patch 파일 공유 방식 📝 임시 커밋 임시로 커밋을 하고, 새로...

싱글톤 클래스 관리: Bean vs Static 방식의 차이점

Java와 Spring Boot 프로젝트 개발 시 싱글톤은 자주 사용되는 패턴 중 하나이다. 인스턴스를 하나만 생성하여 메모리 효율성을 높이고 전역적으로 동일한 객체를 사용하기 위해 사용된다. 특히 데이터를 저장하기보다 로직을 처리하는 클래스에서 주로 사용된다. 이 싱글톤 클래스를 관리하는 방법은 여러가지이고, 이 글에서는 Bean 등록 방식과 ...

Preview Image

다중 인스턴스 환경을 고려해서 소켓 통신 동기화

Socket.IO Redis adapter 공식문서 링크 지난 프로젝트를 하면서 채팅, 투표 등 실시간 데이터 반영을 위해 Socket.IO를 사용했었다. 당장은 하나의 인스턴스로 서버를 돌리고 있기 때문에 문제가 없지만, 오토 스케일링을 사용한다고 가정하고 이때 발생할 수 있는 문제를 미리 개선해보기 위해 시도하게 되었다. Socket.IO에서는...