포스트

[Frontend] next/image를 사용하는 이유

[Frontend] next/image를 사용하는 이유

들어가며

결론부터 말하자면, next/image를 사용하는 이유는 사용성 향상성능 최적화를 간단하게 구현할 수 있기 때문입니다. 이 글에서는 next/image 컴포넌트의 주요 기능과 장점, 단점, 대체 방법에 대해 정리해보겠습니다.


목차

  1. 사용자 경험을 개선하는 placeholder
  2. 포맷 & 사이즈 자동 최적화
  3. 기본 제공되는 Lazy Loading
  4. next/image의 단점은?
  5. 다른 대안은 없을까?
  6. 결론 및 요약
  7. 참고 자료

1. 사용자 경험을 개선하는 placeholder

기본 <img> 태그를 사용할 경우 이미지가 로딩되는 동안 빈 공간이 그대로 보여집니다. 반면, next/imageplaceholder="blur" 속성을 활용하여 로딩 중에도 블러 처리된 이미지를 보여줍니다.

이는 페이지의 시각적 일관성을 유지하고, 사용자가 콘텐츠를 더욱 쾌적하게 탐색할 수 있도록 도와줍니다.

1
2
3
4
5
6
7
8
9
10
import Image from 'next/image';

<Image
  src="/example.jpg"
  alt="설명"
  width={800}
  height={600}
  placeholder="blur"
  blurDataURL="/example-blur.jpg"
/>

2. 포맷 & 사이즈 자동 최적화

next/image는 브라우저 환경에 맞춰 최적화된 이미지 포맷(WebP 등)과 적절한 크기로 이미지를 서빙합니다. 사용자의 디바이스 해상도나 브라우저 지원 여부에 따라 자동으로 최적화된 이미지를 제공하여 불필요한 데이터 전송을 줄이고 성능을 높일 수 있습니다.

3. 기본 제공되는 Lazy Loading

별도 설정 없이도 next/image는 기본적으로 lazy loading을 지원합니다. 즉, 뷰포트에 들어올 때 필요한 이미지부터 로드하므로 초기 렌더링 속도가 향상되고, 네트워크 리소스를 절약할 수 있습니다.

1
2
3
4
5
6
<Image
  src="/photo.jpg"
  alt="예시"
  width={500}
  height={300}
/> // lazy loading은 기본값

4. next/image의 단점은?

물론 단점도 있습니다:

  • 외부 이미지 도메인을 사용할 경우, next.config.js에 허용 도메인을 명시해야 합니다.
1
2
3
4
5
6
// next.config.js
module.exports = {
  images: {
    domains: ['example.com'],
  },
};
  • 이미지 최적화는 Next.js 서버에서 처리되므로, 정적 사이트처럼 서버리스로 배포할 경우 제약이 있을 수 있습니다. 특히 자체 서버 없이 호스팅하는 경우, Vercel 등의 플랫폼에 의존하게 됩니다.

5. 다른 대안은 없을까?

next/image 없이도 이미지 최적화를 할 수 있습니다. 예를 들어:

  • 직접 리사이징된 이미지 파일을 준비해 정적으로 서빙
  • <img> 태그에 loading="lazy" 속성 추가
  • Cloudinary, Imgix, Fastly 같은 이미지 최적화 서비스 활용
1
<img src="/image.jpg" alt="설명" loading="lazy" width="600" height="400" />

하지만 이러한 방법은 수작업이 필요하거나 설정이 복잡해질 수 있습니다. 반면, next/image는 이러한 최적화를 자동화된 방식으로 쉽게 적용할 수 있다는 장점이 있습니다.

6. 결론 및 요약

항목기본 <img>next/image
Lazy loading수동 설정 필요기본 제공
이미지 포맷 최적화불가능자동 제공
사이즈 최적화수동 리사이징 필요자동 제공
placeholder 처리직접 구현 필요blur 속성 제공
외부 이미지제한 없음next.config.js 설정 필요

빠르게 UX를 개선하고 싶을 때

이미지 퍼포먼스를 쉽게 최적화하고 싶을 때

next/image는 매우 강력한 도구입니다.

7. 참고 자료

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.