궁금한게 많은 개발자 노트

[ python ] Django에 대한 이해 본문

Back End

[ python ] Django에 대한 이해

궁금한게 많은 개발자 2023. 7. 17. 11:40

Django란 Python을 기반으로 웹 개발을 쉽게 할 수 있도록 도와주는 웹 프레임워크입니다. 기본적으로 로그인, 회원가입, 인증, CORS, Admin등 반복적으로 구현해야 하는 부분들은 대부분 구현이 되어있습니다.

또한, Python을 사용할 수 있으므로 다양한 라이브러리들을 사용하여 손쉽게 웹 서버를 구축할 수 있습니다.

 

Django의 장점으로는 

Django에서 웹 페이지를 생성할 때 Frontend와 관련된 프레임워크(Vue, React, angular)를 사용하지 않고도 만들 수 있습니다. DTL(Django Template Language)를 사용하여 template에 html을 넣어 웹 페이지를 생성할 수도 있습니다. (Full Stack)

데이터베이스와의 연동에 있어서도 ORM(Object Relation Mapping)기능을 제공하여, 객체와 관계형 데이터베이스를 SQL없이도 코드상에서 접근 제어할 수 있습니다. Model 클레스로 작성하여 Object와 실제 데이터베이스의 테이블을 매핑해줌으로써 간편한 작업이 가능합니다.

 

하지만 Django의 단점도 존재합니다.

Python을 기반으로 하므로 인터프리터 언어로 실행 속도가 느리다는 단점이 있습니다. 이는 성능과도 직결될 수 있습니다. 또한, 인터프리터 언어라는 것은 컴파일러에서 실행 전에 에러를 잡아주지 않는다는 단점도 개발 과정에서는 불편할 수 있습니다.

이미 Django라는 프레임워크를 사용하는 것이므로 해당 프레임워크에서 해결할 수 없는 문제들은 python을 사용해서 직접 해결하거나 수 많은 이미 만들어진 기능의 커스텀이 필요한 경우, Django의 구현 의도를 파악하고 해석하기에 시간이 걸릴 수 있습니다.

 

추가로 Django에서 제공하는 ORM을 사용하는 것의 장단점도 존재합니다.

장점으로는 대량의 SQL Query를 사용하지 않고도 객체 간의 관계를 풀어낼 수 있기에 개발자가 직관적으로 객체의 관계를 파악하기에 용이합니다. 또한 객체로 테이블을 정의하므로 재사용 및 유지보수가 편리합니다.

가장 큰 장점으로는 DBMS의 의존성을 낮출 수 있으므로 DBMS를 교체하는 작업에서도 비교적 적은 리스크와 시간이 소요됩니다.그에 따라 마이그레이션도 쉽게할 수 있습니다.

 

단점도 있습니다. 직접 SQL을 작성하는 것보다 객체의 관계가 복잡해진다면 접근 및 제어가 복잡해질 수 있고, 그에 따라 구현 난이도가 올라갈 수 있습니다. 또한 직접 서버에서 DB로 Query를 보내는 것이 아니므로 한 단계 증가한 레이어에 의한 성능 저하가 발생할 수 있습니다.

개인적으로 가장 큰 단점이라 생각되는 점은 ORM을 사용함으로써 DBMS에 종속성은 낮아지지만 Django에 의존성이 점점 커진다는 단점은 크다고 생각합니다. MSA구조가 만연한 시점에서 Django의 의존성이 커지만 서버의 덩치가 점점 커질 수 있고 그에 따라 복잡성이 높아지고 응집도가 낮아질 수 있다고 생각합니다. 또한 Django에 대한 충분한 이해가 없는 경우 이해하기 쉽지 않으므로 여러 서비스를 동시에 개발하거나 연동/협업하는 경우 단점이 부각될 수 있다고 생각하니다.

 

'Back End' 카테고리의 다른 글

[ Architecture ] Microservice와 Monolithic  (0) 2023.07.22
[ python ] FastAPI에 대한 이해  (0) 2023.07.17
[ django ] psycopg2 psycopg2-binary 차이  (0) 2023.05.16
RDBMS와 NoSQL의 차이  (0) 2023.05.09
[ Spring ] JPA란?  (0) 2022.10.24
Comments