Node.js 철학

1.1 Node.js 철학

본 포스팅은 도서 <Node.js 디자인 패턴>을 공부하며 정리한 내용입니다.


1.1.1 경량 코어

  • Node.js 코어 자체는 몇 가지 원칙에 근거한 기반을 가지고 있다.
  • 코어최소의 기능 세트로 하고,
    나머지를 사용자의 몫(사용자 영역)으로 해서, 핵심 모듈의 바깥 영역 모듈들을 생태계에 맡기는 것이 이 원칙들 중에 하나이다.

  • -> 장점: 유지 보수 측면에서 편리할 뿐만 아니라
    전체 생태계의 발전에 긍정적인 문화적 영향을 가져올 수 있다.

1.1.2 경량 모듈

  • Node.js모듈 개념을 프로그램 코드를 구성하는 기본 수단으로 사용한다.

  • 어플리케이션과 패키지라고 하는 재사용 가능한 라이버리를 만들기 위한 조립용 블록

Node.js에서 가장 널리 퍼친 원칙 중 하나

코드 크기 뿐만 아니라 범위적인 면세어도 작은 모듈을 설계하는 것

유닉스 철학에 뿌리를 두는 두 가지 계율

작은 것이 아름답다
각 프로그램이 각기 한 가지 역할을 잘 하도록 만든다

작은 모듈이 가지는 장점

  • 재사용성
  • 이해하기 쉽고 사용하기 쉽다.
  • 테스트 및 유지보수가 훨씬 간단하다.
  • 브라우저와 완벽한 공유가 가능하다.

더 작고 집중된 모듈을 사용하면 작은 코드 조각이라도 모두가 공유하거나 재사용할 수 있다.

  • DRY(Don’t Repeat Yourself, 같은 것을 반복하지 말라.)원칙에 대한 새로운 적용이다.

1.1.3 작은 외부 인터페이스

  • Node.js 모듈은 대개 최소한의 기능을 노출하는 특성이 있다.
    -> 가장 큰 이점: API의 사용이 보다 명확해지고 잘못된 사용에 덜 노출된다.
    cf) 대부분의 경우 컴포넌트 사용자는
    기능을 확장하거나 부가적인 고급 기능의 활용이 필요 없는,
    매우 제한되고 집중된 기능에만 관심이 있다.

Node.js에서 가장 일반적인 패턴

  • 함수나 생성자와 같이 하나의 핵심 기능을 표현하는 동시에,
    더 많은 고급 기능이나 보조 기능은 노출된 함수나 생성자의 속성이 되도록 하는 것
    • 이를 통해, 사용자는 중요한 내용부수적인 내용구분할 수 있다.

Node.js 모듈의 또 다른 특성

  • 확장 용도보다는 실제 사용하도록 만들어진다는 것이다.
  • 얻는 효과
    • 유스케이스를 줄인다.
    • 구현을 단순화
    • 유지 관리를 용이하게 한다.
    • 가용성을 높인다.

1.1.4 간결함과 실용주의

-KISS(Keep It Simple, Stupid)원칙

단순함이야말로 궁극의 정교함이다.

  • 디자인은 구현과 인터페이스 모두에서 단순해야 한다.
    구현이 인터페이스보다 단순해야 하는 것이 더 중요하다.

  • 단순함은 설계에서 가장 중요한 고려 사항이다.

  • 단순한 설계 > 완벽한 모든 기능을 가진 소프트웨어

  • 이유?
    • 구현하는데 소요되는 노력과 자원을 적게 사용하여 더 빨리 보급할 수 있다.
    • 적응과 유지보수 및 이해가 쉽다.
    • -> 커뮤니티의 기여도를 높이고, 소프트웨어 자체가 성장하고 향상될 수 있도록 한다.
  • 복잡하지 않고 실용적인 접근법(대부분의 경우)이 원칙적이고 완벽한 디자인보다 더 선호된다.