SW개발/Django

[Django]1.11에서 3.2로 버전 업그레이드 방법 (마이그레이션)

이번 게시물에서는 실제 운영중인 서비스의 장고 버전을 업그레이드 하면서 좋은 팁들과 경험을 공유해보려고 합니다.

 

관련 공식 문서의 링크는 아래와 같습니다.

https://docs.djangoproject.com/ko/3.2/howto/upgrade-version/

 

Django를 최신 버전으로 업그레이드하고 있습니다. | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

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 버전으로 업그레이드 해두시는 편이 여러모로 좋습니다. 보안, 새로운 기능등 여러 부분에서 얻을 수 있는 장점들이 많습니다.

 

728x90