Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

멀티 서버에서의 스케줄을 처리한다 (ShedLock) #142

Open
twoosky opened this issue Dec 13, 2023 · 2 comments
Open

멀티 서버에서의 스케줄을 처리한다 (ShedLock) #142

twoosky opened this issue Dec 13, 2023 · 2 comments
Assignees

Comments

@twoosky
Copy link
Member

twoosky commented Dec 13, 2023

문제 상황

gloddy 서버는 알림 전송을 위해 1분마다 스케줄러가 수행되고, 이벤트를 발행합니다. 추후 트래픽이 증가해 오토 스케일링을 사용한다면, 각 서버에서 스케줄러가 실행되어 이벤트가 중복 발행될 위험이 있습니다.

해결 방법

ShedLock을 구현해 해결할 수 있습니다. ShedLock은 데이터 저장소에 스케줄링 작업에 대한 데이터를 삽입/갱신하여 각 인스턴스들이 해당 작업의 진행 여부를 공유할 수 있도록 합니다. ShedLock은 작업을 수행하기 전 데이터 저장소에 해당 작업에 대한 데이터를 삽입합니다. 데이터 삽입에 성공하면, 해당 인스턴스에서 작업을 수행합니다. 데이터 삽입에 실패하면 다른 인스턴스에서 수행 중인 작업이므로 작업 실행을 건너뜁니다. 작업이 완료되면 데이터 저장소에서 해당 작업에 대한 레코드를 삭제하여 잠금을 해제합니다.

그리고 만약 잠금을 보유한 즉, 작업 수행 중에 인스턴스가 다운되는 경우 ShedLock은 일정 시간 이후 잠금을 해제해 다른 인스턴스가 작업을 수행할 수 있도록 합니다. 스케줄 작업에 대한 분산 락과 같은 개념입니다.

ShedLock 공식 Repository : https://github.com/lukas-krecan/ShedLock

@jihwan2da
Copy link
Member

현재는 트래픽이 크지 않고(오토 스케일링 할 일이 없음), 개발할 부분이 많아 빠른 개발이 요구되는 상황에서 이 부분은 현재 기준으로 개발 리소스 낭비 아닐까요??

@twoosky
Copy link
Member Author

twoosky commented Dec 19, 2023

현재는 단일 서버이기 때문에 당장 해결해야할 이슈는 아니라고 생각합니다. 지금은 기능 개발이 우선인거 같아요. 그래도 추후 꼭 필요한 작업이라고 생각해 이슈 생성해뒀습니다. 기능 개발 후 작업하겠습니다 🫡

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants