흠..
스타트업 대표님과 만나서 대화 할 수 있는 기회가 생겼다.
기술 스택으로 node.js 와 ts 기반으로 설계되어 있었다.
나는 java기반에 spring으로 프로젝트를 이어 나갔었다. 그래서 왜 node.js 랑 ts 를 선호하시는지는 여줘보았는데 아무것도 모르는 나는 끄덕거리기만 했다.
개발자라면 새로운 기술에 두려워 하지말고 계속 해서 공부해나가는것! 그래서 node 도 꾸준히 글을 쓰면서 공부 할예정입니다.
Node.js 란
확장자가 js 이며 V8엔진 기반으로 javascript로 서버 런타임 환경을 구축 한다.
장점
- 높은 처리량(Throughput)
- 논블로킹 I/O + 이벤트 루프로 I/O-bound 트래픽을 매우 효율적으로 처리한다.
- 컨텍스트 스위칭이 적고 콜백/프로미스 기반으로 동시 연결을 가볍게 유지한다.
- 확장성(Scalability)
- 단일 이벤트 루프 + libuv 스레드풀 구조로 많은 동시 요청을 처리합니다.
- 풍부한 모듈 생태계(npm)
- 세계 최대 규모의 패키지 레지스트리로, 필요한 기능을 빠르게 도입 가능.
- 커뮤니티 기여가 활발해 업데이트/대체재 선택 폭이 넓음. (패키지 품질·보안 검증은 필수)
- 빠른 개발 속도
- 프론트/백 모두 JavaScript/TypeScript로 통일 - 이거 좋은듯 ㅎㅎ
- 비동기 기본기가 언어/런타임에 녹아 있어 네트워크/파일 I/O 로직이 간결합니다.
- 생산성 도구 & 프레임워크
- Express / Nest로 웹 API를 신속하게 구축.
- Mongoose/Prisma 등으로 DB 상호작용 단순화.
단점
- 비동기 처리로 callback 지옥
Node.js는 비동기 처리 아키텍처 덕분에 빠른 응답이 가능하지만, 콜백 함수가 중첩되는 ‘콜백 지옥(Callback Hell)’ 문제가 발생할 수 있다. 이는 코드의 가독성과 유지보수를 어렵게 만든다.”
- 메모리 누수 - 단일 쓰레드
- java JVM 내부에 GC 에서 메모리 상태를 관리해주는다.
- node 런타임 자체가 가볍고 단일 스레드 구조라, 대규모 메모리 관리에는 한계가 있다
후기
java로만 spring 프레임워크만 개발하다 node공부하면 리팩토링 빨리 하고싶단 생각에 심장이 뛰네요!!
글 읽어주셔서 감사합니다 :)