Server와 Node.js

🐶·2021년 7월 4일
0

개념 정리

목록 보기
19/41

서버는 무엇일까?

  • 서버: 요청을 받으면 요청한 내용을 보내주는 프로그램(요청을 처리할 수 있는 기계)

  • 서버개발자들이 짜는 코드들...

  • 여기서 요청은 여러가지 종류가 있음
    (ex. HTTP요청(아래 크게 4가지 요청이 있음: 읽기, 쓰기, 수정, 삭제))

  • 읽기(GET 요청): 뭔가를 읽고 싶을 때

  • 쓰기(POST 요청) ex. 주로 뭔가를 생성하는 요청. 댓글 작성, 블로그 포스트 작성 등

  • 수정(PUT 요청)

  • 삭제(DELETE 요청)

서버 코드 예시

Node.js를 이용해서 JavaScript 문법으로 서버를 짤 수 있다.
수도코드를 아래와 같이 간단히 작성해볼 수 있다.

//어떤 사람이 /list라는 페이지를 GET요청하면...
//거기 해당하는 list.html 파일을 보내준다

Node.js란?

JavaScript의 런타임이다.

JavaScript는 HTML 페이지에 종속된 언어이다. HTML 페이지를 위해 만들어낸 스크립트 언어이다. HTML 조작과 변경을 위한 언어인 것이다.

HTML은 웹페이지에 글쓰고 그림넣는 언어이다(마치 워드와 같이...). 정적이다라는 특성을 가지고 있다.

JavaScript를 통해 웹페이지를 다이나믹하게 바꿀 수 있다. (HTML 조작이 가능하기 때문)

그런데 HTML body 하단의 <script></script>에 적어놓은 JavaScript 코드는 누가 돌릴까?(=해석을 누가할까?)

바로 브라우저들이 담당한다(익스플로러, 파이어폭스, 크롬 등등)
JavaScript의 해석할 수 있는 엔진들이 브라우저 안에 숨겨져 있다.(아래 참고)

크롬의 V8해석엔진이 분리되어져서 그 자체로 출시된 것이 바로 Node.js이다.
(보통 크롬이 속도가 빠른 이유가 JavaScript 해석을 잘 하기 때문이다, 해석 엔진이 뛰어나다)

Node.js는 브라우저 내에서 말고도 다른 환경에서 JavaScript를 실행할 수 있게 도와준다. 쉽게말하자면, 그냥 JavaScript 실행창, 실행환경이다(=런타임)

Node.js 덕분에 JavaScript를 프로그래밍 언어처럼 사용하기 시작했다.
덧붙여 서버도 만들게 되었다(일단 쉬우기 때문).

Node.js로 개발 시 서버 특징

1. Non Blocking I/O

여러 요청을 받고 빨리 처리가 되는 것부터 응답함.

SNS, 채팅서비스(특징: 요청이 매우 많음)
--> 일반 서버로 구현하면: 요청이 많거나 오리걸리는 요청이 왔을 때 멈추거나 대기시간 발생
--> Node.js 서버로 구현하면: 멈추거나 요청대기시간 X

(일반서버도 불가능한 건 아니다. 서버 스케일링이나 혹은 멀티쓰레딩을 통하여)

2. 코드가 매우 짧고 쉬움

빠른 개발이 가능하다. 프로토 타입 만들 때 굉장히 좋다. 일단 프로토타입 만들고 비즈니스를 빠르게 오픈하려는 스타트업에서 각광받음.
다만, 웹서비스가 아닌 경우는 좀...(이미지 처리 서버가 필요하면? Node.js 비추. 왜냐하면 이미지 처리하는 라이브러리들이 별로 없다.
수학적 계산, 통계적 분석 서버가 필요하면? 파이썬이 강하기 때문에 또한 Node.js 비추)

참고자료
https://youtu.be/pTm5E3jcOeY

profile
우당탕탕 개발일기📝🤖

0개의 댓글