NakedFlower 님의 블로그
[Infratice] GitHub Actions 빌드 실패 로그 분석 본문
프로젝트를 많이 진행하면 할수록 느끼는 점이 AI를 많이 써서 그런가...
인프라적으로 Troubleshooting이 너무 더디게 늘고 있다는 생각이 들었다.
더군다나 인프라 쪽은 AI의 답변을 내가 하고 있는 프로젝트들처럼 쉽게쉽게 적용해보고 디버깅해볼 수 없다는 점에서 확실히 엔지니어링적인 전문 지식을 높여야겠다는 생각이 들었다. 그래서 공부할 방법을 찾다가 누군가 프로젝트성으로 만든 것 같은 좋은 사이트를 발견하게 되서 공부도 할겸 기록으로 남겨보고자 한다.
참고로, 프로젝트는 나름 많이 진행해봤다고 생각하지만 시대가 시대인지라 AI를 많이 썼다는 걸 인정하고 갈 수 밖에 없다. 그로 인해서 아래 트러블 슈팅 과정이 전문가분들이 보시기에 상당히 유치하고 봐주기도 힘든 수준도 안될 수 있다는 점...미리 양해 부탁드립니다ㅠㅠ
(하지만 열심히 공부해서 언젠가는 개쩌는 시니어가 되보도록 하겠습니다ㅎㅎ)
Infratice — AI와 함께 푸는 인프라 트러블슈팅
DevOps Troubleshooting Practice 무거운 서버 구성 없이, 실무 수준의 인프라 장애 시나리오를 마주하고 해결 능력을 키워보세요.
infratice.co.kr
먼저 문제는



이렇게 나와 있었다.
그래서 나는 peer dependency 가 안 맞아서 에러가 나는구나 라고 생각하고 아래처럼 답변을 적었다
package.json 에서 react-beautiful-dnd 버전이 13.1.1로 되어 있는데, 이 버전을 쓸 수 있는 react 버전은 16.8.5랑 17.0.0이랑 18.0.0인데 현재는 19.0.0을 명시해놔서 버전이 안 맞아서 진행을 못함. 해결하려면 react 버전을 낮추든가 아니면react-beautiful-dnd 버전을 19.0.0에 맞춰서 작성.
위 내용을 가지고 먼저 모범 답안과 비교해봤다

권장 방법이 아무래도 React 19를 지원하는 대체 라이브러리라고 되어 있는 걸보면 아마 react-beautiful-dnd 가 deprecated 되었나보다.
근데 마지막에 lock 파일을 커밋하고 npm ci를 하게 되면 뭐가 달라지는걸까...
이걸 조사하는 과정에서도 몇 가지 새로운 지식을 얻게 됐다.
일단 첫번째,
- 로컬: npm install → peer dependency 느슨하게 처리 (경고만)
- CI: npm ci → lockfile 기반 + 엄격하게 검증 → 실패
그동안 무식하게 AI가 던져주는 명령어도 그대로 입력하다보니 사실 npm install과 npm ci의 차이를 정확히 모르고 있었다.
그리고 두번째,
- package.json
"react": "^19.0.0"인 경우 19.x.x 중 최신 버전 아무거나 설치된다.
즉, 실행 시점마다
어제: 19.0.0
오늘: 19.0.2
CI: 19.1.0 (새로 배포됨) - package-lock.json :
react: 19.0.0
react-dom: 19.0.0
scheduler: 0.25.0
즉, 이 프로젝트는 정확히 이 버전 조합으로 동작한다는 걸 고정하는 역할을 수행한다.
그리고 마지막 세번째,
- npm install
- package.json 기준
- lockfile 참고는 하지만 업데이트가 가능하고, 경우에 따라 lockfile이 변경됨 - npm ci
- lockfile 100 % 신뢰
- lockfile과 다르면 에러 반환
위의 내용을 토대로 package-lock.json과 npm ci를 활용하면 항상 동일한 환경으로 배포가 가능함을 추가로 알 수 있었다.
'Troubleshooting' 카테고리의 다른 글
| [Infractice] 컨테이너 간 통신 불가 원인 분석 (0) | 2026.05.28 |
|---|---|
| [Infratice] 디스크 용량 100% 원인 프로세스 찾기 (0) | 2026.05.11 |
| [Infratice] GitHub Actions 작업 무한 대기로 인한 러너 점유 (0) | 2026.04.28 |