node.js 에서 싱글톤이 필요한 이유가 무엇인가요?
1185
작성한 질문수 3
답변 1
7
안녕하세요!
아래는 싱글톤 패턴의 큰 장점 두 가지입니다.
1. 메모리 효율
2. 도메인 또는 프로그램에서 인스턴스가 절대적으로 한 개만 존재한다는 것을 보증 받습니다.
강의에서 Server라는 클래스는 하나의 인스턴스를 만들었습니다. 그리고 이 인스턴스는 고유하는 것을 보증 받습니다. 이 인스턴스는 프로그램에서 한 번만 사용되어야 하기 때문입니다. 애초에 여러 서버를 여는 것이 아니라는 것이 확실하기에 서버 인스턴스는 하나만 필요합니다. 이 경우, 다수의 Server 인스턴스를 찍어서 사용 하는 것은 복잡함을 야기하고 불필요합니다.
하나의 인스턴스만을 찍어내고 사용하는 것, 이것이 싱글톤 패턴입니다.
Node.js에서 모듈 캐싱으로 싱글톤 패턴에 의미가 없다는 것은
예를들어 import * as express from "express"; 이 문장을 여러번 찍어도 캐싱이 되기 때문에 모듈을 import 하는 관점에서는 의미가 없다는 것입니다.
싱글톤 패턴은 소프트웨어 코드 작성에 있어 의미가 있습니다. 설령 메모리 효율에 있어서 장점이 없다 해도, 코드 디자인 측면에서 장점이 있다면 의미가 있습니다.
추가적으로 싱글톤 패턴이 항상 좋은 것은 아닙니다. 잘못 적용하면 SOLID 원칙에 위배 될 수 있습니다. 이로 인해 어떤 관점에서는 안티 패턴이 될 수 있습니다.
아주 분명한 경우에 적용하는 것이 맞습니다. 서버 실행과 같이 딱 한 번 사용됨을 보증 받아야 하는 경우가 바로 그것이죠. 그리고 대체적으로 프레임워크의 도움을 받는 것이 좋습니다. 뒤에 NestJS에서는 컨트롤러, 서비스 등 레이어가 딱 한 번 인스턴스를 만들어 사용되는 것을 보증받도록 만들어져 있습니다.
프로젝트 환경 세팅할 때 최신 노드 버젼을 사용하시는 분들은 참고하셔도 좋을 것 같아요~
2
81
1
DTO에 대한 질문
1
88
2
백엔드 MVC에서 View의 역할은 무엇인가요?
1
95
2
추가 업데이트 관련 건
0
92
2
nest js 버전문제
0
81
2
mongdb 스키마 공식 문서와 형태가 다른 이유 궁금합니다.
0
103
1
라인 끝에 에러 표시(eslint) 때문에 구글 찾아 보니.
0
76
1
전체 고양이 조회 라우터 중 error.message 오류
0
70
1
캡슐화 추가 설명 중 단일책임원칙 관련 질문
0
106
0
42강 고양이끼리 소통 댓글 구현 중 Schema hasn't been registered for model 'comments' 에러 해결
0
82
1
채팅 이슈
0
134
1
모듈이 더 이상 지원하지 않는답니다
0
207
1
오류가 있습니다
0
106
1
import 에서 오류가 납니다
0
128
1
이런 오류가 나옵니다
0
101
1
에러가 발생합니다
0
110
1
프론트 에러 뜨는데 수정 안해주시나요
0
159
1
emit() broadcast.emit() 질문있습니다
0
103
1
서버연결이 안됩니다.
1
403
1
[PM2][ERROR] Command not found
0
521
1
S3에 업로드까지는 성공했는데 사진이 나오지 않습니다.
0
248
1
error_code : Property 'user' does not exist on type 'Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>'.ts(2339)
0
603
1
jwt를 따로 연습하고 있는데 env를 못읽는 것 같습니다.
0
324
2
Ec2로 안하시는 이유가 있을까요?
0
343
1





