Django vs NodeJS vs NestJS

커피 내리는 그냥 사람·2021년 6월 11일
0

취업 및 면접준비

목록 보기
16/20

1. 세 프레임워크 알아보기

Django

by MDN

1. django 정의 :

"Djano란 보안이 우수하고 유지보수가 편리한 웹사이트를 신속하게 개발하는 하도록 도움을 주는 파이썬 웹 프레임워크입니다. 훌륭한 개발자에 의해 만들어진 이 프레임워크는, 웹 개발을 하는데 많은 도움을 주기 때문에 새롭게 웹 개발을 시작할 필요없이 그저 프레임워크를 활용하여 앱 개발에만 집중할 수 있게되죠. 무료 오픈소스인데다가, 활발한 커뮤니티들이 있고, 좋은 참고자료와 무료 및 유료 지원을 하는 옵션들이 제공됩니다."

2. Django 특징

  • 완결성 : 개발자가 하고 싶은 모든걸 할 수 있게 해준다
  • 다용도 : 다양한 웹사이트 빌드 가능
  • 안전성 : 보안 문제
  • 확장성 : 컴포넌트 기반 shared-nothing 아키텍쳐 제공
  • 유지보수 용이 : 유지보수, 재사용 쉬움(DRY 법칙), app화
  • 포터블 : 파이썬 기반, 다양한 운영체제에서 작동 가능

3. Django 탄생 배경

"장고는 신문 웹사이트를 제작 및 관리하던 어떤 웹 팀에 의해 2003년에서 2005년 사이에 처음으로 개발이 시작되었습니다. 여러 사이트들을 만들면서 웹 팀은 많은 공통 코드와 설계 패턴을 뽑아내어 재사용하였습니다. 이 공통 코드는 일반 웹 개발 프레임워크로 발전했습니다. 그리고 2005년 7월 "장고" 프로젝트로서 오픈소스화 되었죠"

4. Django MVT

5. Django의 장단점

(장점)

  • 파이썬 라이브러리 사용 가능
  • 기본적인 기능들을 미리 만들어 제공해 쉽고 빠르게 개발
  • FullStack 이 가능

(단점)

  • 파이썬 기반이다보니 속도가 느리다
  • 세세한 조정이 힘들다
  • Django ORM만 사용할 수 있다는 점
  • Full System 지식이 필요하다는 점

NodeJS

참고링크
참고링크

1. NodeJS 정의 :

" Node.JS 는 웹브라우저에 종속적인 자바스크립트에서 외부에서 실행할 수 있는 Runtime 환경을 Chrome V8 엔진을 제공하여 여러 OS 환경에서 실행할 수 있는 환경을 제공"

즉 웹브라우저에 갇혀있던 JS를 서버 등에서도 돌릴 수 있게 해준 것이라 볼 수 있다.

2. NodeJS 특징 : 휴게소 식당 생각해보기

  1. 싱글 스레드의 논블러킹 I/O 이벤트 기반 비동기식 방식으로 작동한다.
  • 주문은 한 곳에서 받지만(싱글스레드) 호출은 따로 따로 부른다.(비동기방식)
  1. JS (V8엔진) 런타임이다
  2. 요청은 한 곳에서 받지만 작업은 실질적으로 멀티스레드로 운영하여 결과를 구현한다
  • 음식은 입점된 식당에서 받는다.

아무리 일이 많아도 스레드가 1개이므로 메모리 사용과 시스템 리소스 사용에는 변화가 없다. -> 대규모 네트워크 프로그램 개발에 적합
but 스레드 하나가 무너지면 프로그램 전체에 문제가 발생할 가능성이 있다.

3. NodeJS의 장단점 + 잘 어울리는 웹 서비스

(장점)

  • 자바스크립트를 사용한다는 점
  • 비동기식이라 서버 무리가 적다는 점
  • npm이 다양한 패키지, 모듈을 제공한다는 점
  • C++ 기반 V8엔진이라 확장성이 좋다는 점

(단점)

  • 비동기 방식이라 서버단 로직이 복잡해지면 콜백지옥에 빠질 위험 있다는 점
  • 단일스레드이기 때문에 하나의 작업 자체가 많이 걸리는 웹서비스는 맞지 않다는 점
  • 코드가 수행되어야 에러가 있는지 확인이 가능하다는 점.(에러 나면 프로세스 자체에 문제가 발생해버릴 수 있음) -> 모든 케이스에 대한 소스코드 검증이 필요하다는 점.

<그래서 잘 어울리는 서비스?>

  • 간단한 로직.
  • 대용량(동시에 여러 request를 처리)
  • 빠른 응답시간 요구
  • 빠른 개발 요구
  • 비동기방식에 어울리는 서비스(네트워크 스트리밍 서비스, 채팅 서비스 등)

NestJS

참고링크
참고링크
참고링크

1. NestJS 정의 :

  • 노드js의 서버사이드 api를 구축하기 위한 웹프레임워크, 노드익스프레스, 페스티파이와 호환이 가능하다.
  • 타입스크립트 기반, 기본적으로 객체지향프로그래밍, 함수형 프로그래밍, 함수 반응형 프로그래밍이 가능하다.

NodeJS의 무엇이 불편해서 나왔는지는 조금 더 고민해볼 것.

2. NestJS 특징 :

  • Node 아키텍쳐 보완 : 통일성 있고 구조적인 작업이 가능
  • 안정성 : TypeScript 지원, 모듈별 테스트 가능
  • 확장성 : 모듈식 아키텍쳐의 특징
  • 캡슐화 : 컨트롤러, 서비스 등을 묶어 모듈 파일 내에서 관리(OOP 가능)

3. NestJS 장/단점 :

(장점)

  • Express, Fastify와 호환된다는 점
  • TypeScript, OOP, FE 등이 지원된다는 점
  • 좋은 아키텍쳐와 구조를 가지고 있어 처음부터 시작하지 않아도 된다는 점

(단점)

  • 아키텍쳐로 인한 러닝커브
  • NodeJS에 비해 strict한 구성(NodeJS의 철학 : 간결함과 실용주의)

2. 비교 :

  • 명확히 딱 장단점이 구분이 안 된다. 아무래도 NodeJS는 실제로 사용해본 적이 없고 나머지 웹프레임워크도 많이 사용해 본 경험이 없어서 그런 것 같다.

profile
커피 내리고 향 맡는거 좋아해요. 이것 저것 공부합니다.

0개의 댓글