Skip to content
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까지 테스트 했었음