일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Get
- javascript
- terminationGracePeriodSeconds
- html
- topologySpreadConstraints
- mysql
- ssh
- spring
- post
- AWS
- Java
- MySQL Error
- zombie-hit apartment
- node.js
- 인생이재밌다
- AWS RDS
- ajax
- Kubernetes
- spread operator
- 예매로직
- sessionStorage
- Bootstrap
- git
- mongodb
- AWS Route53
- chartjs
- json
- 영화예매
- jsp
- ES6
- Today
- Total
jongviet
Aug 6, 2021 - node.js express vs java spring 차이? 본문
*8월6일
-node.js에 대한 속성 강의 하나를 듣고, node.js express와 java spring의 차이점이 궁금해서 구글링을 통해 확인해봤다.
-결론부터 말하자면 구현하려는 서비스에 적합한 것을 선택하는 것이 맞고, 어느 것이 더 좋다, 좋지 않다는 의미가 없다고 한다.
-spring은 java를 기반으로한 대표적인 프레임워크로 한국에서 사용량이 압도적으로 많다. 대부분 백엔드 관련 학원에서도 java/spring을 메인으로 가르치고, 나 또한 그 과정을 수료했다.
-express는 spring과 같이 node.js 기반 프레임워크 중 하나이다. express외에 socket.io, koa, nest(당근마켓이 사용한다고 함) 등이 있다고 한다.
*multi-thread와 single-thread
-Spring은 multi-thread를 두어 다중 요청을 처리한다. 각 요청마다 별개의 thread가 해당 요청을 응답까지 책임지는 구조이다. 그에 반해 node.js는 single-thread로 요청을 처리하는 구조이다. single-thread로도 빠른 속도가 나오는 이유는 비동기 non-blocking I/O 덕분이라고 한다. 상대적으로 긴 시간이 드는 I/O 작업을 기다리지 않고 client의 요청과 응답만을 담당하기 때문에 높은 퍼포먼스가 보장됨.
->이러한 node.js의 강점이 보장되려면 1)많은 처리를 동시에 처리하도록 요구 받는 환경, 2)잦은 I/O 작업, 3)단순한 CPU 작업이 전제 조건이라고 한다. 하지만 I/O 작업이 많지않고 강도 높은 CPU 연산에 계속해서 요구된다면 single-thread를 활용하는 node.js는 100% 실력을 발휘할 수 없는 구조가 된다.
->java도 이러한 차이점을 인지하고 Spring WebFlux를 통해 비동기 non-blocking I/O를 가능하게 함. 다만 single이 아닌 multi-thread 방식이라는 차이가 있음.
*동기 vs 비동기 I/O
-동기 I/O 처리에서는 thread는 요청이 완료될때까지 또는 응답이 완료될 때까지 무조건 기다려야함. 하지만 비동기 I/O에서는 요청이나 응답만 전달하고, 다른 작업을 하러 가는 구조이다.
-실 생활에 가장 가까운 스트리밍 서비스가 비동기 I/O를 통해서 잘 구현되는데, 이를 통해 데이터를 수신하는 동안에도 영상을 재생하는 구조가 이루어질 수 있다. 동기 I/O를 사용하게되면 모든 데이터가 다운 될 때까지 기다린 후, 재생할 수 있다.
*동시성, JSON data처리
->동시성 관리 측면에 있어서, 클라이언트들이 단순한 조회 or 간단한 text만 전달 하는 경우 node.js가 유리하다.
->mongoDB와 같은 JSON 기반 no-sql DB를 사용하는 경우, 별도의 변환 과정이 없기에 node.js가 유리함. 그에 반해 java는 JSON 데이터를 읽고 쓸 때, JSON 변환 과정이 추가됨.
'node, express, nestjs' 카테고리의 다른 글
Aug 13, 2021 - node.js express 관련 강의 완강 with 인프런 (0) | 2021.08.13 |
---|---|
Aug 11, 2021 - Nodejs Auth 처리 관련 (0) | 2021.08.11 |
Aug 9, 2021 - nodejs 로그인 기능(bcrypt, saltRounds, cookie-parser, jsonWebToken) (0) | 2021.08.09 |
Aug 8, 2021 - nodemon & heroku (0) | 2021.08.08 |
Aug 7, 2021 - nodejs express setup~mongoDB~git에 연결하기 (SSH) (0) | 2021.08.07 |