July 17, 2021
Node.js에 관련된 여러 디자인 패턴을 정리 해놓은 좋은 책입니다.
Node.js 개발자라면 꼭 읽어보세요! 추천합니다
각 챕터에 어떤 내용이 있는지, 어떤 부분이 인상 깊었는지 소개하겠습니다
Node.js가 어떤 언어인지 소개합니다.
V8, libuv, 이벤트루프 등을 간략하게 소개합니다.
CommonJs, ESM(ECMAScript 모듈)를 소개하고 차이점등을 알려줍니다.
깨닫지 못했지만 자바스크립트에는 오랫동안 모듈 시스템이 없었습니다.
<script>
태그를 통해 간단하게 임포트 하였을 뿐입니다.특히 ’모듈 캐시’, ’순환종속성’ 부분이 특히 좋았습니다. (지금까지는 그냥 사용하던…)
비동기적 코드의 작성을 콜백 패턴과 관찰자 패턴을 통해 소개합니다.
Node.js
로 개발하는 저로썬 Event
를 기반으로 한 관찰자 패턴은 사용할 일이 크게…? (물런 콜백 패턴도 Promise
로 대체합니다)
콜백 지옥, 모범적인 콜백 패턴, 순차 실행과 병렬 실행, 제한된 병렬 실행 등을 소개합니다.
챕터명이 모든걸 설명합니다!
Queue
)을 다루다 생산자, 소비자 문제를 언급하며Array.forEach()
를 사용할때 Asyc/Await
사용을 주의해야하는 부분return
과 return await
의 차이점등 실무에서 유용한 내용도 포함되어 있습니다.스트림과 버퍼의 차이, 그리고 Node.js 스트림 코딩에 대해서 상세히 설명합니다.
Node.js 스트림 코딩이 이렇게 다룰 내용이 많은지 전혀 몰랐습니다…
말그래도 생성에 관련된 디자인디자인패턴을 소개합니다.
빌더 패턴의 경우 많은 모듈이 사용하고 있는데, 재밌게 읽었습니다.
const url = new UrlBuilder()
.setProtocol('https')
.setHostname('example.com')
.build()
console.log(url.toString()) // https://example.com
공개 생성자 패턴은 생성시에만 동작을 정의하며 수정이 불가능한 객체를 생성합니다.
return new Promise((resolve, reject) => {
// ...
})
모든 애플리케이션은 여러 컴퍼넌트를 연결한 결과입니다
두개의 컴퍼넌트 사이의 종속성이 존재하며, 이를 연결하는 방법 두 가지를 소개합니다
저 개인적으로는 **DI 방식 (+ 인젝터)**을 좋아합니다
엔티티 간의 관계를 다루는 기술을 소개합니다
특히 변경을 감지하는 옵저버를 소개했는데, 이 부분이 매우 흥미로웠습니다
참고로 프록시와 데코레이터의 차이점을 명확히 정리해주는데 이렇습니다
데코레이터 패턴은 래퍼로 볼 수 있다. 다양한 객체를 가져와 데코레이터로 감싸 ‘추가적인 기능’을 추가 할 수 있다. 프록시는 대신 객체에 대한 접근을 제어하는데 사용되며 원래의 인터페이스를 변경하지 않는다.
객체를 어떻게 확장가능하고, 모듈화되고, 재사용가능하게 결합하는 방법과 상호작용 하는 방법에 대해 소개합니다.
특히 이 장에서 소개되는 패턴 중 일부는 몰랐지만 비슷하게 구현을 생각해내어 사용해 본적이 있다는게 재밌었습니다.
개발을 할때 이러한 패턴을 고려하면서, 장단점을 생각하고 선택해서 객체를 디자인하는 그런 개발 해보고 싶네요. 물런 당장은 Nest.js 같은 프레임워크를 이용하는걸로 하겠습니다
브라우저 코드 공유, 크로스 플랫폼 개발의 기초, React 등을 소개합니다.
비동기적으로 초기화되는 컴포넌트 다루기
비동기식 요청 일괄 처리 및 캐싱, 비동기 작업 취소
CPU 바운드 작업 실행
setImmediate
, child proceess
, worker threads
등)애플리케이션 확장에 대해 소개한다. 간단히 말해 배포에 관련된 부분이다.
물리서버 복제를 통한 확장, 로드밸런싱, 클러스터 모듈 그리고 Nginx, docker, k9s 등 다양한 방법을 소개한다.
모놀리식 아키텍처, 마이크로 서비스 아키텍처와 설계시 주의점도 언급된다.
연결(통신)에 대해 소개하며, Publish/Subscripbe, 작업 배포(Task distribution) 패턴 등등을 소개한다
또한 ZeroMQ
모듈의 사용법 등을 소개하며 상세히 다룬다.