[node.js] pattern을 통한 서버작업처리

Hyo Kyun Lee·2021년 7월 28일
0

node.js

목록 보기
26/34

1-1. pattern을 통한 서버작업 처리

node.js 에서 활용하고자 하는 Pattern들은 각각 고유한 특징과 장점을 가진다.

단순히 싱글스레드, singleton pattern이 서버작업처리에 부합하기 때문에 node.js를 사용하는 관점보다는, 어떤 Pattern을 활용해야 서버작업에 유용할 수 있을지 볼 수 있어야 한다.

먼저 ▼ 링크를 참조하면서 pattern을 서버작업처리를 할 때 어떤 관점으로 봐야하는지 파악해보자.

singleton Pattern과 서버작업처리의 관계

1-2. Pattern의 종류

IIFE : 정의되자마자 즉시 실행한다.

IIFE의 목적은 함수 선언이 아니라, 즉시 실행에 있다.

const autoIncrementer = (function() {
  let value = 0;

  return {
    incr() {
        value++
    },

    get value() {
        return value
    }
  };
})();
> autoIncrementer.incr()
undefined
> autoIncrementer.incr()
undefined
> autoIncrementer.value
2
> autoIncrementer.value = 3
3
> autoIncrementer.value
2

위 코드에서 Clousre 함수인 incr()는 자신의 scope인 value에 접근하여 value + 1을 하는 함수이며, 이는 autoIntermenter 함수의 반환인자이기도 하다.

이때 중요한 점은 incr() 함수는 실행이 목적이며, 위에서 알 수 있듯이 해당 함수에 접근하면 undefined를 출력하여 결과반환이 안된다.

이에 대해 결과확보를 하려면 value 값을 return (초기화)하는 별도의 함수를 만들어 해당 함수를 method로 반환하도록 logic을 작성하면 된다.

Factory pattern

한 객체에 대해 반복적인 method 반환이 이루어질 때, 반복의 번거로움을 최소화할 수 있는 방안을 찾는 방법론

Singleton pattern

한 객체나 class에는 반드시 하나의 생성자, 인스턴스만 존재한다는 객체생성에 대한 방법론

Observer pattern

HTTP server에 대한 RESTAPI와 같이, 특정 요청 및 이벤트에만 반응하여 response를 전달하도록 설계하는 방법론

2. 서비스 일관성을 유지하는데 가장 중요한 방법론

결국 중요한 것은 서비스의 지속성, 무결성을 유지하기 위해 어떤 pattern으로 logic을 구현할 것인가이다.

하나의 DB를 객체화하고, 이에 대한 parameter가 지속적으로 바뀌는 상황에서 new class를 게속 생성하다보면 코드의 유지보수가 힘들어진다.

이 경우 static method를 활용하고, 변화하는 시점이나 환경을 logic으로 구성하여 어떻게 하면 하나의 DB에 대해 무결성을 유지하고 및 변경점을 지속 반영할 수 있을지 고민해봐야 할 것이다.

대용량 트래픽을 처리하기 위해 분산처리, singleton pattern을 기본으로 하되, 어떤 pattern을 추가적으로 logic에 적용해야 적절한 비동기처리와 DB유지를 할 수 있을까?

3. 참조링크

Patterns
https://blog.logrocket.com/design-patterns-in-node-js/

0개의 댓글