기술블로그-Fastapi편

✅ 왜 Base62 인코딩을 사용하는가?

Chansman 2025. 5. 27. 13:56

✅ 왜 Base62 인코딩을 사용하는가?

1. 🎯 목적 요약

"DB에서 생성된 숫자 ID나 긴 문자열을 짧고 예쁘게 바꿔서 URL이나 코드에 사용하기 위해"


2. 📌 Base62 인코딩이란?

  • 09, az, A~Z 총 62개의 문자로 구성된 인코딩 방식
  • 숫자나 UUID를 짧은 문자열로 변환하는 데 사용
  • URL-safe 하며, 사람이 읽고 입력하기 편함

3. 🔍 왜 바꾸는가? (실전 이유)

✅ 1) 너무 길고 보기 안 좋기 때문

  • DB ID: 12345678901234
  • UUID: 550e8400-e29b-41d4-a716-446655440000

➡ Base62 인코딩 시 → 8FaX9

📦 사용자가 복사·공유·입력하기 훨씬 쉬움


✅ 2) 보안을 위해 (ID 유추 방지)

https://myapp.com/user/102
https://myapp.com/user/103
  • 누가 봐도 ID 순서가 보임 → 타인의 정보 유출 가능성
https://myapp.com/user/dF3X1
  • Base62를 쓰면 유추 불가 → 보안 강화

✅ 3) URL에 안전하게 넣기 위해

  • 한글, 특수문자, 공백은 URL에서 문제가 됨
  • Base62는 영문+숫자만 사용 → 100% URL-safe

4. 🛠️ 실제 사용 사례

사용처 이유

단축 URL 긴 주소를 짧게 줄이기 위해
초대 코드 사람에게 보여줄 수 있게 짧고 예쁘게
주문 번호 노출돼도 유추 불가능하게
QR코드 값 짧고 고정된 길이로 인코딩

5. 🔁 흐름 정리

  1. 서버에서 DB에 데이터 저장 → ID 생성 (예: 12345)
  2. 이 ID를 Base62로 인코딩 → "dF3X"
  3. 외부에 노출할 때는 이 인코딩된 값 사용 → /invite/dF3X

❌ 클라이언트가 직접 숫자를 넣지 않음
✅ 서버가 내부 ID를 변환해서 사용자에게 보여주는 구조


🧠 최종 요약

질문 답변

왜 Base62를 써요? 숫자/UUID를 짧고 안전한 문자열로 바꾸기 위해
어떤 상황에서 써요? 단축 URL, 초대코드, 주문번호 등 외부 노출용 코드
이 값은 누가 만드나요? 서버가 자동 생성한 ID를 변환합니다
꼭 필요한가요? 사용자 편의, 보안, URL 호환성 측면에서 매우 유용함

Base62 인코딩은 사용자 경험을 개선하면서도 보안을 강화하는, 실무에서 매우 자주 쓰이는 전략입니다. 꼭 기억해두세요! 😉