반응형
> 막연하게 백엔드 개발자를 시작하며 API 개발을 시작했고 그 안에서 REST API에 최대한 맞춰 개발을 하고자 했었다.
그리고 GraphQL이 프론트쪽에서 핫하다고 하면서 본 내용 중 Rest API의 고질적인 문제점을 보는데 이게 딱 지금 내가 개발하는 API의 문제점이라 생각하고 있는 것들과 겹쳐서 기술한다.
= 즉 특정 화면에서의 내가 지금 머리아파는 문제를 GraphQL로 해결 가능할 수도 있다.
REST API의 문제 (Over-fetching, Under-fetching)
- Over fetching : 말 그대로 불필요한 데이터까지 API 결과값에 포함되어 return되는 것을 말한다.
- 최근 내가 쉽다 API 리팩토링 한 내용 중 하나가 이러한 문제들 때문에 return interface를 확립하여 그렇게 return하게 처리한 것과 연관되어 있다.
- 어드민 API야 불필요한 데이터까지 가도 상관은 없는데 고객 화면이 호출하는 API는 확실하게 하지 않으면 margin이나 불필요한 UNIPASS 정보까지 return되면 좋을 것이 없다 생각하여 리팩토링 했었음.
- class constructor를 통해 할당하거나 select를 통해 해당 값만 select하여 바로 return하는 방식으로 하였다.
(join되는 column이 많은 경우, 값도 많은 경우 select으로 따로 값을 관리하며 처리하였음) - 이렇게 하면 해결은 되지만 불가피하게 코드는 길어질 수 밖에 없고 필요한 그 값들이 많으면 많을수록 더 길어진다.
- Under fetching : 반대로 필요한 데이터가 전부 들어오지 않아 다른 API를 여러번 호출해야하는 문제
- 이렇게 하면 서버 request도 불필요하게 늘어난다.
- 그럼 이걸 API를 하나로 합쳐서 한번에 호출하면 되는거 아니야? 하지만 보통 이런 문제가 발생하는 곳은 그 API를 다른 곳에서 사용하고 있고 딱 그 값만 필요한 경우로 만든 것이기 때문에 이걸 하나로 합치면 Under-fetching문제는 해결되겠지만 사용하던 다른 곳에서는 불필요한 데이터까지 return되면 Over-fetching문제가 발생하게 된다.
반응형
'개발 일반' 카테고리의 다른 글
새로운 회사, 새로 만나는 AWS 서비스 탐방기 (0) | 2022.08.25 |
---|---|
PR 코드 리뷰 문화에 대한 고찰 (0) | 2022.05.24 |
[Javascript] Call by Value와 Call by Reference (+Call by Sharing) (0) | 2021.11.28 |
monorepo를 적용하며 (0) | 2021.09.07 |
이번 스프린트를 끝내며.. (0) | 2021.07.02 |