Siner's Blog

about me


2개의 게시글이 있습니다.

https://user-images.githubusercontent.com/34048253/154791313-ee720cb4-16a0-4482-aa8a-f78815a84916.png
node와 ts-node의 CPU,RAM 사용량 비교
ts-node를 production에서 사용하면 안되는 이유
6 min read2022.2.19

node와 ts-node의 차이가 어디에서 오는지 알아보기 위해 조사한 과정을 기록으로 남기고자 합니다. 특정 코드의 동작시간과 메모리 사용량을 각각 비교해보았습니다. 테스트 코드 테스트하고자 하는 코드는 소수의 개수를 반환하는 간단한 코드입니다. 결과 좌측(또는 위)이 node, 우측(또는 아래)이 ts-node입니다. 시간 node와 ts-node 모두 출력된 결과에선 별 차이가 없었고, 반복문을 10만에서 100만회로 늘려서 다시 시도해보아도 0.3%정도의 오차율만 보였습니다. ts-node의 경우 ts-node 패키지를 실행하는 시간으로 인해 실제로는 수 초 이상의 시간이 더 소요되었습니다. 하지만 이러한 컴파일 타임은 서버와 같이 장시간 동작하는 프로세스에서는 의미없는 차이라고 느껴집니다. Resident Set Size (RSS) RSS의 경우 7~8배 정도의 차이가 있었습니다. 또한 node의 rss는 코드가 진행됨에따라 변화했지만, ts-node…

https://user-images.githubusercontent.com/34048253/155850113-999fabdb-c665-431a-8baf-a8c840ace61d.png
Graphql Dataloader 적용해보기
GraphQL에서 발생하는 N+1 문제 해결방법
5 min read2021.12.11

이 포스팅의 예제 코드는 typescript + nestjs를 기반으로 작성되었지만, 다른 언어에도 마찬가지로 적용이 가능합니다. 이 포스팅은 아래의 스키마를 기반으로 작성되었습니다. Dataloader 적용 전 위의 쿼리 요청을 위해 서버에서 Resolver를 아래와 같이 작성했다고 가정해봅시다. 아직 Dataloader를 적용하지 않은 상태입니다. 만약 orders 쿼리의 결과로 5개의 주문이 반환된다면, Dataloader 작업을 하지 않은 경우 아래처럼 쿼리가 발생합니다. (5개의 주문 id는 1,2,3,4,5이며 주문한 유저의 id 또한 각각 1,2,3,4,5라고 가정해봅시다.) user와 order_item 데이터를 가져오기 위해 반환된 order 수 만큼의 쿼리가 추가적으로 발생했습니다. 이를 N+1 Problem 이라고 부릅니다. REST API의 경우 모든 데이터를 한번에 가공하여 클라이언트에 전달하지만, GraphQL의 각각의 type은 해당 값을 resolve…


Deployed by NetlifySource code on Github