데브허브 | DEVHUB | 딱 한 번 호출되는 함수, 자랑스럽습니다
TempData 사용 중 발생한 사소한 버그가 프로덕션 환경에서 치명적인 500 에러를 유발했습니다. 🚨
- ASP.NET Core의
TempData는 겉보기와 달리 내부적으로 문자열 기반 직렬화를 사용하며, long 타입은 직접 지원하지 않아 명시적인 ToString() 변환이 필요합니다. 🧩
- 초기 코드에 있던
ToString()이 주석이나 설명 없이 불필요한 코드로 오해되어 리팩토링 중 제거되면서 문제가 발생했습니다. 🚧
TempData의 배열 인덱서([]) 방식은 컴파일러가 long 타입 할당을 문제없이 통과시켜, 버그가 런타임에만 발견되도록 만들었습니다. 🕵️♀️
- 재발 방지를 위해
long 값을 TempData에 넣을 때 올바른 타입 변환을 강제하는 헬퍼 함수를 만들어 시그니처로 실수를 원천 봉쇄했습니다. 🛡️
- 이 헬퍼 함수는 코드 전체에서 단 한 번만 호출되지만, 재사용성보다 실수를 막는 안전장치로서의 가치 때문에 생성되었습니다. 🔑
- 작은 버그도 실서비스에서는 큰 사고로 이어질 수 있으며, 컴파일러가 잡지 못하는 부분은 추상화와 시그니처로 강제해야 한다는 교훈을 얻었습니다. 💡
- 특히 결제 모듈에서 발생한 문제로 인해 실제 금전적 손실이 발생하여, 이번 경험의 중요성을 더욱 강조했습니다. 💸