On this page
장고 사용 시 문제점
On this page
장고 사용 시 문제점
Model
- 기타 데이터의 경우 DB에 넣기가 애매했는데 JSONField 사용하여 해결했었음
- 수정의 경우 원본 데이터 <-> 수정할 데이터를 같이 보여주고 승인하는 화면이 있어 데이터 구성이 애매했음
- PickledObject를 사용하여 해결했음
- 구현 중 PickledObject가 업데이트 시 장고의 instance full_clean을 하면 단순 JSON이 되어버리는 문제가 발생함.
- clean에서 변수 이름으로 제외해서 해결함
- PickledObject는 너무 과하고, 차라리 JSON으로 구성하는게 어떤가 하는 생각을 함
Migration
- DB 필드 변경 시 ROW가 많을 경우 단순 추가 마이그레이션이라도 매우 부담됨
- 650만 ROW 기준 마이그레이션이 10분정도 소요됨
- 별도 테이블을 따서 방어 로직을 만들고, 커맨드 라인으로 데이터 이전하는 작업으로 최대한 ROW가 많이 쌓인 테이블을 건드리지 않음
- 단순 Help Text나 Choice가 바뀌더라도 마이그레이션이 생성됨
- 모델 클래스에 필드가 들어가 있으면 ORM 요청 시 무조건 해당 필드를 요청하기 떄문에 에러가 발생함
- 필드 추가 후 마이그레이션 생성, 필드 주석처리 후 해당 마이그레이션 파일만 배포해 마이그레이션 후 주석 제거함
- 해당 방법은 휴먼 에러가 발생할 가능성이 매우 높음
Test
- 테스트 메소드를 만들어 두었으나, 개발 중 기획이 바뀌면서 API 수정이 과해져, 유지하는게 점점 힘들어짐
- 이미지 업로드 테스트, 결제 테스트 등 일부 테스트의 경우 수행 자체가 불가한 케이스가 발생
- 테스트 개발 시간이 별도로 소요됨. 물론 이것 덕분에 많은 버그 케이스를 잡았음
- 초기 기획했던 테스트가 나중에 봤을 때 리팩토링이 필요한 경우가 많음. 이 경우 시간이 갈수록 고치기 힘들어짐
- 모든 쿼리를 조회하는 테스트를 만들고 싶었는데, graphql 구조상 무한 순환이 가능하여 완전한 테스트는 힘듬.
- 차후 2 depth까지 테스트 했었음