우리는 두 개의 다른 코드 기반 (Android 및 Node.js 웹앱)으로 두 가지 주요 종속성 관련 위기를 겪었습니다. Android 저장소는 Flurry에서 Firebase로 마이그레이션해야했으며 Google Play 서비스 라이브러리를 4 가지 주요 버전으로 업데이트해야했습니다 . 프로덕션 스택 (시더)이 더 이상 사용되지 않고 시더 -14로 업그레이드해야하는 Heroku 호스팅 노드 앱에서도 비슷한 일이 발생했습니다. PostgreSQL 데이터베이스도 9.2에서 9.6으로 업데이트해야했습니다.
이러한 앱의 각 종속성은 거의 2 년 동안 오래되었고, 일부는 더 이상 사용되지 않고 '일몰'기간에 이르렀을 때 앱 을 업데이트하거나 교체 하는 데 큰 어려움을 겪었습니다. 지난 한 달 동안 30 시간 이상을 보냈으며 두 번의 모든 갈등과 깨진 코드를 천천히 해결했습니다.
분명히 물건을 2 년 동안 놓아 두는 것은 너무 길다. 특히 Heroku와 같은 플랫폼 공급자를 사용하는 경우 기술이 빠르게 이동합니다. 우리가 본격적인 테스트 스위트와 Travis CI와 같은 CI 프로세스를 가지고 있다고 가정합시다. 예를 들어, 업그레이드 후 기능이 제거되어 사용중인 경우 테스트가 실패합니다.
얼마나 자주 종속성 업데이트해야하거나 할 때 종속성을 업데이트해야 하는가? 우리는 강제로 업데이트했기 때문에 어떤 선제 적 접근 방식이 더 좋을 것 같습니다 . 부 버전이 출시되면 업데이트해야합니까? 메이저 버전? 업데이트가있는 경우 매월? 모든 비용으로 방금 경험 한 것과 같은 상황을 피하고 싶습니다.
추신-개인 Rails 프로젝트 중 하나 인 Gemnasium 이라는 서비스를 사용하여 보안 취약점과 같은 알림을받을 수 있도록 종속성을 추적합니다. 훌륭한 서비스이지만 언급 한 프로젝트의 종속성을 수동으로 확인해야합니다.