급여 통화 주기 표기는 채용 서비스에서 가장 자주 생략되는 정보입니다. 숫자 하나만 남으면 그 값은 어느 나라의 어느 기간에 해당하는지 알 수 없는 문자열이 됩니다. 이 글에서는 급여가 왜 세 가지 값을 함께 가져야 하는지, 총 보상과 기본급이 어떻게 다른지, 그리고 환산과 보관에서 무엇을 조심해야 하는지 정리합니다.
급여는 왜 통화와 지급 주기를 함께 적어야 하나요?
숫자만 있는 급여는 비교할 수 없습니다. 같은 숫자가 연봉일 수도 있고 월급일 수도 있으며, 어느 통화인지도 알 수 없습니다. 이 상태로 목록을 정렬하면 단위가 다른 값이 한 줄에 섞여 순서가 무의미해집니다.
그래서 급여는 세 값이 한 묶음일 때만 의미를 갖습니다. 금액, 통화, 그리고 지급 주기입니다. 지급 주기는 연 단위, 월 단위, 일 단위, 시간 단위 같은 구분을 말합니다. 이 세 값이 없으면 화면에서 어떤 비교도 하지 않는 편이 낫습니다. 잘못된 비교는 없는 것보다 나쁩니다.
기본급과 총 보상은 무엇이 다른가요?
두 값은 자주 같은 것으로 취급되지만 구성이 다릅니다. 기본급은 정기적으로 지급되는 본체이고, 총 보상은 여기에 상여와 수당, 때로는 주식 같은 요소를 더한 합계입니다. 어느 쪽을 기록했는지 밝히지 않으면 같은 사람의 급여가 두 배로 보이기도 합니다.
이것은 정밀도의 문제가 아니라 구조의 문제입니다. 소수점을 더 붙인다고 해결되지 않고, 어떤 항목을 포함했는지 표시해야 해결됩니다. 화면에서도 두 값을 다른 칸으로 두고, 합계를 보여 줄 때는 무엇을 더했는지 함께 적는 편이 좋습니다.
통화 기호 대신 코드를 쓰는 이유
통화 기호는 세계적으로 겹칩니다. 같은 기호가 여러 나라에서 서로 다른 통화를 가리키고, 기호만 보고는 어느 쪽인지 판단할 수 없습니다. 반면 통화 코드는 국제 표준으로 정해져 있어 겹치지 않습니다.
저장은 코드로 하고 표시할 때 기호를 붙이는 방식이 흔합니다. 이렇게 하면 정렬과 집계가 안정되고, 나중에 표시 규칙이 바뀌어도 저장된 값을 손대지 않아도 됩니다. 화면에 기호를 보여 줄 때는 어느 통화인지 함께 밝혀 모호함을 없앱니다.
환산에는 무엇을 남겨야 하나요?
서로 다른 통화를 비교하려면 환율이 필요하고, 환율은 시시각각 변합니다. 그래서 환산 결과는 값 하나로 끝나지 않습니다. 어떤 환율을 언제 기준으로 적용했는지가 함께 남아야 나중에 같은 결과를 다시 만들 수 있습니다.
여기서 구체적인 환율 수치를 서비스가 문서에 적는 일은 피해야 합니다. 환율은 기준 시점에 따라 달라지므로 문서에 적힌 값은 곧 틀린 값이 되고, 무엇보다 그런 값은 공식 출처에서 확인해야 할 사항입니다. 서비스가 할 일은 기준 시점을 기록하고, 비교 화면에서 어느 시점의 환산인지 보여 주는 것입니다.
급여 항목의 개인정보 경계
급여는 민감한 정보입니다. 그래서 경력 기록에서 급여는 선택 항목으로 두는 편이 맞고, 화면에서도 기본적으로 가려 두는 설계가 흔합니다. 목록 화면에 급여가 그대로 노출되면 스크린 캡처와 공유 과정에서 조용히 퍼집니다.
시험용 기록에서는 특히 조심해야 합니다. 실제 급여와 비슷한 값을 넣으면 나중에 실제 데이터와 구분하기 어려워지고, 화면 캡처가 그대로 외부로 나갈 수 있습니다. 값 자체도 합성임이 드러나는 형태로 두는 편이 안전합니다.
급여 표시를 시험할 때 확인할 자리
| 상황 | 확인할 값 | 기대 동작 |
|---|---|---|
| 금액만 있고 통화 없음 | 저장 허용 여부 | 저장을 막고 통화를 함께 요구합니다 |
| 주기가 다른 두 값 | 정렬 방식 | 주기를 맞춰 환산한 뒤에만 비교합니다 |
| 총 보상만 있고 기본급 없음 | 표시 구분 | 어느 값인지 이름으로 밝히고 섞지 않습니다 |
| 급여를 숨긴 기록 | 목록 노출 | 목록에 아무 값도 보이지 않습니다 |
| 통화 표기가 소문자 | 정규화 시점 | 저장할 때 정규화하고 표시는 정해진 형태로 합니다 |
| 금액이 비어 있는 기록 | 검증 규칙 | 오류로 보지 않고 미입력과 구분해 표시합니다 |
표의 값은 화면 동작을 적은 것이고 실제 보수를 적은 것이 아닙니다. 자리 표시자만으로 이 여섯 줄을 모두 덮을 수 있습니다.
비교 화면을 만들 때는 무엇과 무엇을 비교하는지 화면에 밝혀 두는 편이 좋습니다. 기본급과 총 보상을 같은 줄에 섞으면 사용자는 두 배로 늘어난 숫자를 보고 잘못된 판단을 합니다.
개발자를 위한 메모: 금액 필드와 반올림
- 금액, 통화, 주기를 세 값으로 나눕니다. 하나의 문자열로 저장하면 집계와 정렬이 모두 문자열 비교가 됩니다.
- 금액은 정수 최소 단위로 저장합니다. 부동소수점으로 두면 합계에서 오차가 쌓입니다.
- 통화마다 소수 자릿수가 다를 수 있으므로 표시 단계에서 처리합니다. 저장 단계에 반올림을 넣으면 원래 값이 사라집니다.
- 반올림 규칙을 한 곳에 모읍니다. 화면마다 다르게 반올림하면 합계가 목록과 어긋납니다.
- 환산 값과 원래 값을 함께 보관합니다. 환산만 남기면 기준이 바뀌었을 때 되돌릴 수 없습니다.
- 급여 필드의 노출 범위를 권한과 묶습니다. 목록 조회와 상세 조회의 권한이 다른 경우가 많습니다.
- 시험용 기록에서는 값이 합성임이 한눈에 드러나게 만듭니다. 실제 인물의 보수를 연상시키는 값은 쓰지 않습니다.
- 급여 칸이 비어 있는 지원서를 시험 대상에 넣습니다. 이 상태에서 화면이 무엇을 보여 주는지가 실제로 자주 문제가 됩니다. 채용 화면의 단계별 시험은 채용 양식 테스트 케이스 설계에서 다뤘습니다.
- 통화와 주기를 함께 검증합니다. 둘 중 하나만 있으면 저장하지 않는 편이 안전합니다.
- 환산 결과를 원래 값 자리에 덮어쓰지 않습니다. 덮어쓰면 나중에 어느 값이 원본인지 알 수 없습니다.
시험용 기록이 필요하면 테스트용 경력 데이터 생성기에서 국가를 골라 몇 벌을 만들어 보세요. 국가에 따라 통화 코드가 달라지는 것을 확인할 수 있고, 기록 한 벌의 전체 구성은 경력 프로필 테스트 데이터 만드는 법에서 볼 수 있습니다. 이런 값을 저장소에 채우는 절차는 스테이징 데이터베이스 채우기에서 이어서 확인할 수 있습니다.
다음 단계
지금 화면에 급여가 숫자만으로 표시되는 자리가 있는지 확인해 보세요. 있다면 통화와 주기를 함께 보여 주도록 바꾸는 것이 먼저입니다. 그다음 테스트용 경력 데이터 생성기에서 서로 다른 국가의 기록을 만들어 통화 코드가 어떻게 달라지는지 비교하고, 정렬과 합계가 기대대로 동작하는지 확인해 보세요.
여기서 언급한 금액, 통화, 지급 주기는 모두 화면 동작을 확인하기 위한 시연용 값이며 어느 개인의 실제 보수가 아닙니다. 합성 데이터로만 사용하세요.