API 통신 시 null 값 처리: 포함 vs. 미포함의 장단점
2024. 7. 22. 12:37
API 통신 시 null 값 처리: 포함 vs. 미포함의 장단점
JSON 기반의 API 통신을 할 때, 값이 null일 경우 해당 값을 요청이나 응답에 포함시켜야 하는지에 대해 고민해볼 필요가 있습니다. 이 글에서는 이 주제에 대해 StackOverflow
글을 기반하여 정리해보겠습니다.
StackOverflow
에서 같은 고민을 하는 사람들의 의견을 참고한 결과, Twitter와 같은 대형 플랫폼의 경우 "someGenericProperty":null
과 같은 26바이트를 차지하는 필드를 없애는 것만으로도 300GB 이상의 트래픽을 줄일 수 있다고 합니다. 하루에 수십억 건의 API 요청이 오가는 플랫폼에서는 이는 상당한 절감 효과를 가져올 수 있습니다.
그러나, null 값을 포함시키지 않는 것이 항상 최선의 선택은 아니라고 합니다. 일관성을 유지하는 것이 API 사용자의 혼란을 줄이고 예측 가능한 동작을 보장하며 디버깅을 용이하게 할 수 있습니다.
위 글을 기반으로 대략적으로 정리를 해보자면 내용은 아래와 같습니다.
일관성 유지:
- API 사용자는 모든 응답에서 예상 가능한 구조를 기대합니다. 필드가 항상 존재하면 API의 사용성과 신뢰성이 높아집니다.
잠재적 문제점:
- 특정 데이터 요소가 부재할 경우, 그 원인을 파악하기 어려울 수 있습니다. 예를 들어, 필드가 누락된 이유가 데이터가 없는 것인지, 아니면 데이터 전달 중 문제가 발생한 것인지 알기 어려울 수 있습니다.
- 필드가 예상대로 존재하지 않으면 소비자 애플리케이션의 안정성이 저하될 수 있습니다.
구현 관련 고려사항:
- null 값을 제외하려면 서버 측에서 추가 로직이 필요합니다. 이는 코드 복잡성을 증가시키고 유지보수 부담을 가중시킬 수 있습니다.
성능 관련:
- 네트워크 대기 시간과 대역폭을 고려해야 합니다. 대부분의 경우, 약간의 대역폭을 희생하더라도 일관된 응답 구조가 선호됩니다.
예외 상황:
- 극도로 제한된 대역폭 환경에서는 필드를 제외하는 것이 더 나을 수 있습니다.
- 희소 데이터 구조를 처리할 때도 필드를 제외하는 것이 유리할 수 있습니다.
결론적으로 예외적인 상황이 아닌 이상, null 값을 포함하더라도 해당 필드를 응답에 추가하는 것이 API 사용의 일관성을 유지하는 데 도움이 된다고 합니다.
'Spring' 카테고리의 다른 글
JPQL 실행 시 Flush와 영속성 컨텍스트 동작 확인 (0) | 2024.07.22 |
---|---|
JPA에서 단방향 및 양방향 일대일 관계의 외래키 처리와 지연 로딩 문제 (1) | 2024.07.22 |
[Spring] DynamicInsert 사용 이유 (0) | 2024.07.22 |
Optional 클래스의 orElseThrow (0) | 2024.07.22 |
[Spring] Enum 타입으로 Exception 구현하기 (0) | 2024.07.22 |