난수 생성 시 random과 uuid

이민석·2022년 1월 23일
0

uuid

목록 보기
1/1

난수 생성

주문번호 생성을 위한 난수는 어떻게 만들까?

이번 mycodetrip 프로젝트를 진행하면서 결제 페이지API를 만들었다. 여러 고객정보를 POST로 요청받았고, 그 중에 주문번호 생성이 포함되어 있었다. "랜덤 4자리" + "핸드폰 마지막 4자리" 형태의 난수로 생각했고, random string을 선택했다.

random string

string을 import하고 string.digits를 사용하면 '0~9'까지 숫자를 문자열로 선언할 수 있다. 이 문자열을 이용해 length를 선언하고, for문을 돌려 사용하는 방법을 선택했다.

기존의 기획에 따라 4자리 + 4자리 형태로 앞의 4자리는 난수를 생성했고, 뒤의 4자리는 고객정보에서 핸드폰 뒷자리를 이용하여 주문번호를 생성했다. 하지만, 이 경우에는 경우의 수가 적어서 중복될 확률이 높고 확장성을 생각했을 때 바꿀 필요가 있다고 생각했다.

그래서 클론한 홈페이지의 기획을 바꾸어 uuid를 이용한 난수 생성을 선택했다.

uuid에는 1, 3, 4, 5 네가지 버전이 있다. 그 중에서 uuid.uuid4()를 사용하면 랜덤한 수를 생성하므로, 주문번호 생성에 적합하다고 생각했다.

앞의 7줄의 코드보다 복잡한 난수를 생성하지만, 훨씬 간소화되었다.

uuid에 대한 간단한 설명
-> 네트워크 상에서 고유성이 보장되는 id를 만들기 위한 표준 규약.

uuid는 서기 3400년까지 중복되지 않는다고 한다. 중앙 관리 환경이 아닌 분산 관리 환경에서도 id의 유일성을 지키기 위해 탄생했다.

uuid는 1, 3, 4, 5 네가지 버전이 있다. 버전1은 타임스탬프를 기준으로 생성되며, 버전4는 랜덤 생성이다. 버전3, 5는 각각 MD5, SHA-1 해쉬를 이용해 생성하는 방식이다. 위의 주문번호에 버전4를 사용한 이유도 랜덤 생성이다.

어떤 로직으로 설계해야할까도 중요하지만, 더 효율적인 기능을 찾는 것도 중요한 능력이라고 생각한다. 이런 부분이 앞으로 계속 공부해야 하는 이유가 아닐까?

profile
오늘은 무엇을 배울까

0개의 댓글