Django, Spring, Node.js의 특징과 장단점

2021. 7. 14. 16:50Server

💎 Django Framework

특징

  • MVT 패턴
  • ORM 기반 프레임워크

 

 

MVT 패턴이란?

Model: 데이터 관련 DB

View: Model과 View를 연결해주며, 함수 정의

Tamplate: 실제로 화면을 보여주는 인터페이스

 

ORM 기반 프레임워크란?

객체 지행 프로그래밍에서 객체라는 개념을 구현한 클래스와 RDB에 쓰이는 데이터인 테이블을 자동으로 연결하는 것으로 SQL문이 필요 없다.

 

장고 MVT 패턴과 파일 구조

장고는 Urls.py에서 넘어온 요청을 View.py의 함수와 연결되고 함수에서 model.py에서 데이터를 읽어와서 함수를 수행한 뒤 render 함수를 통해서 template에 딕셔너리 형태로 데이터를 넘겨주고 넘겨받은 데이터를 가지고 html에서 작업을 수행한다.

 

Django의 장점

  1. Python의 다양한 라이브러리 사용 가능하여 개발 속도가 빠르고 생산성이 크다
  2. 인증, 관리와 같은 기본적인 기능들이 기본 모듈로 제공된다. -> 특히 Admin을 사용하여 관리

Django의 단점

  1. 인터프리터 언어라서 실행 속도가 느리다. -> 성능이 떨어진다
  2. Django는 프레임워크 특화 기능보다 ptython으로 문제를 해결하는 편이다.

 

💎 Spring Framework

자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크

 

특징

  • MVC 패턴
  • 관점 지향 프로그래밍(AOP) - 관심사 분리
  • 의존성 주입(DI) -  각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜줌
  • 제어역행(IOC) - 컨트롤의 제어권이 사용자가 아니라 프레임워크에게 있어서 스프링에서 사용자 코드 호출
  • 경량 컨테이너 - 크기와 부하의 측면에서 경량, 애플리케이션 객체의 생명 주기와 설정을 포함하고 관리측면에서 컨테이너

 

MVC 패턴에서 Model은 3가지로 분리 ❗

    • DAO (Data Access Object) -실제로 DB에 접근하는 객체 (DB(DB 전용 객체)
    • DTO (Data Transfer Object) – 데이터 교환을 위한 자바 객체 (데이터를 레이어 간 전달하는 것이 목적으로 속성으로는 SetterGetter을 가지고 있음
    • Service 비즈니스 로직이 들어가는 부분 (Controller가 적절한 비즈니스 로직을 가지고 있는service를 선택해서 선택된 service가 적절한 처리를 하여 반환)

👀 Spring Framework 실행 흐름도

Request -> DispatcherServlet -> HandlerMapping -> (Controller -> Service -> DAO -> DB -> DAO -> Service -> Controller) -> DispatcherServlet -> ViewResolver -> View -> DispatcherServlet -> Response

 

자세히 보기

  1. 클라이언트가 Request 요청 시 DispatcherServlet이 web.xml에  등록된 내용을 가로챈다. 최초의 web.xml 에서는 이 '/' default라서 이 범위를 바꿔주면 특정 URL만 적용 가능하다.
  2. DispatcherServlet이 가로챈 요청을 HandlerMapping에게 보내 해당 요청을 처리할 수 있는 Controller가 있는지 확인
  3. 실제 로직 처리
  4. 로직 처리 후 ViewResolver를 통해 ViewResolver가 view 화면을 찾는다.
  5. 찾은 View 화면은 View에 보내면 이 결과를 다시 DispatcherServlet에게 보내고 DispatcherServlet는 최종 클라이언트에게 전송한다.

 

Spring FrameWork 장점

  • 프레임워크 특화 기능들이 많아서 간단한 컴포넌트로 복잡한 애플리케이션을 구성할 수 있음
  • AOP -> 코드를 깔끔하게 작성 가능, 재사용성 올라감
  • DI -> 설정 파일 부분에서 객체를 가지고 오니까는 다양한 DB 사용, DB마다 메서드 바꿀 필요 없음

 

Spring FrameWork 단점

  • Spring Boot가 아닐 시 초기 환경 구축에 많은 시간이 소요
  • 설정이 복잡
  • 컴포넌트로 존재하지 않는 기능을 사용할 경우 개발 공수가 크다.

 

💎 Node.js Express Framework

Node.js Express Framework 장점

  • 싱글그레드, 비동기 IO 처리에 기반한 빠른 속도 -> CPU 대기시간 최소화, CPU 부하 적음 -> 많은 커넥션을 동시에 처리해야 하는 구조에 적합
  • Chrome의 V8 자바스크립트 엔진을 기반으로 성능이 뛰어남
  • 파일 I/O나 네트워크 처리를 이벤트 드리븐 방식으로 처리하기 때문에 빠른 처리가 가능함

 

Node.js Express Framework 단점

  • 싱글 스레드 모델이라 하나의 작업에 시간이 오래 걸리면 시스템 전체의 성능이 급격히 낮아진다.
  • 불편한 비동기 프로그래밍 모델 -> Async & Await 모듈
  • 멀티코어를 사용하려면 Cluster 모듈 이용, 세션 공유 시 부가적인 작업 필요

 

멀티코어를 이용하고 무중단 서버를 가능하게 하는 PM2

exec_mode  항목값을 ‘cluster’로 설정하면 애플리케이션을 클러스터 모드로 실행하겠다는 의미이고, instance  항목값을 ‘0’으로 설정하면 CPU 코어 수 만큼 프로세스를 생성

🤞 Node.js 용어 정리

Node.js : 런타임 환경

Express : NodeJS Framework

NPM : NodeJS package manager

PM2 : NodeJS process manager

 

 

참고자료

https://devpad.tistory.com/24

https://elky.tistory.com/652

https://engineering.linecorp.com/ko/blog/pm2-nodejs/

'Server' 카테고리의 다른 글

인증 방법인 Cookie와 Session에 대해 알아보자  (0) 2021.03.24
JWT에 대해 알아보자 ❗  (0) 2021.01.16
Web Server와 WAS의 정의와 차이  (0) 2021.01.15