파라미터 유효성 검사의 양면성 - 시스템 사용성에 미치는 영향
.
Backgorund
이번 포스팅에서는 백엔드 개발에서 중요한 주제인 ‘파라미터 유효성 검사’에 대해 이야기해보려 한다. 백엔드 개발자라면 프로젝트를 진행하게 되면서 RESTful API를 작성하기 위해 /course/:courseId/student/:studentId/assignment
와 같은 Path의 API를 구현해본 적이 있을 것이다.
이와 관련되어 필자는 ‘모든 파라미터의 유효성을 검사하는 것이 옳은 것일까?’하는 의문이 들게 되었다. 예를 들면 studentId
가 1인 student
를 가지고 있는 course
(id=1) 가 있다고 가정해보자. 하지만 /course/3/student/1/assignment
와 같은 요청을 하게 되면 어떻게 처리해야 할까?
필자는 이러한 관점에서 고민을 하게 되었고 각각의 장단점을 분석하게 되었다. 이렇게 모든 파라미터에 대해 유효성 검사를 실시할 때 시스템의 사용성 측면에서 어떤 장단점이 있는지 살펴보도록 하겠다.
Subject
Advantage
1. 오류 감소
모든 입력 데이터가 철저히 검증되므로, 잘못된 데이터로 인한 시스템 오류가 현저히 줄어든다. 이는 시스템의 안정성과 신뢰성을 크게 향상시킨다.
2. 일관된 사용자 경험
유효성 검사를 통해 사용자에게 즉각적이고 명확한 피드백을 제공할 수 있다. 이로 인해 사용자는 입력 오류를 쉽게 인지하고 수정할 수 있어, 전반적인 사용자 경험이 향상된다.
3. 데이터 품질 향상
엄격한 유효성 검사는 시스템에 저장되는 데이터의 품질을 크게 개선한다. 이는 데이터 분석이나 보고서 생성 시 더욱 신뢰할 수 있는 결과를 얻는 데 도움이 된다.
4. 보안 강화
악의적인 데이터 입력을 사전에 차단함으로써 시스템의 보안을 강화할 수 있다. 이는 SQL 인젝션이나 크로스 사이트 스크립팅(XSS) 같은 공격을 예방하는 데 큰 도움이 된다.
Disadvantage
1. 사용자 불편
너무 엄격한 유효성 검사는 사용자가 입력 과정에서 빈번한 오류 메시지를 접하게 만들어 불편을 초래할 수 있다. 이는 사용자의 좌절감을 높이고 시스템 사용을 꺼리게 만들 수 있다.
2. 복잡한 사용자 인터페이스
모든 파라미터를 검증하기 위해 추가적인 입력 필드와 설명이 필요할 수 있다. 이로 인해 사용자 인터페이스가 복잡해지고, 초보 사용자들에게 부담을 줄 수 있다.
3. 입력 시간 증가
사용자가 모든 파라미터를 신중히 입력해야 하므로, 전체적인 입력 시간이 늘어날 수 있다. 이는 특히 대량의 데이터를 입력해야 하는 상황에서 큰 문제가 될 수 있다.
4. 유연성 감소
모든 입력에 대해 엄격한 검사를 수행하면, 사용자가 다양한 형태의 입력을 시도할 수 있는 유연성이 감소한다. 이는 때때로 창의적인 사용이나 예외적인 상황 처리를 어렵게 만들 수 있다.
Summary
파라미터 유효성 검사는 시스템의 안정성, 보안, 데이터 품질 향상에 큰 도움을 주지만, 동시에 사용자 경험과 시스템의 유연성에 부정적인 영향을 미칠 수 있다. 따라서 개발자들은 시스템의 특성과 사용자의 요구사항을 충분히 고려하여 적절한 균형을 찾는 것이 중요하다.