"API 호출을 여러번 해서 필요한 데이터를 따로따로 가져올까?" vs. "DB 테이블 간 참조를 잘 해놔서 한 번에 관련 데이터를 뽑아올까?"
“API 호출을 여러번 해서 필요한 데이터를 따로따로 가져올까?” vs. ““DB 테이블 간 참조를 잘 해놔서 한 번에 관련 데이터를 뽑아올까?
**가능하면 테이블 간 참조를 잘 설계해서, 한 번의 API 호출로 필요한 데이터를 가져오는 것이 일반적으로 더 낫습니다. **(특히 관계형 DB를 쓴다면 더 그렇습니다.)
| 항목 | 여러 API 호출 | 관계형 참조 기반으로 한 번에 호출 |
|---|---|---|
| 🔄 네트워크 요청 횟수 | 많아짐 (속도 느림, 병목 위험) | 최소화 가능 (빠름) |
| 🧠 코드 복잡도 | 각 응답 합치거나 순차 호출 필요 | 응답 하나로 필요한 데이터 포함 |
| 🔗 관계 유지 | 클라이언트에서 join해야 함 | 서버/쿼리에서 join 처리 가능 |
| 🧱 DB 확장성 | 약함 (데이터 구조 중복) | 강함 (정규화된 테이블 구조) |
| 🔍 쿼리 최적화 | 어려움 | 인덱스, JOIN 등 DB 최적화 가능 |
하지만 예외(여러 호출이 더 나은 경우)도 있습니다.
| 상황 | 이유 |
|---|---|
| 🎯 페이지네이션, lazy loading | 최초 요청 시 데이터 양이 너무 클 경우 |
| ⚡ 비동기 처리로 병렬 API 호출 | 동시에 여러 구성요소가 렌더링될 때 |
| 🔐 보안 분리된 API | 인증 수준 또는 도메인 별 API 권한 다를 경우 |
| 🧩 BFF 아키텍처 적용 | 필요한 데이터만 전달하려고 일부러 분리한 경우 |
+주의) 양쪽을 연결할 때 외부 키가 상호의존하게 되면 안됩니다. 그럴 경우에는 외부키는 한쪽에만 두고, 다른 쪽에서 필요할 때에는 db table에는 상호의존을 피하기 위해 해당 키가 없지만 코드 상에서 동적으로 채워서 사용할 수 있습니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
