이전 게시글 에서 spring mvc 에서 Thread 별 websocket benchmark 테스트를 진행해봤고 이번엔 webflux 와 go 에 대한 비교를 진행보고자 합니다.
(go 언어에 대한 이해도가 낮음)
기기: Mac m1 pro
메모리: 16GB
칩: Apple M1
오픈 파일의 최대수(soft): 65000
version: go1.23.2 darwin/arm64
library: github.com/gorilla/websocket
spring boot: 3.3.5
jvm: kotlin(1.9.25)
jdk: corretto-17.0.12
그 외 설정은 Default
Thread 1개당 1request 10000개의 동시요청에 대한 WebSocket Connection(open connection) 성공유무 와 cpu utilization, memory 에 대한 성능 분석을 하고자 함
ide 를 사용하지않고, go 와 spring 을 별도의 터미널 환경으로 실행하였습니다.
cpu utilization, memory usage
summary report
한가지 언어를 잘 다루는 일도 중요하지만, 언어적 특징을 잘 살려 알맞은 프로젝트에 적용해 나가는 것 또한 중요하다고 생각이 들었습니다. 저는 이번 테스트를 통해 리소스를 더 효율적으로 사용할 수 있는 go 언어를 선택해서 한정된 자원속에서 더 효율적으로 사용할 수 있도록 websocket 서버를 go 를 선택해서 다뤄볼 예정입니다.