iOS/iOS 상식

App thinning

HJ39 2023. 7. 23. 23:58

애플리케이션을 설치할 때, 앱스토어와 운영체제가 디바이스의 환경에 맞게 설치하는 설치 최적화 기술

필요한 만큼의 리소스만 다운로드하기에 적은 디스크 사용량, 빠른 다운로드를 제공

 

Slicing

여러 가지 디바이스와 운영체제를 위한 앱 번들의 variants(변형)을 생성 및 제공하는 과정

 

variants(변형)에는 각 디바이스와 운영체제가 필요로 하는 실행 가능한 아키텍처와 리소스가 담겨있다.

개발자가 앱스토어 커넥트에 풀버전의 앱 빌드를 업로드하게 되면 앱스토어는 자동적으로 variants를 생성하고 전달한다.

유저가 앱스토어에서 앱을 다운로드하게 되면, 유저의 디바이스와 운영체제 버전에 맞는 variants를 다운로드하게 된다.

on-demand resource(ODR)

주문형 리소스는 이미지, 음원과 같은 앱의 리소스를 키워드로 태그 해놓고, 태그를 통해 그룹으로 요청이 가능한 리소스

앱스토어는 사용자에게 현재 필요한 리소스를 관리하고 다운로드하게 한다.

또한 주문형 리소스의 슬라이싱 작업을 통해 variants의 최적화 작업을 진행한다.

  • 앱의 사이즈가 작아지게 되고, 이를 통해 더 빠른 다운로드를 제공, 사용자가 앱의 최초 실행 경험을 개선하게 된다.
  • 사용자가 앱을 체험하면서 필요하게 되는 주문형 리소스들을 백그라운드에서 다운로드하게 된다.
  • 운영체제가 더 이상 필요로 하지 않는 주문형 리소스들은 제거하게 되고, 이로 인해 저장공간을 절약한다.

 

대표적인 예시를 들 수 있는 경우가 게임의 추가 리소스 다운이다. 일반적으로 이미지와 음원이 많은 게임 앱의 경우, 최초 실행을 위한 최소한의 리소스를 우선적으로 받고, 게임 실행 후 필요한 부분만 리소스를 추가적으로 다운로드하여 저장공간 절약, 실행을 위한 다운로드 시간 감소 등 대용량 앱 사용에 더욱 쾌적한 환경을 제공할 수 있다.

 

위 그림으로 살펴보자면 현재 필요한 리소스는 Level 1만 필요한데 처음 다운로드를 할 때 Level 2를 다운로드하여 휴대폰의 리소스를 낭비하지 않게 하는 방법이다. 

Level 1을 사용하던 중 Level 2 ODR을 사용하기 위해 Level 2를 다운로드하면 자동적으로 이제는 필요 없는 Level 1 ODR을 삭제하여 공간을 확보하는 방법이다.

 

bitcode

개발자는 앱스토어 커넥트에 자신의 앱에 비트 코드를 포함시켜 올릴 수 있으며 그러한 비트 코드는 컴파일되어 앱스토어에 연결된다.

애플은 업로드된 비트 코드를 통해서 개발자의 새로운 버전의 앱 업로드 없이도 앱 바이너리를 최적화할 수 있다고 한다.

 

따라서 최신 컴파일러용으로 자동으로 앱을 컴파일하고, 특정 아키텍처(예 : iPhone 6 및 iPad Air 2와 같은 64 비트 프로세서의 경우 arm64)에 맞게 최적화한다고 한다.

 

Bitcode는 다른 아키텍처에 대한 최적화를 제거하여 다운로드는 더 작게 만듦 / 관련 최적화만 다운로드하여 위에 언급한 App Thining 기술과 함께 사용됩니다. (App Slicing 방법을 사용한다고 한다)

 

Bitcode는 기계어와 인간이 읽을 수 있는 언어 중간 단계의 언어로 일련의 지침이 주어지면 다양한 방식으로 다시 컴파일하는 데 사용할 수 있는 앱의 추상 인코딩이다.

→ 예전

이런 사건도 있었다고 한다. ㅎ

 

지금은 bitcode가 적용되어 새로운 아키텍처가 나와도 개발자가 다시 코드를 수정할 필요가 없다고 한다. ㅎㅎ

 

 

 

※ 참고

  1. https://hyun083.tistory.com/80
  2. https://zeddios.tistory.com/655
  3.