12P by sftblw 3달전 | favorite | 댓글 9개

Misskey (GeekNews)는 ActivityPub 연합을 지원하는 마이크로블로깅 서버 프로그램입니다. Misskey는 일본에서 주로 개발되고 있으며, 이모지 리액션, 자체 마크업인 MFM, 키워드 추적 (안테나), 프로필 장식하기, 자체 스크립트인 AiScript 를 사용한 인터렉티브 페이지 만들기, 미니게임 등등 재미있는 기능이 많이 있어서 재미를 찾는 유저들이 많이 찾는 플랫폼입니다.

Misskey의 기술 스택은 제가 알기로는 다음과 같습니다. (틀릴 수 있습니다.)

  • NodeJS, TypeScript
  • Koa.js, PostgreSQL, Redis
  • Vue

이 글에서는 Misskey의 메인테이너인 syuilo (슈이로) 님이 NodeJS와 비교하였을 때의 Bun의 성능을 Misskey의 소스를 가지고 검증합니다.

  • 기존 소스를 그대로 Bun으로 돌렸을 때 빨라지는가? 를 테스트하는 것을 목적으로 합니다. 글에서는 Bun을 위한 최적화를 별도로 수행하지 않았으며, 호환되지 않는 코드가 복잡한 경우 테스트를 수행하지 않았다고 밝히고 있습니다.
  • 글에는 어디까지나 하나의 사례로만 봐달라는 당부사항이 있습니다.
  • Ubuntu에서의 테스트였지만 Windows에서도 별 차이가 없었다고 합니다.

결론부터 말하자면, 이 사례의 경우 Bun에서 오히려 성능이 저하되는 현상이 주를 이루었습니다. 기존 대규모 소스를 Bun으로 실행한다고 해서 마법처럼 빨라진다고는 말할 수 없다...가 결론인 것 같네요. ChatGPT가 요약한 내용은 이렇습니다.

  • 메모리 사용량: Node 약 200MB, Bun 약 800MB로 Bun이 훨씬 많은 메모리를 소모.
  • 실행 속도: 타임라인 조회와 같은 다양한 처리에서 Node가 더 빠른 결과를 기록. 특히, 게시물 작성 시 Node는 5초, Bun은 10초로 Node가 2배 빠름.
  • AiScript: 순수 JavaScript 코드 실행에서는 Node(V8 엔진)이 약 1.5배 더 빠름.

글에는 코드베이스 각 부분의 실행 벤치마크가 올라와있으나 WebSocket의 1회성 실행을 제외하고는 모두 NodeJS가 근소하거나 많은 차이로 빠른 결과를 보였습니다. WebSocket 실행의 경우에도 10만회 실행 시 NodeJS가 근소하게 더 빠른 결과를 보였습니다.

다만 글 작성자인 syuilo 님은 Bun의 발전 가능성을 여전히 기대하고 있으며, 추가 최적화에 따라 성능이 향상될 가능성도 언급하고 있습니다.

런타임과 시스템 통합의 차이를 구분해서 보아야할텐데요.

Bun이 자랑하는 성능은 전반적으로 JSC의 특성과, 일부 시스템 통합의 최적화(또는 기능축소), 좋은 기반 라이브러리의 선택에서 기인합니다.

그래서 소규모 벤치마크에서는 Bun이 이기는 경향이 있지만 대규모/롱러닝 벤치마크에서는 Node.js에 밀리는 경향이 동시에 있어요.

단순 바꿔서 돌리는 경우 node:crypto나 zlib 관련 라이브러리처럼 bun 문서나 이슈에도 명시된 아직 최적화가 덜 된 케이스도 있습니다.

예시 중 5초에서 10초가 될 정도로 느려진거라면 아마 이런 부분이 아닐까 싶네요. 실제로 저도 jwt 관련 라이브러리에서 이런 문제 때문에 몇배 느려진 적이 있어 라이브러리를 바꿔 최적화 시켜야했죠.

굉장히 흥미로운 결과입니다. Bun의 경우 웹프레임워크로 ElysiaJS가 많이 추천되는데, Bun이 제공하는 최적화된 API를 쓰지 않으면 오히려 퍼포먼스가 떨어지는 문제가 있었습니다. Koa.js 를 사용했다고 되어 있는데 그 쪽에서 퍼포먼스가 많이 떨어졌을 것으로 추측됩니다.

일본어 기술 블로그 글은 어디서 가져오시는 지 궁금합니다. 체계적이고 핵심이 있는 느낌을 받아서요

이 본문의 출처는 잘 모르겠지만, Qiita에 좋은 글들이 많이 올라오는 것 같습니다.
영미권이나 한국 블로그와는 다른 시각으로 분석한 글들을 번역해서 올려주는 분들이 여러 채널에 있는데, 대체로 치타의 글을 번역 했다는 공통점이 있었습니다.

구글검색 자동완성에서 키타와 zenn을 비교하는 검색어를 추천해줘서 zenn도 찾을 수 있었습니다. 정보 감사드립니다

Qiita는 키타 라고 읽으시면 됩니다.

앗 그렇군요 머쓱

다른 글은 모르겠지만 이 글은 미스키에 올라왔기 때문에 연합우주에서 받아볼 수 있었습니다 (저도 거기서 먼저 보고 여기에 올라온 걸 봤습니다)