Node.js + GraphQL 성능

hclee·2021년 1월 11일
0
post-thumbnail

express + type-graphql로 GraphQL API를 구현하는 중에 문뜩 처리 성능이 어떤지 궁금해서 찾아보게 되었다.

성능 측정 출처 : https://github.com/benawad/node-graphql-benchmarks

요약

  • graphql-jit을 활용해라
  • 모니터링을 위한 tracing은 꺼라
  • apollo-server, type-graphql 사용은 지양해라

측정 방법

5개의 클라이언트가 동일한 쿼리문으로 5초간 반복 요청하여 성능을 측정함

query {
	authors {
		id
        	name
        	md5
        	books {
        		id
	            	name
        	}
    	}
}

성능 결과를 보면 GraphQL의 초당 처리량은 좋아봐야 REST의 70% 밖에 안되며 응답 지연 시간은 대략 5배 이상 더 걸리는 것으로 보인다.

결과로는 무작정 GraphQL이 REST보다 나쁜 것으로 보이는데 이 테스트는 Overfetching, Underfetching을 고려하지 않은 테스트이고 실제 서비스에 GraphQL을 적용하니 전반적으로 빨라졌다 라는 글이 있는걸 보면 REST vs GraphQL보다 Node.js에서 GraphQL 요청 처리가 왜 느려지나?, 어떤 Graphql 구현체, 라이브러리를 써야 하나? 의 관점으로 테스트 결과를 봐야 할 것 같다.

성능, 개발/학습 비용을 보고 어느 선에서 타협할지를 선택해야 하는데 mercurius가 준수한 성능에 graphql-jit 캐싱 기능 등 지원해주는게 많아서 적절해 보이긴 한데 그냥 Golang으로 짜기로 했다.

0개의 댓글