패키지 크기 최적화

패키지 크기 최적화

패키지 크기 최적화는 성능과 배포 효율성을 극대화하기 위해 필수적으로 고려해야 할 요소입니다. 이 글에서는 앱과 웹 프로그래밍에서 공통적으로 사용되는 패키지 최적화 기법을 설명한 후, 웹 프로그래밍에만 적용되는 추가적인 최적화 전략을 다룹니다.

최적화 전략

트리밍 기능 사용

트리밍 기능은 사용되지 않는 코드를 제거하여 애플리케이션 크기를 줄이는 방법입니다. 이 기법은 .NET Core 및 .NET 5 이상에서 제공되며, 특히 자체 포함형 배포(Self-contained Deployment)에서 사용되지 않는 라이브러리를 제외하는 데 효과적입니다.

장점

  • 패키지 크기 감소
  • 배포 효율성 증가
  • 성능 개선

사용 방법

.NET 프로젝트에서 dotnet publish 명령어와 PublishTrimmed 속성을 사용하여 트리밍 기능을 활성화할 수 있습니다.

dotnet publish -c Release -r win-x64 --self-contained /p:PublishTrimmed=true

이 명령어는 트리밍을 활성화하여 불필요한 코드를 제거한 최적화된 패키지를 생성합니다.

리소스 최적화

리소스 최적화는 이미지, 비디오, 폰트 등과 같은 정적 파일을 압축하거나 포맷을 최적화하여 패키지 크기를 줄이고 성능을 개선하는 기법입니다.

이미지 최적화

  • 포맷을 더 효율적인 WebP로 변환하거나 압축 도구를 사용하여 이미지 크기를 줄일 수 있습니다.

불필요한 파일 제거

패키지에 포함되지 않아도 되는 불필요한 파일(로그, 문서 파일, 테스트 파일 등)을 제외함으로써 패키지 크기를 줄일 수 있습니다.

파일 제외 설정

.NET 프로젝트에서는 .csproj 파일에서 Exclude 태그를 사용하여 특정 파일을 제외할 수 있습니다.

<ItemGroup>
  <None Update="logfile.txt">
    <CopyToOutputDirectory>Never</CopyToOutputDirectory>
  </None>
</ItemGroup>

런타임 종속성 최소화

배포 크기를 줄이기 위해 프레임워크 종속형 배포(Framework-Dependent Deployment)와 자체 포함형 배포(Self-Contained Deployment)를 적절히 선택하는 것이 중요합니다.

  • 프레임워크 종속형 배포: 배포된 환경에서 런타임을 공유하여 패키지 크기를 줄일 수 있습니다.
  • 자체 포함형 배포: 종속성을 모두 포함한 독립 실행 파일을 배포하므로 크기가 더 커질 수 있지만 배포 환경에 따라 유리할 수 있습니다.

패키지 압축

배포 패키지를 압축하여 전송 크기를 줄이고, 배포 시간을 단축할 수 있습니다.

웹 프로그래밍에서의 패키지 크기 최적화

웹 프로그래밍에서 패키지 크기 최적화는 웹 페이지의 로딩 속도를 개선하고 사용자 경험을 향상시키기 위해 중요합니다. 이 섹션에서는 웹 프로그래밍에 특화된 최적화 전략을 다룹니다.

리소스 최적화

웹 페이지에서 사용되는 이미지, CSS, JavaScript 파일은 반드시 최적화가 필요합니다. 앞서 설명된 이미지 최적화는 웹에서도 동일하게 적용되며, 이 외에도 추가적으로 CSS 및 JavaScript 최적화 기법이 필요합니다.

CSS 및 JavaScript 최적화

CSS와 JavaScript 파일을 최적화하여 페이지 로딩 속도를 개선할 수 있습니다. 이를 위해 코드 압축 및 코드 스플리팅 기법을 사용합니다.

  • CSSNano, CleanCSS 등의 도구를 사용해 CSS 파일을 압축하여 불필요한 공백과 주석을 제거할 수 있습니다.
  • UglifyJS, Terser 같은 도구를 사용해 JavaScript 파일의 크기를 줄이고 성능을 개선할 수 있습니다.

코드 스플리팅

코드 스플리팅은 웹 애플리케이션의 초기 로딩 시간을 줄이기 위한 기법으로, 코드를 여러 개의 작은 번들로 나누어 필요할 때만 로드하는 방식입니다. 이를 통해 사용자 경험이 향상되며, 대규모 웹 애플리케이션에서 매우 유용하게 사용됩니다.

CDN 활용

CDN(Content Delivery Network)을 통해 정적 파일을 분산된 서버에서 제공하면 웹 애플리케이션의 성능이 더욱 향상됩니다. CDN을 사용하면 사용자는 가장 가까운 서버로부터 리소스를 전달받아 더 빠르게 웹 페이지를 로드할 수 있습니다.