# :latest 를 사용하지 마세요

> Clean Markdown view of GeekNews topic #6097. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=6097](https://news.hada.io/topic?id=6097)
- GeekNews Markdown: [https://news.hada.io/topic/6097.md](https://news.hada.io/topic/6097.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2022-03-07T10:05:04+09:00
- Updated: 2022-03-07T10:05:04+09:00
- Original source: [platformers.dev](https://platformers.dev/log/2022-03-02-latest-literally-kills-puppies/)
- Points: 15
- Comments: 0

## Topic Body

- Dockerfile 에서 :latest 는 CD의 가장 중요한 요구사항인 "재현 가능한 멱등 빌드"를 깸   
→ 빌드를 실패하게 할뿐만 아니라 프로덕션 오류를 발생시키기도 함   
- 쿠버네티스 Pod Manifest에서 latest를 지정하는 것은 더 안 좋음  
→ Dockerfile에선 롤백이라도 가능하지만, 배포 manifest에서 해버리면 새로운 Pod이 롤아웃되는 아무 시점에나 호환성을 깰 우려가 생김   
- PIP, Package.json, Terraform 등에서도 특정버전 이상의 것으로 지정하거나 버전을 명시하지 않으면 latest 사용과 똑같은 효과를 만듬   
- 프레임워크들이 제공하는 Lockfile 과 같은 기능은 꼭 사용할 것   
  - 소스컨트롤에 락 파일 커밋  
  - 새로운 기능 적용/버그픽스/보안픽스 등 할때 terraform init -upgrade 같은거 호출하고 락파일 커밋할 것  
  - CI 도중에는 락파일 업데이트 하지 말기   
  - 락파일 종류   
    - Terraform : .terraform.lock.hcl   
    - Python : Pipfile using Pipenv   
    - Node/Yarn : yarn.lock   
    - Go : go.sum 과 go.mod   
- 가능하면 런타임에서는 종속성 풀링 하지 말 것  
→ 종속성을 배포가능한 아티팩트로 만들고, 버저닝 할 것  
- Twistlock / Grype 같은 서비스로 취약점 스캐닝할 것

## Comments



_No public comments on this page._
