← Back to list

‘님’이라고 불러다오

모두의 주차장 추첨 시스템 도입기

JOBKO_조다희 in worxphere-tech · 2024-09-30 03:18 · 73 claps · 4.2 min read
#tech #mssql #newid #programming #services
Open on Medium ↗
Wiki topics: 💻 · Programming

JOBKOREA X ALBAMON

‘님’이라고 불러다오

모두의 주차장 추첨 시스템 도입기

안녕하세요. 잡코리아 사내플랫폼개발팀 조다희입니다. 😊

잡코리아 사내 복지 중의 하나인 주차장 자리 추첨(a.k.a 모두의 주차장)에 대한 히스토리와 “님” 호칭 문화에 대한 전반적인 설명을 드리려고 합니다.

“님” 호칭

2024년 1월, 잡코리아의 직급 체계가 변경되었습니다. 잡코리아는 직급 체계 개편을 통해 수평적 조직 문화를 조성하고, 구성원 간 열린 소통을 지향하는 의미로 직위 구분을 폐지하고 ‘이름+님’ 호칭 문화가 도입되었습니다.

님아

님아

모두의 주차장이 뭔가요? 🤔

“모두의 주차장”이란 잡코리아의 복지 중 하나인 회사 오피스(교대/강남)의 주차장 자리 추첨 기능을 제 마음대로(?) 명칭 한 것으로 기존 직책자들에게만 주어졌던 복지가 모든 임직원에게도 기회가 주어지면 좋겠다는 취지로 만들어진 기능입니다.

주차장 자릿수는 정해져 있기 때문에 아쉽게도 모든 임직원이 사용할 수는 없습니다.😭 하여 자차로 출근하는 주차장 자리가 필요한 임직원이 장거리/랜덤 본인에게 맞는 유형으로 주차장 자리를 신청하면 장거리는 신청한 사람들 중 가장 집과 회사와의 거리가 먼 사람 기준으로, 랜덤은 무작위로 추첨 되어 당첨 결과가 결정됩니다.

생각보다 간단한 기능이기 때문에 시스템 구성이나 순서도 등 자세한 기술적 이야기는 생략하겠습니다.

그 . 러 . 나

잡코리아 사내에는 주차장 자리 추첨과 동일한 기능으로 콘도 추첨도 있는데요, 가끔 임직원분들 중

😒 : “정말 랜덤인가요? 왜 저는 매번 떨어지죠?”

라는 의문들을 가지시는 분들이 계시는 것 같아 해당 기능을 개발한 저는!!! 기회가 될 때 꼭 이 기능이 어떻게 랜덤으로 구성이 되었는지를 말씀드려야겠다고 생각했습니다. 전 당당하니까요.

“NEWID() 왕 쉽고, 왕 간단하다.”

사내 시스템의 랜덤 추첨을 구현하는 방법으로 아래 3가지 방법 중 고민했습니다.

  1. MSSQL RAND() 함수
  2. MSSQL NEWID() 함수
  3. 프로그래밍 언어를 통한 방법 (사내 추첨 사이트의 경우 C#)

- RAND() 함수 장점 간단한 난수 생성: RAND()는 실수형 난수를 생성하여 범위 내의 값으로 변환하기 쉬워 직관적입니다. 성능: 대량의 데이터를 처리할 때, 성능이 더 나을 수 있습니다. 특히, 큰 데이터셋에서 무작위로 값을 선택할 때 빠릅니다. 단점 중복 가능성: RAND()는 같은 시드 값을 사용하면 같은 값을 생성하므로, 중복될 가능성이 있습니다. 실제 난수성: RAND()는 의사 난수 생성기이므로, 예측 가능한 패턴이 있을 수 있습니다.

- NEWID() 함수🎉 장점 고유성 보장: NEWID()는 GUID를 생성하므로, 중복이 발생할 확률이 매우 낮습니다. 단순성: SQL Server 내에서 직접 호출할 수 있어 추가적인 프로그래밍 없이도 사용이 가능합니다. 편리함: 데이터베이스 내에서 직접 데이터 필터링 및 정렬할 수 있어, SQL 쿼리와 함께 사용하기 좋습니다. 단점 성능: 많은 수의 행에 대해 NEWID()를 호출할 경우 성능 저하가 발생할 수 있습니다.

- 프로그래밍 언어를 통한 방법 장점 유연성: 다양한 난수 생성 알고리즘을 사용할 수 있으며, 더 복잡한 로직을 구현할 수 있습니다. 사용자 정의: 다양한 데이터 구조와 알고리즘을 사용하여 더 다양한 방식으로 추첨 로직을 설계할 수 있습니다. 단점 복잡성: 추가적인 코드와 로직이 필요하므로 구현과 유지보수가 복잡할 수 있습니다. 성능: 데이터베이스와의 상호작용이 필요할 경우, 네트워크 지연이나 데이터 전송에 따른 성능 저하가 있을 수 있습니다.

제가 개발한 추첨 기능은 잡코리아 사내에서만 사용되기 때문에 모집단이 적고(최대 500명) 고유성이 보장되어야 합니다. 하여, 해당 조건을 모두 충족하면서 사용하기 쉬운 NEWID() 함수를 사용하기로 하였습니다. 관리자가 추첨 버튼을 누르는 이벤트가 발생할 경우 해당 추첨 신청자들을 리스트업하여 각 신청자마다 NEWID() 함수로 랜덤의 GUID를 발행하고 그 값을 기준으로 오름차순 하여 당첨/미 당첨 처리를 합니다.

어떤 방법을 선택할지는 요구 사항, 데이터 규모, 성능 및 중복 허용 여부에 따라 다릅니다. 저와 비슷한 스펙의 기능을 구현하실 경우 NEWID()를 적극 추천드립니다.👍

모두의 주차장, 수평적인 문화를 위한 기능입니다.

잡코리아 직급 체계 개편, 모두의 주차장 도입 등은 고객과 회사, 서비스를 위하여 해야 할 이야기라면 직위나 직급 상관없이 누구나 수평적으로 이야기할 수 있는 문화를 만들기 위한 것입니다. 잡코리아 내의 수평적인 문화를 정착시키기 위한 노력은 계속될 예정입니다.

앞으로의 더 나은 잡코리아를 기대해 주세요!


메타데이터
post_id
80e2a56f85eb
slug
님이라고-불러다오-80e2a56f85eb
url
https://techblog.jobkorea.co.kr/%EB%8B%98%EC%9D%B4%EB%9D%BC%EA%B3%A0-%EB%B6%88%EB%9F%AC%EB%8B%A4%EC%98%A4-80e2a56f85eb
canonical_url
https://techblog.jobkorea.co.kr/%EB%8B%98%EC%9D%B4%EB%9D%BC%EA%B3%A0-%EB%B6%88%EB%9F%AC%EB%8B%A4%EC%98%A4-80e2a56f85eb
author_url
https://medium.com/@dhcho_93046
status
ok
fetched_at
2026-07-22 16:46:20