실제 사례 비교로 오버/언더엔지니어링 트레이드오프 직접 설명 결
오버엔지니어링은 현재 필요하지 않은 복잡성을 미리 구축하는 것이고, 언더엔지니어링은 당장 동작하게만 만들고 확장 가능성을 무시하는 것이라고 생각합니다.
인턴 때 간단한 알림 기능을 맡았는데, 처음에는 메시지 큐와 재시도 로직까지 설계했습니다. 그런데 당시 DAU가 200명 수준이라 단순 HTTP 호출로도 충분했고, 결국 복잡한 설계가 개발 속도만 늦추는 결과를 낳았습니다. 반대로 팀 내 다른 기능은 하드코딩으로 급하게 배포했다가 세 달 뒤 구조 전체를 다시 짜야 하는 상황이 생겼습니다.
그 경험 이후 저는 현재 사용자 규모와 6개월 내 예측 규모를 함께 고려해 설계 복잡도를 조율합니다. 지금 당장 필요한 수준보다 한 단계 정도만 더 유연하게 만드는 것이 적절한 균형점이라는 판단입니다.