아티스트 정보를 먼저 가져온 다음(1초), 그 ID를 사용해 플레이리스트를 가져옵니다(1.5초). 총 대기 시간은 약 2.5초입니다. 의존 관계가 있는 데이터에서 불가피한 워터폴 패턴입니다.
sequential-fetching/
└── page.tsx
├── getArtist() → 1초 지연 → artist.id 획득
└── getPlaylists(id) → 1.5초 지연 → 플레이리스트 반환이름
Yoon Seoha
장르
K-Indie
팔로워
128,400
ID
#42
플레이리스트 로딩 중... (아티스트 ID 필요)
핵심 파일 코드
// sequential-fetching/page.tsx
const Page = async () => {
// Step 1: 아티스트 먼저 (1초)
const artist = await getArtist();
// Step 2: ID로 플레이리스트 (1.5초)
// → artist.id가 있어야 호출 가능 (워터폴)
return (
<>
<ArtistInfo artist={artist} />
<Suspense fallback={<PlaylistsSkeleton />}>
<PlaylistsSection artistId={artist.id} />
</Suspense>
</>
);
};체험 포인트: 아티스트 정보가 먼저 로드된 후에야 플레이리스트 요청이 시작됩니다. Parallel Fetching과 비교하면 워터폴의 비용을 체감할 수 있습니다.
42번 아티스트의 Best Hits
20곡 - 1시간 12분
새벽 감성 모음
15곡 - 52분
Live Session 2025
8곡 - 38분
미공개 데모 트랙
5곡 - 19분