[TIL] KDT Clouding APP - Node.js 맛보기

백엔드의 기본적인 구조와 Node.js의 특징. 그리고 docker 환경에서 mariaDB를 실습해보는 시간이었다. node.js에서는 코드의 의존성을 줄이고 보다 유연한 구조로 구현하기 위해 모듈화를 통해 코드를 구현해보는 실습을 진행하였다.

웹 서버와 WAS에 대한 개념

웹 서버와 WAS에 대한 구분 개념이 명확하지 않았는데 아래 포스팅에서 잘 정리되어있어 도움을 받았다.

우선 웹 서버는 정적인 콘텐츠 제공이 가장 큰 요청으로 웹 서버 자체는 정말 주는 것만 할 줄아는 Sever이고, 동적인 데이터들을 처리해서 정적인 페이지로 생성해주는 소프트웨어 모듈(컨테이너)을 결합한 형태의 서버가 바로 WAS라고 한다.

정적 페이지 : 별도의 처리 없이 동일한 페이지 제공

동적 페이지 : 어떠한 요청에 의해 서버가 특정 일을 수행하고 그에 따라 다른 결과를 보여주는 페이지

참고 포스팅

Node.js

스크립트 언어?

인터프리터 방식으로 다른 응용 프로그램에 삽입되어 해석되는 방식으로 작동하기에 스크립트 언어라고 부른다.

Node.js 플랫폼에 대한 이해

특징?

  • 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작이 가능
  • 싱글 스레드 Event Loop
  • Non-blocking I/O 모델 : 이전 작업이 완료 될 때 까지 멈추지 않고 다음 작업을 수행하여 마치 동시에 작업이 일어나듯이 처리

=> (서비스의 특성에 따라) 높은 처리 성능을 가질 수 있다고 함

Event Loop?

참고 포스팅

단점?

  • 싱글 스레드방식이기에 CPU 작업이 많은 서버로는 부적합하고, 서버 규모가 커졌을 때 서버를 관리하기 어려움이 있다고 함.

적합한 서비스의 형태

  • 수가 많지만 크기는 작은 데이터를 실시간으로 주고 받는 서비스
  • 싱글페이지 어플리게이션
  • 입출력이 잦은 어플리케이션
  • 실시간 채팅 애플리케이션, 주식차트, json데이터 제공 API 서버

[HTTP 프로토콜 데이터 형식]

Head

  • HTTP status code; ex) 200(정상), 404
  • type of response; ex) HTML

Body 화면에 표시될 데이터

js 모듈화

exports.[내보낼 함수명] = [함수명]

코드의 의존성을 줄이고 보다 유연한 구조로 구현하기 위함으로 보통 다음과 같은 세 영역으로 나눠서 진행.

  • 오로지 서버를 구동시키는 역할의 부분
  • 클라이언트로부터의 request와 response를 다루는 역할
  • URL 경로에 따라 일을 분배해주는 역할

favicon.ico??

주소창에 표시되는 대표 아이콘.

데이터베이스 사용해보기

Docker 환경에서 maria DB 사용

docker image 내의 mysql client가 설치되지 않아서 발생하는 이슈

  • 해결 1) mariadb 명령어로 접속한다.
    mariadb -uroot -p
    
  • 해결 2) docker 이미지내에 mysql client를 설치한다.
    apt-get update
    apt-get install mysql-client
    

Categories:

Updated: