1회차

Node.js로 구현하는 쇼핑몰 프로젝트 1회차 수업 요약 내용입니다.
이제부터 정리할 내용은 학원에서 배웠던 수업 내용을 정리하고 개인적인 의견을 첨부하였다. 목차는 수업 목차 순서를 그대로 인용할 예정이다.

프로젝트의 최종 구성

서버 : Ubuntu (AWS) 배포 : Docker 웹서버 : NGINX API 서버 : Node.js DB : MongoDB 로 구성될 예정이다.

Node.js 란 무엇인가?

Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다. Node.js는 이벤트 기반, 논 블로킹 I/O모델을 사용해 가볍고 효울적이다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 하다.
  • node.js 출처
Node.js는 실질적으로 서버사이드 자바스크립트 실행환경과 라이브러리, 이렇게 두 가지로 이루어져 있다.

Node.js 특징

이벤트 기반

대부분의 웹 서버는 사용자가 이벤트를 발생하기까지를 기다리면서 '자원'(대기시간/메모리)을 계속 소비하게 된다. 하지만 event-driven은 이벤트에만 웹서버가 연결해주기 때문에 자원을 최소화 시킬수 있으며 스레드를 하나만 이용해도 이벤트를 사용하여 빠른 일처리가 가능하다.
기존 Apache와 같은 웹서버는 웹 리소스가 요청될 때마다 요청을 처리하기 위해 매번 별도의 스레드를 생성하거나, 새 프로세스를 호출한다.
request가 많은 경우, 병목구간이 흔히 발생하는데 이를 해결하기 위해 멀티쓰레드에 스케일아웃하고 로드밸런싱을 한다.
하지만 Node와 같이 비동기로 처리하게 될 경우, 훨씬 가벼우면서도 빠른데, 요청 처리가 완료되기전에 제어권을 다음 요청으로 넘긴다.
적절한 예를 제시한 자료가 있어서 링크를 공유한다.

비동기 방식 I/O

동기방식의 처리는 하나의 요청이 처리되는 동안 다른 요청이 처리되지 못하며 요청이 완료되어야만 다음 처리가 가능한 방식이다. 동기 방식은 IO 처리를 Blocking 하는데 지금까지는 이 문제를 Thread로 처리하였다.
비동기 방식은 하나의 요청 처리가 완료되기전에 제어권을 다음 요청으로 넘길 수 있다. 따라서 IO 처리인 경우 Blocking 되지 않으며 다음 요청을 처리할 수 있는 것이다.

단일 스레드

단일 스레드의 장점은 적은양의 자원으로 일을 처리할 수 있다. 다중 스레드기반의 서버는 일반적으로 클라이언트의 요청마다 스레드를 생성한다. 이말은 동시 접속자 수가 많을 수록 스레드가 많이 발생한다는 의미이며 그만큼 메모리 자원도 많이 소모한다는 것을 나타낸다. 서버의 자원은 제한되어 있으므로 일정 수 이상의 스레드는 발생시킬 수 없기 때문에 다중 스레드는 한계가 되는 부분이 있다. 그러나 단일 스레드에도 단점은 있다. 스레드 하나당 한가지 일만 수행하므로 어느 한곳에 예외상황 및 에러가 발생 한다면 어플리케이션 전체에 영향이 미치게 된다. (그러나 이러한 단점도 cluster 모듈을 사용한다면 해결이 가능하다.)

V8 엔진

v8 엔진은 JIT(Just In Time)으로 구동되어 기존 컴파일러의 장점과 인터프리터의 장점을 섞은 형태이다. ( 컴파일러 : 한번 컴파일 하게 되면 별도 생성된 목적 파일을 통해 빠르게 실행할 수 있다. 대용량 소스에 적합 인터프리터 : 목적 파일 산출 과정이 없이 실행과 동시에 줄 단위로 번역이 된다. 저용향 소스에 적합 )
따라서 V8의 구동 방식은 이너프리터의 장점인 실행과 동시에 번역 + 목적 파일 생성인 JIT 컴파일을 내장하고 있다.

HTML 이란 무엇인가?

HTML 이란 Hyper Text Markup Language 의 약자로써 WWW 문서를 작성하는 마크업 언어이다.
HTML은 인터넷에서 문서를 교환하기 위한 규약으로 사용되고 있다.

웹표준이란?

특정 브라우저에서만 잘 보이거나 하지 않고 모든 브라우저에서 잘 동작하도록 하는 표준 W3C 권고안에 맞춰 작성해야 한다. (https://www.w3.org/)

웹접근성이란?

접근성이란 “보다 많은 사람이 이용할 수 있는 보편적 접근정도”를 의미 장애인뿐만 아니라 모든 사람이 정보통신 기기나 서비스를 손쉽게 활용할 수 있게 하는 것 - 다음웹표준화개발팀

CSS란?

HTML은 웹페이지 정보 CSS(Cascading Style Sheets)는 웹 페이지를 디자인