개발자

장고 프레임웍 사용 경험을 공유해 주세요

2023년 02월 02일조회 1,535

장고로 프로젝트를 진행하고 있습니다. 기존 자바로 짜여진 구조를 리팩토링 하는 차원으로 파이썬과 장고로 만들어보고 있는데요 인터넷에 있는 많은 장고 튜토리얼, 게시판 문서들은 model 에서 id를 사용하고 fk를 적극적으로 사용해 orm을 무조건 사용하더라구요 하지만 실제 서비스 운영 배포되고 있는 서비스도 이런 구조로 사용하는지, 혹은 직접 쿼리를 날리거나 fk를 사용하지 않는지 등 참고할 만한 내용을 공유해주시면 감사하겠습니다. 덧붙여 모델을 만들어 db로 마이그래이션 하는게 당연(?)한건지 아무도 그렇게 안쓰고 db먼저 만들고 모델 생성하시는지 그런 것도 궁금합니다. 저는 후자가 맞는것 같은데 자료는 전자가 많아서... 입문용 자료라 그런건지..

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 3

인기 답변

강병진님의 프로필 사진

장고는 튜토리얼만 잘 따라하셔도 큰 문제없이 서비스를 운영할 수 있습니다. 질문에 답변을 드리자면 1. ORM을 활용하는 것이 일반적입니다. 장고에서 raw query를 작성할 수 있는 기능이 있지만 개인적인 경험상 사용할 일이 없었습니다. 저와 다른 경험을 하신 분들이 답변을 주시면 좋겠네요. 2. Foreign Key의 사용은 장고에서 쓰는 기능이 아니라 RDBMS를 효율적으로 사용하는 방법입니다. 관계형 데이터베이스에 대해 조금 더 학습하시면 이해할 수 있으실 거라고 생각합니다. 3. 장고 뿐만 아니라 서버 프레임워크는 프레임워크의 언어로 model이나 entity를 작성하고 해당 사항을 데이터베이스로 migration 합니다. 데이터베이스에 테이블을 먼저 생성하고 장고의 model을 작성하신 후 migration을 시도하시면 에러가 날거에요. 그 에러를 피하려고 Migration을 시도하지 않는다면 ORM을 사용할 수 없을 것입니다.

profile picture

익명

작성자

2023년 02월 03일

튜토리얼을 조금만 벗어나면 검색 결과의 양과 질이 낮아진다는 느낌을 받았습니다. 사용중인 DB를 그대로 사용하려고 고민해봤던건데 답변이 도움이 됐습니다. 감사합니다

강병진님의 프로필 사진

강병진

GS 52g Studio 개발자2023년 02월 03일

기존 데이터베이스를 재사용하는 목적이라면 장고에서 migration을 한 것처럼 처리하는 방법이 있습니다. 같이 찾아보시면 좋을 것 같아요!

profile picture

익명

작성자

2023년 02월 03일

감사합니다 inspectdb 명령어로 기존 db에서 모델을 뽑을 수 있게(?) 되길래 그렇게 사용하다보니 제가 일반적이지 않은 접근을 했던 것 같습니다. 덕분에 개념을 다시 잡을 수 있었습니다. 감사합니다!!

인기 답변

김필환님의 프로필 사진

다른 질문들은 다들 잘 설명해주셔서 db 마이그레이션만 답변드리면 1. 개발환경에선 manage.py migrate 명령을 잘 씁니다. 개발을 쉽고 빠르게 하기 위해서 입니다. local 환경의 db에서는 유용합니다. 만약 개발환경 DB 를 공용으로 쓴다면 migrate 명령이 다른 개발자들에게 영향이 없는지 잘 생각하고 써야 합니다. 예로 들어 칼럼 추가 명령은 이전 버전의 코드베이스에서는 문제는 없겠지만 칼럼 삭제 같은경우에는 다른 코드베이스에서는 장고 실행에 에러가 나기 때문에 바로 실행해선 안되겠죠. 2. 운영환경에선 migrate 명령은 사용하진 않습니다. 일단 장고 orm 의 migrate 로 나온 DDL 쿼리가 의도하던 것인지 검증이 필요하고, DDL 문을 실행 했을때 문제가 없을지 검토도 필요합니다. (정말 큰 테이블일 경우 칼럼 추가도 함부로 하면 장애로 이어질수 있습니다.) 그래서 보통은 makemigrate 명령으로 migrate history(log) 는 일단 코드에 남기고 sqlmigrate 명령으로 얻어진 DDL 쿼리를 추출한 후에 맞는 쿼리인지 개발자가 검토후에 배포시에 적절한 타이밍에 실행합니다. sqlmigrate 명령은 github PR 생성시 DDL 문을 추가해주는 자동화를 해주면 좀 더 마이그레이션 이력 관리에 도움이 될 것입니다. 장고 마이그레이션 기능은 꽤(?) 신뢰할 만한 기술입니다. 다만 자동화 기술이 다 그렇듯이 융통성이나 예외에 취약한 면이 있어서 적어도 개발자의 검증의 과정은 거치고 사용해야 하구요. 나머지는 개발팀의 성향과 주어진 환경에 맞게 적용하는게 필요하다고 생각이 드네요.

