게시된 날짜: Sep 8, 2022

AWS 제공 오픈 소스 기술인 Seekable OCI(SOCI)는 컨테이너 이미지를 지연 로딩하여 컨테이너 시작 속도를 높여 줍니다. SOCI는 기존 컨테이너 이미지 내에 파일 색인(SOCI 색인)을 생성하는 방식으로 작동합니다. 이 색인이 컨테이너 시작 속도를 높이는 핵심 요인입니다. 전체 아카이브를 다운로드하기 전에 컨테이너 이미지에서 개별 파일을 추출하는 기능을 제공하기 때문입니다.

컨테이너를 시작할 때 사용하는 대다수 방법에서는 원격 컨테이너 레지스트리에서 전체 컨테이너 이미지를 다운로드한 후에 컨테이너를 시작합니다. 그런데 소량의 데이터만 있어도 컨테이너를 시작할 수 있을 때 모든 데이터가 다운로드되기를 기다리는 것은 시간 낭비입니다. 이전 연구 결과에 따르면, 전체 컨테이너 시작 시간에서 컨테이너 이미지 다운로드가 차지하는 시간이 76%나 되지만 컨테이너가 유용한 작업 수행을 시작하려면 필요한 데이터의 양은 평균 6.4%밖에 되지 않습니다.

컨테이너 이미지의 크기를 줄이고 로컬 스토리지에 컨테이너 이미지를 미리 가져오는 등의 여러 가지 방법으로 이 문제를 해결할 수 있습니다. 지연 로딩은 애플리케이션을 시작하는 동시에 레지스트리에서 데이터를 다운로드하는 방식입니다. 컨테이너 이미지는 순서가 지정된 계층 목록으로 저장되며 계층은 대개 Gzip으로 압축된 tar 파일로 저장됩니다. 일반적으로는 Gzip으로 압축된 tar 파일에서 개별 파일을 가져올 수 없습니다. 형식 변환을 통해 지연 로딩을 지원하는 프로젝트도 있습니다. 가령 stargz-snapshotter 프로젝트에서는 기존 OCI 이미지를 가져온 후 포함된 목차를 사용하여 새 OCI 이미지를 빌드합니다. SOCI에도 stargz-snapshotter의 디자인 원칙 중 일부분이 적용되지만 구체적으로 사용되는 방식은 다릅니다. SOCI 색인은 컨테이너 이미지와 별도로 생성되어 레지스트리에 OCI 아티팩트로 저장되며, OCI 참조 유형을 통해 컨테이너 이미지에 다시 연결됩니다. 즉, 컨테이너 이미지를 변환할 필요가 없고 이미지 다이제스트를 변경할 필요가 없으며 이미지 서명도 유효하게 유지됩니다.

오픈 소스 빌드 도구를 사용하여 기존 OCI 컨테이너 이미지용 SOCI 색인을 생성할 수 있습니다. 그리고 원격 스냅샷 생성 프로그램인 soci-snapshotter는 SOCI가 인덱싱한 이미지를 지연 로딩하는 기능인 containerd를 제공합니다. SOCI와 soci-snapshotter는 Apache 2.0 기반 오픈 소스 프로젝트입니다. GitHub에서 해당 프로젝트에 대해 자세히 알아볼 수 있습니다. AWS는 앞으로도 커뮤니티와의 협력을 통해 SOCI를 개선하고 컨테이너 시작 속도를 높이기 위해 지속적으로 노력할 예정입니다.