[Node.js] 서버란?

EUNCHAE KIM·2022년 10월 17일
0

1) Server : Serve(제공) + -er(사람) = 무언가를 제공하는 사람

  • 커피를 요구하는 고객: 클라이언트
  • 커피를 제공하는 바리스타 : 서버
  • 커피 : 데이터
  • 고객이 바리스타에게 커피를 주문 : 요청 (Request)
  • 바리스타가 주문을 받고 커피를 제공 : 응답 (Response)

2) 클라이언트 - 서버 구조

  • 클라이언트 : 요청 머신
  • 서버 : 응답 머신
  • 요청과 요청 처리 응답까지의 과정 : 트렌젝션
  • 클라이언트 === 브라우저는 아니다. 클라이언트(프로트)는 또 다른 서버가 될 수도 있다

3) SPOF (Single point of failure)

  • 서버가 다운되면 클라이언트는 속 빈 강정이 된다. 서버가 복구되지 않으면 전체적인 서비스가 돌아가지 않는다는 건 사실.
  • 요청의 양이 많아질수록 서버가 감당하기 어려워진다.
    => 해결방법 : 서버 수직확장 또는 수평확장
    ‘수직 확장'(scale up) 과 ‘수평 확장’ (scale out)

4) 서버 종류

A) 웹 서버 (Web Server)

: 정적 컨텐츠를 제공하기 위한 서버(HTML,JS,CSS,이미지,비디오,기타파일 등)

  • 고객(클라이언트)는 주로 웹 브라우저
  • 사용자에 따라 해당 데이터를 약간 바꿔서 제공할 수 없다
  • 자주 업데이트 되지 않는 페이지들을 제공하기에 적합
  • 근래의 웹 서버들은 reverse proxy, load balancing등의 기능들을 지원해서 WAS를 보조하는 역할 수행하기도 함
  • 대표적인 웹서버 : NGINX, Apache HTTP Server

B) 웹 애플리케이션 서버 (Web Application Server)

: 클라이언트에게 정적 컨텐츠가 아닌 "서비스"를 제공할 수 있는 서버 (서비스 = 비즈니스 로직)

  • 복잡한 로직을 수행해서 다양한 동적 데이터를 제공할 수 있다
    (e.g. 사용자에 따라 다르게 표시되어야 하는 페이지,단순 JSON 형식의 데이터)
  • 템플릿 형식의 페이지에 데이터를 주입해서 완성된 페이지를 만들기가 가능
  • Node.js web frameworks, J2EE Services㏖w/ web server like
    Tomcat㏗, Python web frameworks㏖w/ WSGI
  • 주로 웹 개발 분야에서의 백엔드 개발은 WAS 코드 개발을 일컫는다.

5) 서버와의 통신 규약

  • 컴퓨터와 컴퓨터 간 통신할 때 사용되는 규약 : 우리가 서로 정보를 주고 받을 때는 이러한 법칙을 가지고 진행하자!
  • 통신 프로토콜은 구두 전달!

    주로 접하게 되는 프로토콜
    - HTTP/HTTPS
    - SSH
    - FTP/SFTP
    - WebSocket
    - DNS
    - SMTP & IMAP/POP3
    - DHCP
    - MQTT

  • API (Application Programming Interface) : 두 개 이상의 프로그램이 통신하기 위해 따라야 하는 규칙
    -> 특정 프로그래밍 언어로 작성된 라이브러리일 수도 있고
    통신 시에 일정 규칙에 맞춰서 요청을 날리는 방식이 될 수 도 있다.
    -> REST API(RESTful API) : REpresentational State Transfer
    HTTP 프로토콜에서 제공하는 기본 method들(GET POST PUT DELETE) 을 사용해서 두 머신이 네트워크를 통해 데이터를 주고 받는 방식
profile
Try Everything

0개의 댓글