Docker 이미지 레이어는 빌드 성능에 어떤 영향을 주나요?
답변 포인트
레이어 캐시와 Dockerfile 순서를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.
정답 및 해설
빠른 요약
Dockerfile 명령은 캐시 가능한 레이어를 만들 수 있습니다. 자주 바뀌지 않는 의존성 설치 단계를 앞에 두고 .dockerignore를 활용하면 빌드 속도와 이미지 크기를 개선할 수 있습니다.
Dockerfile 명령은 캐시 가능한 레이어를 만들 수 있습니다. 자주 바뀌지 않는 의존성 설치 단계를 앞에 두고 .dockerignore를 활용하면 빌드 속도와 이미지 크기를 개선할 수 있습니다.
핵심 개념
핵심 기준은 레이어 캐시와 Dockerfile 순서입니다.
Docker 이미지는 여러 레이어의 합으로 구성됩니다. Dockerfile의 각 명령은 새 레이어를 만들 수 있고, 이전 단계의 입력이 같으면 캐시가 재사용됩니다. 자주 바뀌지 않는 의존성 설치를 소스 복사보다 앞에 두면 코드만 바뀐 빌드에서 설치 단계를 건너뛸 수 있습니다.
동작 흐름
- 요구사항을 성능, 안정성, 보안, 복구 목표로 나눠 정의합니다.
- 정상 흐름과 장애 흐름에서 각 구성 요소가 어떻게 동작하는지 확인합니다.
- 자동화와 관찰 지표로 변경 결과를 검증합니다.
- 롤백, 복구, 확장, 비용 관리까지 운영 절차로 문서화합니다.
실제 예시
FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build예시는 핵심 구조를 단순화한 것입니다. 실무에서는 운영 환경, 장애 상황, 보안 요구사항에 맞게 세부 설정을 조정해야 합니다.
실무에서 주의할 점
- 자동화가 있어도 롤백과 복구 절차를 실제로 연습하지 않으면 장애 때 동작하지 않을 수 있습니다.
- 관찰 지표가 없으면 장애 원인을 추측에 의존하게 됩니다.
- 확장은 애플리케이션 코드, 데이터베이스, 네트워크, 외부 의존성 한계를 함께 봐야 합니다.
함께 연결해서 보면 좋은 키워드
Docker, ImageLayer, BuildCache, dockerignore
면접에서 짚으면 좋은 포인트
- 정상 동작뿐 아니라 장애, 롤백, 관찰 가능성까지 함께 설명하면 실무적인 답변이 됩니다.
- 설정 예시를 말할 때 보안, 비용, 운영 자동화의 trade-off도 함께 짚는 것이 좋습니다.
정리
한 줄로 정리하면, Dockerfile 명령은 캐시 가능한 레이어를 만들 수 있습니다. 자주 바뀌지 않는 의존성 설치 단계를 앞에 두고 .dockerignore를 활용하면 빌드 속도와 이미지 크기를 개선할 수 있습니다. 개념의 정의뿐 아니라 장애 시 동작, 운영 지표, 자동화와 복구 전략까지 함께 이해하는 것이 중요합니다.