인프런 커뮤니티 질문&답변
몽구스 디비
작성
·
323
답변 3
6
각 프레임워크 개발팀의 철학의 차이라고 생각합니다.
django의 철학은 개발자가 최소한의 코드만 사용할 수 있도록 프로젝트에서 공통적으로 필요한 라이브러리들과 구조들을 모두 제공해줍니다. 심지어 로그인, 인증, 관리자 페이지, 세션 스토리지 기능까지 제공합니다.
이러한 이점으로 빠르게 프로젝트를 런칭해야 하는 경우나 인력이 적은 규모의 프로젝트에서 사용되기에 매우 적합합니다. 하지만 프로젝트의 규모가 커지면 django만의 기능으로는 한계가 있어서 결국에는 django 외의 라이브러리나 기능을 구축해야 합니다. (python 웹 프레임워크 중에 fastapi와 flask는 django와는 달리 개발자가 직접 구축해야 합니다.)
nodejs 웹 프레임워크 중에 flask와 대응되는 것이 express입니다. express는 flask처럼 구조를 제공해주지 않고 필요한 아주 기본적인 코드만 제공해줍니다.
그리고 저희가 사용하는 NestJS는 django처럼 구조를 제공해줍니다.(controller - django의 urls, service - django의 views 등등) 하지만 django처럼 필요한 모든 기능은 제공해주지 않습니다.
여기서 이점은 개발자가 처음부터 프로젝트를 설계할 때 유연하게 시작할 수 있다는 것입니다. 즉, NestJS는 express나 flask처럼 개발자에게 구조와 로직을 전부 설계하도록 위임하는 것도 아니고 django처럼 과하게 모두 제공하는 것도 아닌 중간 단계로 적절히 구조를 제공해주고 필요한 것은 개발자가 알아서 선택해서 사용할 수 있도록 하는 것이죠.
사실 저도 개인적으로는 NestJS 자체적으로 아주 좋은 ORM을 만들어서 통일 시켜줬으면 합니다.
하지만 제 생각엔 TypeORM, Mongoose, Prisma 와 같은 ORM, ODM 라이브러리가 성숙해서 NestJS 개발팀이 개발자가 알아서 선택하도록 하는 방향으로 정한 것 같습니다.
(django가 개발될 시점에는 SqlAlchemy를 제외하고는 적절한 ORM이 없었기 때문에 django 자체적으로 만든 것 같기도 합니다.)
결론적으로 NestJS는 Django와 Flask(또는 express)의 중간 단계로 적절히 선을 지키며 제공해 주는 것입니다.
2
안녕하세요 🙂
django의 경우는 nestjs와는 다르게 내부적으로 기본적인 django orm이 내장이 되어 있습니다. 그리고 django orm은 기본적으로 mongodb를 지원하지 않습니다. spring 또한 유사하게 mongodb보다 sql을 지원합니다. 따라서 spring이나 django 강의에서는 mongodb가 반드시 필요한 상황이 아니면 기본적으로 sql 기반으로 설명하는 것 같습니다.
nodejs에만 특히 mongodb를 많이 사용하는 이유는 mongodb 자체가 nodejs와 호환이 정말 잘되는 것입니다. (mongodb는 json과 유사한 bson 객체로 데이터를 저장합니다.) 또한 mongodb의 odm중 가장 유명한 mongoose가 nodejs 위에서 동작합니다. (python에서는 odmantic이 있습니다.)
마지막으로 mongodb는 자바스크립트 문법을 잘 안다면 SQL처럼 따로 문법을 배우지 않고도 쉽게 배울 수 있습니다. 그래서 nodejs 에서는 mongodb 기반인 강의가 많은 것 같습니다.
강의에서 언급했듯이 mongodb와 sql은 어느것이 더 좋고 그런 것이 없습니다. 프로젝트 성격에 따라 다르고 개인적으로 사실 결국에는 둘 다 알아야 한다고 생각합니다.
0
아.. 그렇네여 .. 감사합니다 !
django 에선 orm 을 어떠한 라이브러리를 받아서 사용한다거나 그러지 않았는데
이번에 node js 를 공부하게 되면서 sequelize 나 typeorm 은 라이브러리 를 사용하기 위해서 npm install 를 받아서 사용을 해야하는데 ,
이렇게 설계한 이유가있을까요 ? 똑똑한 분들이 만드셨을껀데 ,
django 같은 경우 django-admin startproject test 했을때 mysql 연동후 바로 orm 을 사용할수있게 만들었는데 ,
node js 만드신 분들도 express 프레임 워크를 사용할때도 Nest JS 프레임워크를 사용할때도
설치하자말자 sequelize 를 내장되게 , nest js 에선 typeorm 이 내장되게 할수있지만 안한 이유가 있을까요 ??





.png?w=112)