Amazon ECR 성능 최적화

Amazon ECR 성능 최적화

Amazon ECR을 사용할 때 성능을 최적화하기 위해 다음 설정 및 전략 권장 사항을 사용할 수 있습니다.

출처: 문서

본문

동시 레이어 업로드를 활용하려면 Docker 1.10 이상을 사용하세요

Docker 이미지는 이미지의 중간 빌드 단계인 레이어로 구성됩니다. Dockerfile의 각 줄은 새 레이어를 생성합니다. Docker 1.10 이상을 사용하면 Docker는 기본적으로 가능한 한 많은 레이어를 Amazon ECR로 동시 업로드하여 업로드 시간을 단축합니다.

더 작은 기본 이미지를 사용하세요

Docker Hub에서 제공하는 기본 이미지에는 애플리케이션이 필요로 하지 않는 많은 종속성이 포함될 수 있습니다. Docker 커뮤니티의 다른 사람들이 만들고 유지 관리하는 더 작은 이미지를 사용하거나, Docker의 최소 scratch 이미지를 사용해 자체 기본 이미지를 만드는 것을 고려하세요. 자세한 내용은 Docker 문서의 Create a base image를 참조하세요.

변경이 가장 적은 종속성을 Dockerfile 앞부분에 배치하세요

Docker는 레이어를 캐시해 빌드 시간을 단축합니다. 마지막 빌드 이후 레이어의 어떤 것도 변경되지 않았다면 Docker는 레이어를 다시 빌드하는 대신 캐시된 버전을 사용합니다. 그러나 각 레이어는 그 이전의 레이어에 의존합니다. 레이어가 변경되면 Docker는 해당 레이어뿐만 아니라 그 이후의 모든 레이어도 다시 컴파일합니다.

Dockerfile을 다시 빌드하고 레이어를 다시 업로드하는 데 필요한 시간을 최소화하려면 변경 빈도가 가장 낮은 종속성을 Dockerfile 앞부분에 배치하세요. 애플리케이션의 소스 코드처럼 자주 변경되는 종속성은 스택의 뒷부분에 배치하세요.

불필요한 파일 저장을 피하려면 명령을 연결하세요

레이어에서 생성된 중간 파일은 이후 레이어에서 삭제되더라도 해당 레이어의 일부로 남습니다. 다음 예를 고려하세요.

WORKDIR /tmp
RUN wget http://example.com/software.tar.gz 
RUN wget tar -xvf software.tar.gz 
RUN mv software/binary /opt/bin/myapp
RUN rm software.tar.gz

이 예에서 첫 번째와 두 번째 RUN 명령으로 생성된 레이어에는 원본 .tar.gz 파일과 압축이 풀린 모든 내용이 포함됩니다. 이는 네 번째 RUN 명령으로 .tar.gz 파일이 삭제된 경우에도 마찬가지입니다. 이러한 명령을 단일 RUN 문으로 연결하면 불필요한 파일이 최종 Docker 이미지에 포함되지 않도록 할 수 있습니다.

WORKDIR /tmp
RUN wget http://example.com/software.tar.gz &&\
    wget tar -xvf software.tar.gz &&\
    mv software/binary /opt/bin/myapp &&\
    rm software.tar.gz

가장 가까운 리전 엔드포인트를 사용하세요

애플리케이션이 실행되는 위치에 가장 가까운 리전 엔드포인트를 사용하면 Amazon ECR에서 이미지를 pull할 때 지연 시간을 줄일 수 있습니다. 애플리케이션이 Amazon EC2 인스턴스에서 실행 중이라면 다음 셸 코드를 사용해 인스턴스의 가용 영역에서 리전을 얻을 수 있습니다.

REGION=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone |\
    sed -n 's/\(\d*\)[a-zA-Z]*$/\1/p')

리전은 --region 파라미터를 사용해 AWS CLI 명령에 전달하거나, aws configure 명령을 사용해 프로필의 기본 리전으로 설정할 수 있습니다. AWS SDK를 사용해 호출할 때도 리전을 설정할 수 있습니다. 자세한 내용은 특정 프로그래밍 언어용 SDK 문서를 참조하세요.

더 알아보기 (Learn more)

  • Amazon ECR 프라이빗 레지스트리
  • AWS CLI 설치
  • Amazon ECR 이미지 스캔