alt
Home Node.js 디자인 패턴 1장 - 1. Node.js란?
Post
Cancel

Node.js 디자인 패턴 1장 - 1. Node.js란?


  • Javascript가 서버에서 동작될 수 있도록 하는 그러한 환경(플랫폼)
  • 구글이 크롬 브라우저 용으로 개발한 V8 JavaScript 엔진으로 빌드된 JS 런타임기


특징

  • Nods.js 라이브러리 내의 api는 모두 비동기
  • 단일 스레드.
  • 이벤트 메커니즘을 통해 서버가 멈추지 않으며 실시간 데이터 애플리케이션, SPA, I/O 잦은 앱개발에 효율적
    • 여기서 I/O작업이란? 파일 시스템 접근, DB 접근, 네트워크 요청과 같은 작업. 컴퓨터의 기본적인 동작 중 가장 느리다.
    • 느린 이유? 요청을 보낸순간부터 완료될때까지 지연되기 때문
    • 이것을 해결하기 위한 것
      • Non blocking + Sync : 폴링방식으로 busy waiting하기
      • Non blocking + Async : 이벤트 루프
  • 하나의 작업 자체가 오래걸리면 전체 성능 저하. (싱글스레드 이기 때문)


Node.js의 철학

: JS나 Unix 체제의 공통적인 철학(경량)에 뿌리를 둔다.

다른 소프트웨어 개발 철학들 모음: https://en.wikipedia.org/wiki/List_of_software_development_philosophies

경량 코어

: Node.js 그 자체만으로는 정말 최소의 기능만하도록 최소한으로 유지


경량 모듈

: 필요한 패키지만을 npm을 통해 관리가능

  • 패키지간 의존성 없이 관리, 재사용성을 높게 유지
  • 아주 작은 단위의 코드 조각(패키지)조차도 재사용 -> DRY원칙


작은 외부 인터페이스

: 최소한의 기능만을 export로 노출 가능


간결함과 실용주의

: 단순한 설계 추구

  • JS의 철학. 객체지향의 복잡성을 버리고 합리적인 수준의 복잡성으로, 높은 생산성을 지향
  • KISS 원칙


Node의 주요 도구(패키지)

  • 확장을 잠가 확장성을 줄이더라도, 단순한 구현유지 용이, 가용성을 높이는 것이 목적

Http 모듈

  • HTTP 통신으로 데이터를 주고 받을 수 있는 프로토콜
    • createServer를 통해 server 객체 생성(웹서버 객체)

Express

  • 외장 모듈(npm으로 다운)
  • package.json : 모듈 버전, 의존 패키지 관리(npm 이용)
  • Routing: app.js로 routing 역할 수행
    • URI 및 특정 HTTP 요청메소드인 특정 엔드포인트에 대한 요청에 application이 응답하는 방법을 결정
  • 앱 구동

Sequelize

  • DB와 연동할 때 객체와 테이블을 매핑해주는 ORM
  • 이걸 이용하면 객체의 메서드를 통해 쿼리를 조작함. sql 문법을 모르더라도.
    • create(), findOne(), findAll(), update(), destroy() 등

Reference)

Node.js 디자인패턴

https://velog.io/@new_wisdom/Node.js-SOPT-%EB%A9%B4%EC%A0%91-%EC%A4%80%EB%B9%84

This post is licensed under CC BY 4.0 by the author.