Hmall 빌드 속도 개선 건 (21분 -> 9분)

2024. 8. 17. 18:18CICD

Hmall 업무에서 소스 통합 건으로 빌드가 21분 정도 소요되는게 이슈가 되어 빌드 속도 개선을 고려하였다. 

결과적으로 21분-> 9분으로 속도를 개선했다.

  AS_IS TO_BE
전체 빌드 속도 21분 9분

 

방법

1. PV 변경 : git clone 위치 변경 (21분 ->12분)

2. Kaniko filesystem option 튜닝 : single snapshot (12분-> 9분)

 

1. PV 변경 

tekton에서 소스를 gitclone 해오는 위치를 변경하였는데,

PV 를 NAS(Network Attached Storage)에서 워커노드 내의 파일시스템으로 변경 하였다. 

 

pv 종류 yaml 설명
nfs name: tekton-pv-nfs
spec:
  nfs:
    path: /vol-test/tekton
    server: 123.123.123.123
nfs(네트워크 파일시스템)
NAS (Network Attached Storage) 
: 네트워크에 연결된 파일 스토리지
hostpath name: tekton-pv-host
spec:
 hostPath: path: /var/home/xxx
  type: DirectoryOrCreate 
워커노드 내의 파일시스템

 

원리:

nfs 에 비해 워커노드내의 pv를 사용하면 

매번 읽고쓰는 작업마다 훨씬 적은 지연으로 작업이 가능하다. 

 

참고 출처: 로컬디스크에 캐시하면 빌드 속도 개선이 가능함 :  Tekton Pipelines에서 컨테이너 이미지 빌드 가속화 | 철턴

2. Kaniko filesystem option 튜닝 (Single Snapshot 적용)

tekton docker build-and-push task 실행시 

--single-snapshot 옵션을 추가해주면

여러 레이어를 쌓는게 아닌 베이스이미지에 하나의 레이어만 쌓는다고 한다. 

 

참고 출처: GoogleContainerTools/kaniko: Build Container Images In Kubernetes (github.com)

 

결과 

AS_IS : pv NAS 사용

TO_BE: pv hostpath적용 + single snapshot 적용

Task AS_IS 5회 평균 TO_BE 5회 평균
git-clone 2분 10초 21초
yarn-install 3분 10초 40초
yarn-build  5분 35초 5분 4초
dockerfile-create 9초 22초
docker-build 9분 42초 2분 45초
총 Task-run Time 20분 46초 9분 12초

 

 

추후 테스트 및 조정할 내용 

 

3. CPU / 메모리 조정 

적정은 산정하여, cpu: 2~4G 메모리도 2~4G 로 설정돼있으나, 

자주 사용하는 파이프라인은 메모리상황을 봐서 제한 상한을 더 높이는 방안을 고려중이다. 

 

4.yarn build 와 docker build 가 튜닝할 요소가 더 보이니 추후 연구 및 스크립트를 조정해볼 예정이다.