본문 바로가기
728x90

Node js36

[다음강의 미리보기] @testcontainers/redis @testcontainers/redis 를 이용한 redis test container 구성 https://testcontainers.com/modules/redis/?language=nodejs Testcontainers Redis ModuleStart testing with real dependencies using the Redis Module for Testcontainers fortestcontainers.com 통합테스트 작성 시, 분산락 등을 구현할 때 mock만을 참조하게 되면 제대로 된 테스트가 되지 않으며, redis 직접 참조 시 여러명이 동시에 테스트 코드를 돌리게 된다면, 결과에 영향을 미치게 된다.(실 환경도 마찮가지) 그렇게 때문에 테스트 컨테이너를 이용하여(테스트 시 컨테이너.. 2025. 4. 28.
[Back-end] Node js or NestJS 기반으로 사용중인 "국내" 회사 리스트 [회사 현황 - 계속 update 예정] 1. 리디https://ridibooks.com/webtoon/recommendation 2. 토스https://toss.im/ 3. 당근https://www.daangn.com/kr/ 4. 클라썸https://www.classum.com/ko/ 5. 설로인https://www.sirloin.co.kr/ 6. 뤼튼https://wrtn.ai/ 7. 모두싸인https://modusign.co.kr/ 8. 아임웹https://imweb.me/ 2025. 3. 28.
Node.js 란? 인프런 강의를 시작하면서, 보다 원론적인 것부터 설명이 필요하다는 것을 느꼈다.(이는 실무중심의 멘토링 서비스를 제공하는 "항해플러스"의 시스템과는 상이한 부분이다.) Node.js란? 결론부터 말하면나무위키나 공식사이트를 참고하면, Node.js 는 Javascript를 브라우저 밖에서도 실행하게 해주는 런타임환경이다?라고 표현되어 있지만, Electron Framework 등 특정상황을 제외 하면, Javascript 언어로 서버환경을 구성하게 해주는 환경이다.즉, Node.js 로 공식사이트와 같이 아래와 같은 코딩을 하게 되면 웹서버 역할로써 Node.js 가 되는 것이다.const { createServer } = require('node:http');const hostname = '127.0... 2025. 3. 23.
NestJS 강의를 듣기 희망하시는 분들은 아래 링크 확인해주세요 ! https://inf.run/gsdZZ 커머스 서비스로 배우는 NestJS 실전 개발 (w. Prisma, Docker, Redis, Kafka) 강의 | 김빌 (Bill Kim) - 인프런김빌 (Bill Kim) | , 15년차 개발자가 알려주는NestJS 미드급 개발로 가는 길멘토링을 통해 많은 주니어 개발자를 만나보니, 기본적인 CRUD는 쉽게 만들지만, 동시성 제어와 Redis, Kafka를 활용한 부하 분www.inflearn.com NestJS 기반의 아키구성NestJS를 현업레벨에 맞도록 Prisma 세팅 및 개발Docker, Redis, Kafka 와 연계하여 개발목표 2025. 3. 20.
Typescript 성능개선 발표! (x 10) MS 사가 개발 관리 중인 Typescript 관련 하여 컴파일러와 Tool의 native 포팅을 통해 기존 성능에서 10배 이상 향상된 성능을 발표하였다!  자세한 내용은 하기 링크 참조! https://news.hada.io/topic?id=19695 10배 더 빠른 TypeScript | GeekNewsMicrosoft가 컴파일러와 도구의 네이티브 포팅을 통해 Typescript 성능 10배 향상 발표에디터 시작 시간 대폭 향상, 빌드 타임 10배 단축, 메모리 사용량을 대폭 줄임2025년 중반까지 tsc 미리 보기 버전news.hada.io 2025. 3. 13.
(다음과정 미리보기) KRaft 를 이용한 Kafka 띄우기 2025. 3. 7.
n 패키지로 node 버전 관리 시 경로 이슈 (installed, active) n 으로 전역 설치 후 node 버전을 관리하면서 사용중이다가 노드 버전을 변경해야할 일이 간헐 적으로 생긴다(최신 노드버전으로 프로젝트를 해야해서 노드 버전을 변경하는 경우도 있고 반대로 legacy 소스를 수정해야할 때도 과거 노드 버전으로 수정이 필요한 경우가 있다.) 이 경우 아래와 같이 n 을 전역으로 설치해서 사용하면되는데...npm install -g nsudo n lts 설치후 n 명령어를 입력한 뒤 엔터를 누르면 노드 버전이 바껴야 함에도 불구하고 변경되지 않는 경우가 있다.바로 설치된 node 위치와 active 된 node 위치가 다르기 때문에 링크를 변경해 줘야 한다.그럴 경우 아래와 같이 링크를 일치 시켜주는 명령어를 사용하면 된다! ln -sf installed_path acti.. 2025. 3. 1.
(다음과정 미리보기) MSA 서비스 개발하기 (Application Gateway 개발) 2025. 2. 11.
(다음과정 미리보기) EDA 패턴 적용하기 2025. 2. 11.
다시한번 Node 붐이 올 것인가? 노드 기반의 Nest.js 개발자라면 누구나 한 번쯤 고민해보고, 또 바라는 상황일 것이다.개인적인 견해를 말하자면, 나는 이렇게 생각한다. "가능성이 없진 않다!" 2020년부터 노드 네스트(Nest.js) 붐이 시작되었고, 이 붐은 대부분의 스타트업에서 일어난 현상이었다고 해도 과언이 아니다.당시 배경을 살펴보면, 코로나 지원금과 제로금리에 가까운 저금리 기조가 전 세계적으로 유지되었고, 시장에 돈이 풀린 상황에서 창업을 시작한 창업자들은 너나 할 것 없이 개발자 채용에 힘썼다.심지어 몇몇 기업에서는 신입 초봉이 6000만원, 6500만원에 달하는 파격적인 대우를 제시하기도 했다.비전공자 개발자들도 개발 세계로 뛰어들기 시작했고, 이러한 상황 속에서 상대적으로 개발자 채용이 어려운 스타트업들은 비교적.. 2025. 2. 5.
nest 에서 metrics data 수집하기 (서버 모니터링 용) 이를 위해 npm 부터 설치하자yarn add prom-client 아래와 같이 서비스 레이어 부터 작성해 준다.(prom-client 에서 얻은 정보를 컨트롤러로 공유하기 위한 목적이다.)import { Injectable } from '@nestjs/common';import * as promClient from 'prom-client';@Injectable()export class BaseService { private readonly collectDefaultMetrics: () => void; private readonly httpRequestsTotal: promClient.Counter; private readonly httpRequestDurationSeconds: promClient.. 2025. 2. 4.
nest 래디스 캐시 redis cache 적용하기 https://docs.nestjs.com/techniques/caching Documentation | NestJS - A progressive Node.js frameworkNest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Readocs.nestjs.comNest 공식사이트 참고하면 자세한 설명이 나와있다.. 2025. 2. 4.
(다음과정 미리보기) 리펙토링 (관심사 분리 및 보완 패턴 적용) 리펙토링 포인트! - 현재의 구조에선 Product 만 존재하는데 Product 정보를 바쳐주는 option table, detail table 등을 추가해서 리펙토링  - 주문 로직이 다소 복잡해 보여요. 가독성과 성능 기반으로 리펙토링  - redis 를 이용하여 cart db 를 분리했지만, 대부분의 비지니스 로직이 repository 에 머물러 있습니다.  이를 service 영역과 repository 를 분리필요 - Kafka 로 분리는 cart 내역 삭제는 분리했지만, cart 전체를 분리 - Kafka 기반에 트랜젝션이 실패했을때 보상트렌젝션 로직를 구성 2025. 2. 1.
Mac 에서 사용중인 port 확인 및 종료하기 Node 로 서버 여러개를 (f/e, b/e) 를 띄우다가 얘기치 않게 종료된 경우, 다시 서버를 실행하려고 하면 이미 해당 포트는 사용중이라는 오류를 접하게 된다. 그럴때 간단하게 점유중인 포트를 종료하는 명령어가 있다. 1. 우선 종료하고자 하는 port 에 누가 점유하고 있는지를 찾는다.(PID 정보추출목적)lsof -i :3000 예를 들면 결과가 이렇게 나왔을경우COMMAND     PID USER   FD   TYPE           DEVICE SIZE/OFF NODE NAMEcom.docke 31044  test  2. 점유 중인 process 종료하기kill -9 31044 를 입력하면 해당포트를 사용할 수 있다. 2025. 1. 31.
(다음과정 미리보기) Test Container 개발 with Prisma and Mysql 테스트 코드를 왜 작성해야하는가?: 앞써 리펙토링을 진행했을때 처럼, 회원수의 증가에 따라 이용량이 증가하게되고 기존의 서버에서 처리가 가능했던게 처리가 힘들어지게 됨에 따라 어쩔 수 없이 리펙토링을 해야하는 상황에서 새롭게 개발한 소스가 이전과 동일하게 작동되고 있는지를 검증해야한다. 2025. 1. 27.
(다음과정 미리보기) (번외) Nest js 기반 Test Container 구축하기 시스템이 확장됨에 따라, 테스트의 중요성은 강조된다.이미 개발한 내역이 많기 때문에, 현재 개발중인 내역으로 인해 전파 이슈가 발생하면 안되기 때문인데,그렇다고 내가 개발한 내용은 1주일 정도량인데, 현재까지 개발된 내용이 2년 치라면?2년+1주일 분량전체를 테스트 할 것인가? 여기서 시스템의 안정성을 높이고, 개발 테스트 소요시간을 단축할 수 있는 방안이 바로테스트 코드 이다.(단위테스트, 통합테스트, e2e 테스트 등) 다만, 여기서 테스트 수행 시 DB가 항상 접속이 되어있어야 할까?는 다소 의문스러운 영역이긴하다왜? 독립적인 구성에서의 테스트가 이루어 져야하기 때문이다.예를 들면, Kafka 를 도입해서 사용중인데, Kafka 가 항상 있어야만 테스트를 돌릴수 있는가?라는 상황이면, github .. 2025. 1. 27.
(다음과정 미리보기) Graphql 사용하기 1. Graphql 이란    : GraphQL은 API를 위한 "데이터 요청 언어"로, 클라이언트가 원하는 데이터를 효율적으로      서버에서 가져올 수 있도록 돕는 기술  2. Why Graphql?    : RestAPI와 비교시 여러가지 "장점"들이 있는데 아래와 같이 나열해보겠다.     - B/E server End point가 하나이다!      : rest 의 경우 /users(사용자목록), /orders(주문목록) 이나, Graphql 의 경우 /graphql 하나!)      - 필요한 Data 만 요청 가능      : orders(주문목록) 중 상품명, 가격, 옵션, 변경일자, 재고 수량 중에 상품명과 가격만 필요한 경우가 있다고 가정하자       rest의 경우 2개의 필드정보.. 2025. 1. 27.
9. Kafka 설명 & 연동 (한방에 해결하자) 1. Kafka 란?    : Apache 재단에 등록된 오픈소스로써, 분산형 스트리밍, 대규모 트래픽처리, 대용량 데이터 처리를 원활하게 처리하기 Message Queue (https://kafka.apache.org/) Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.org  2. Kafka 구조 및 흐름     : kafka 의 구성은 main 의 역할인 kafka와 헬스체크 등 보조적인 역할인 zookeeper 가있다.     (최근에 zookeeper 의 의존성을 없애기 위해 kafka 단독으로 개발하여 나온 툴이 있는데,      zookeeper 대비 개선점은 확인되지 않는다.)      1) Kafka 기본구조.. 2025. 1. 27.
8. Redis 연동 (장바구니 리펙토링) 1. Redis 란?    : Key value 기반의 data 저장소(nosql) 이자, pub sub 이 지원 되는 Message Queue 2. 주요 특징     - Key, Value 구조에 TTL 세팅 가능     - 인메모리 기반 데이터저장소(속도가 빠름)     - String, Lists, Sets, Sorted Sets, Hashes 등의 다양한 자료 구조 지원 3. 속도비교       : 1ns(nano seconds) 는? 10의 -9승 = 0.000000001 초          (redis는 100ns!!)         1µs(microsecond) = 0.000001초.         RDB(Postgresql기준)는 1ms(millisecond) = 0.001 초 4. red.. 2025. 1. 27.
7. Docker (Nest js 로 개발한 서버를 docker로 띄워보자) 1. Docker 란?    : VM(Viture Machine)의 경량화 버전으로, 응용프로그램실행에 꼭 필요한 경량화된 OS 및 서버를 설치하여 컨테이너 기반으로       실행, 관리하는 오픈 소스(하나의 격리된 작은 PC 개념)    (추가설명 링크: https://www.ibm.com/kr-ko/topics/docker )  2. Docker 설치     1) 다운로드 : https://www.docker.com/ Docker: Accelerated Container Application DevelopmentDocker is a platform designed to help developers build, share, and run container applications. We handle t.. 2025. 1. 27.
728x90