이번 게시물에서는 실제 운영중인 서비스의 장고 버전을 업그레이드 하면서 좋은 팁들과 경험을 공유해보려고 합니다.
관련 공식 문서의 링크는 아래와 같습니다.
https://docs.djangoproject.com/ko/3.2/howto/upgrade-version/
1. 하나의 기능 버전을 차례로 올리는 것이 좋습니다.
1.11을 사용중이라면 2.0 -> 2.1 -> 2.2 -> 3.0 -> 3.1 -> 3.2 와 같은 순으로 업그레이드 하는 편이 좋습니다.
1.11에서 3.2로 한번에 업그레이드 할 경우, 그 동안의 릴리즈에서 변경된 사항들이 많기 때문에 문제를 해결하는데 시간을 굉장히 많이 투자해야 됩니다. 각 기능 버전에 대한 release note를 참고하여 차례로 업그레이드 하는 방법으로 시간을 절약할 수 있습니다.
2. 각 기능 버전의 릴리즈 노트를 정독 후 진행합니다.
버전이 올라가면 새롭게 생기거나 deprecated되는 기능들이 많기에 업그레이드 하려는 기능 버전의 release note를 꼭 정독하고 진행하시기 바랍니다. 대부분의 경우에는 릴리즈 노트에 명시되어 있어 대체하거나 옵션을 추가하는 방식으로 해결할 수 있습니다.
3. third-party 라이브러리 마찬가지로 업그레이드 합니다.
대부분의 인지도 있는 third-party 라이브러리의 경우 장고 버전 업그레이드에 따른 대응을 하고 있습니다. 사용하는 라이브러리의 pypi, github를 방문하여 업그레이드를 원하는 장고 버전을 지원하는지에 대한 유무를 파악할 수 있습니다.
다만, 지속적인 업데이트가 이루어지지 않는 라이브러리 경우에는 지원을 하지 않을 수도 있습니다. 이때는, 다른 라이브러리로 대체하거나 직접 코드를 수정해서 사용하셔야 합니다.
저 또한 이런 경우를 겪었는데, 해당 라이브러리의 코드를 수정한 후 PR을 날리고, 개발자에게 contact하여 merge하는 방식으로 해결할 수 있었습니다.
4. 테스트 코드를 적극적으로 활용합니다.
그동안 작성한 테스트 코드가 있다면 적극적으로 활용하여, 기능의 정상 동작 유무를 판단할 수 있습니다.
저 역시도 겉으로 볼때는 모든 것이 정상적으로 동작하는 것처럼 보였지만, 테스트 코드를 돌려보며 어떠한 기능의 동작에 문제가 있음을 파악할 수 있었습니다. (평소에 테스트 코드를 잘 작성해 두어야 하는 이유 중 하나입니다)
5. 업그레이드는 미루지 않는 것이 좋습니다.
업그레이드를 미루다 보면 나중에는 업그레이드가 아예 불가한 상황이 올 수도 있습니다. 여건이 된다면 LTS 버전으로 업그레이드 해두시는 편이 여러모로 좋습니다. 보안, 새로운 기능등 여러 부분에서 얻을 수 있는 장점들이 많습니다.
'SW개발 > Django' 카테고리의 다른 글
[Django]Side effect 를 방지하는 테스트 코드 작성법 (0) | 2022.03.17 |
---|---|
[Django]GenericForeignKey의 문제점 (feat. 안티패턴의 지름길) (0) | 2021.11.23 |
[Django]silk로 프로파일링 하기 (0) | 2021.08.20 |
[Django]setUp() vs setUpTestData() 차이점 (0) | 2021.08.16 |
[Django]get_object() 란? (0) | 2021.08.13 |