profile picture

익명

작성자

2023년 02월 03일

예와 설명 감사합니다 쉽게 이해가 됩니다. 저도 선배님같은 답변을 할 수 있는 시니어가 되고 싶습니다. 감사합니다ㅎㅎ

임동욱님의 프로필 사진

임동욱

오지라퍼 스타트업 개발자2023년 02월 03일

꽤(?) 신뢰할 만한 기술이라는 표현에 무릎을 탁치고갑니다 ㅎㅎ 꼬이면 정말 골치아프지만요 🤣

인기 답변

임동욱님의 프로필 사진

1. FK 현업 사용여부 너무 당연하게 사용합니다 물론 몇몇 이전 프로젝트에선 FK를 사용하지 않는 케이스도 있지만 이는 “관계형 데이터베이스”에서 “관계형”을 빼는 것과 마찬가지 일 것입니다. 또한 Django를 쓴다면 ORM에서 raw query를 사용하지 않고는 join절을 마음대로 컨트롤 할수 없고 오롯이 관계형을 지정한 데이터에 대해서 데이터를 함께 불러올 수 있습니다 (이부분은 장점이면서 단점입니다) 2.Django ORM Java Spring 을 사용했을 것 같은데요 Spring은 데이터베이스를 이용하는 방법을 여러가지로 선택해서 사용가능합니다. 굳이 표준이라는 것이 정의 되지않고 ORM을 쓰지 않는다고 해서 Spring의 고유 영역들을 사용하지 못하는 것이 아닙니다 하지만 Django는 다릅니다 ORM자체가 프레임워크에 종속적이고 많은 부분들이 유기적으로 연결되어있습니다. Raw쿼리를 사용하는 때는 정말 한정적이고, 또한 DB 테이블 만들고 그 후에 모델에 연결시키는 것은 ORM을 적극적으로 활용하기엔 어려울 수 있습니다. 물론 기존 DB가 존재하는 경우라면 그렇게 접근 할 수 있지만 결국 내가 Model에 정의한 내용과 DB에 정의한 내용의 싱크를 맞춰줘야하므려 마이그레이트는 필수적인 요소가 될 듯합니다. 그렇지않으면, ORM은 데이터를 불러오는 수단일 뿐 코드레벨에서 데이터베이스를 핸들링하는 도구로써 의미를 잃어버리니까요. 이부분은 ORM을 왜 사용하는지를 먼저 공부해보시면 좋을 것 같습니다.

profile picture

익명

작성자

2023년 02월 03일

아마 질문 구조가 부실했나봅니다. 장고에서 FK를 적극적으로 사용하고 있는가 에 대한 내용이었습니다. 기존 DB구조를 변경하지 않고 싶었고, 장고 모델에서 FK 지정 없이 사용하는 사례가 있는지 알고 싶었습니다. 말씀하신 ORM에 대해 좀 더 이해할 수 있는 답변이 됐습니다. 감사합니다.

임동욱님의 프로필 사진

임동욱

오지라퍼 스타트업 개발자2023년 02월 03일

적극적이라는 표현이 사실 무색할정도로 FK를 사용하지 않고는 django orm에서 관계형을 운영하기가 힘이듭니다! 기존 데이터베이스가 fk를 안사용하는 곳이었나봅니다

profile picture

익명

작성자

2023년 02월 03일

네ㅎㅎ 관례라고 할까요 정책이라고 할까요 그런 부분이 있는듯하여 저 혼자 개인적으로 진행중이어서 사수에게 여쭙기도 어렵고 했습니다. 덕분에 방향이 잡혔습니다. 감사합니다

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!