본문 바로가기

개발

id generator 개발하기 - 1 (개요)

반응형

서버쪽에 붙힐 아이디 생성기를 제작해보겠습니다.

DB서버에서 auto inc를 이용해 구현한 아이디를 생성기로 커스텀해서 구현하는 작업입니다.

이렇게 굳이 아이디 생성기를 제작하는 이유는 고가용성을 확보하기 위한 첫 단계이기 때문입니다.

회원가입 요청이 분당 매우 많이 발생하는 상황을 가정해 보면 이를 쉽게 이해 할 수 있습니다.

이런 상황에서 가능한 해결법은 크게 두가지로 스케일 업과 아웃이 있습니다.

이때 아웃을 적용하기 위해 필요한 것 중 하나가 바로 아이디 생성기입니다.

 

회원 정보를 저장하는 2개의 디비 서버가 있다고 생각해보면 상당히 직관적입니다.

auto inc를 이용하여 아이디를 구현 한 경우 아래와 같은 문제 상황이 발생합니다.

디비 서버A로 가입 요청이 전달되면 A에서는 이를 1번 회원으로 기록합니다.

다음으로 디비 서버B로 가입 요청이 전달되면 이 역시 1번 회원으로 기록합니다.

 

이를 방지하기 위해 서버쪽에서 구분가능하고 유니크한 아이디를 생성하여 디비 서버로 요청하기 위해 생성기가 필요합니다.

 

여기 포스팅에서는 이를  twitter snoflake를 비슷하게 구현하겠습니다.

물론 실제 트위터에서는 생성기 서버를 올려 rpc, 즉 백엔드쪽에서 따로 서버끼리 통신을 구현해서 만든 것 같으나 너무 오버 엔지니어링같아 그렇게 하지 않고, 그냥 있는 서버 프로그램에 메소드 하나를 파서 구현하겠습니다.

 

참고 문서

https://en.wikipedia.org/wiki/Snowflake_ID

 

Snowflake ID - Wikipedia

UID format used by Twitter 1436814771495108608Other namesTwitter Snowflake Components of a snowflake identifier in binary Snowflake IDs, or snowflakes, are a form of unique identifier used in distributed computing. The format was created by Twitter and is

en.wikipedia.org

위 링크에 나온 그대로를 구현하겠습니다. 감사합니다.

반응형

'개발' 카테고리의 다른 글

더 자바, 코드 조작  (0) 2021.11.22
id generator 개발하기 - 2 (타임스탬프)  (0) 2021.09.22
알파벳 위키 기능 - 1  (0) 2021.08.13
알파벳 로그인 기능 개발기  (0) 2021.07.07
oracle cloud  (0) 2021.06.24