Docker를 사용한 Bencher 셀프 호스팅 빠른 시작


Bencher란 무엇인가요?

Bencher는 지속적인 벤치마킹 도구 모음입니다. 성능 회귀가 사용자에게 영향을 미친 경험이 있나요? Bencher가 그런 일이 일어나는 것을 막을 수 있었습니다. Bencher를 이용하면 성능 회귀를 상용 환경으로 이동하기 전에 탐지하고 예방할 수 있습니다.

  • 실행: 기존 벤치마킹 도구를 사용하여 로컬 또는 CI에서 벤치마크를 실행합니다. bencher CLI는 기존 벤치마킹 하네스를 감싸고 결과를 저장합니다.
  • 추적: 벤치마크 결과를 시간이 지남에 따라 추적합니다. 소스 브랜치, 테스트 베드, 측정 기반의 Bencher 웹 콘솔을 사용하여 결과를 모니터링, 쿼리, 그래프로 만듭니다.
  • 캐치: CI에서 성능 회귀를 잡아냅니다. Bencher는 최첨단, 사용자 정의 가능한 분석을 사용하여 상용 환경으로 가기 전에 성능 회귀를 탐지합니다.

단위 테스트가 CI에서 기능 회귀를 방지하기 위해 실행되는 것처럼, 벤치마크는 Bencher와 함께 CI에서 실행되어 성능 회귀를 방지해야 합니다. 성능 버그도 버그입니다!


Bencher 독립 호스팅

Bencher는 오픈 소스이며 독립 호스팅이 가능합니다. Bencher Cloud를 사용하고자 한다면, Bencher Cloud 빠른 시작 튜토리얼을 확인하세요. 이 튜토리얼은 Docker를 사용하여 Bencher 독립 호스팅을 설정하는 방법을 제공합니다.

🐰 Bencher 독립 호스팅을 사용하여 익숙해지신 후에는 다음 리소스를 확인해 보세요:


Docker 설치

이 튜토리얼에서 콘솔과 API 서버를 실행하려면 docker가 설치되어 있어야 합니다. docker가 설치되어 있는지 확인하세요. 다음 명령어를 실행하세요:

Terminal window
docker --version

다음과 같은 결과가 표시됩니다:

Docker version 20.10.17, build 100c701

버전 번호가 다르더라도 괜찮습니다. 이 명령어가 작동하는 것이 중요합니다. 작동하지 않는다면 Docker 설치 지침을 따르세요.


bencher CLI 설치

운영 체제를 선택하고 제공된 명령을 실행하여 bencher CLI를 설치하세요. 자세한 내용은 bencher CLI 설치 문서를 참조하세요.

Terminal window

이제 bencher CLI가 설치되어 있는지 확인해 봅시다. 다음을 실행하세요:

Terminal window
bencher --version

다음과 같은 출력이 보여야 합니다:

bencher 0.5.0

bencher up 실행

dockerbencher CLI가 설치되었다면, 이제 콘솔과 API 서버를 bencher up CLI 하위 명령어로 실행할 수 있습니다. 다음 명령어를 실행하세요:

Terminal window
bencher up

다음과 같은 화면을 볼 수 있습니다:

Pulling `ghcr.io/bencherdev/bencher-api:latest` image...
Creating `bencher_api` container...
Starting `bencher_api` container...
Pulling `ghcr.io/bencherdev/bencher-console:latest` image...
Creating `bencher_console` container...
Starting `bencher_console` container...
🐰 Bencher Self-Hosted is up and running!
Console Server: http://localhost:3000
API Server: http://localhost:61016
Press Ctrl+C to stop Bencher Self-Hosted.
🐰 Bencher Self-Hosted logs...
Jan 08 16:49:07.727 INFO 🐰 Bencher API Server v0.5.0
...

출력이 다르게 나타나는 것은 괜찮습니다. 중요한 것은 이 명령어가 작동하는 것입니다.

🐰 ghcr.io에서 "authentication required"라는 오류가 발생하면 docker logout ghcr.io를 실행해보세요.


벤치마크 하니스 선택

이미 작성된 벤치마크가 있다면, 아래 목록에서 프로그래밍 언어와 벤치마크 하니스를 선택하세요. 그렇지 않으면, 이 단계를 건너뛰어도 됩니다. 자세한 내용은 벤치마크 하니스 어댑터 문서를 참조하세요.

C#
C++
Go
Java
JavaScript
Python
Ruby
Rust
Shell
JSON

벤치마크 추적하기

이제 벤치마크 결과를 추적할 준비가 되었습니다! 이를 위해 bencher run CLI 서브커맨드를 사용하여 벤치마크를 실행하고 결과를 수집합니다. 다음 명령을 실행하세요:

Terminal window

설정에 맞춰 벤치마크 명령어를 수정해야 할 수도 있습니다. 아직 벤치마크가 없다면, 벤치마크 명령어로 bencher mock 서브커맨드를 사용하여 모의 데이터를 생성할 수 있습니다. 모든 것이 예상대로 작동한다면, 출력의 마지막 부분은 다음과 유사할 것입니다:

View results:
- bencher::mock_0 (Latency): https://localhost:3000/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=f7022024-ae16-4782-8f0d-869d65a82930&measures=775999d3-d705-482f-acd8-41947f8e0fbc&start_time=1741390156000&end_time=1743982156000&report=709d3476-51a4-4939-9584-75d9a2c04c54
- bencher::mock_1 (Latency): https://localhost:3000/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=7a823440-216f-482d-a05f-8bf75e865bba&measures=775999d3-d705-482f-acd8-41947f8e0fbc&start_time=1741390156000&end_time=1743982156000&report=709d3476-51a4-4939-9584-75d9a2c04c54
- bencher::mock_2 (Latency): https://localhost:3000/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=8d9695ff-f352-4781-9561-3c69012fd9fe&measures=775999d3-d705-482f-acd8-41947f8e0fbc&start_time=1741390156000&end_time=1743982156000&report=709d3476-51a4-4939-9584-75d9a2c04c54
- bencher::mock_3 (Latency): https://localhost:3000/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=8ef6e256-8084-4afe-a7cf-eaa46384c19d&measures=775999d3-d705-482f-acd8-41947f8e0fbc&start_time=1741390156000&end_time=1743982156000&report=709d3476-51a4-4939-9584-75d9a2c04c54
- bencher::mock_4 (Latency): https://localhost:3000/perf/project-abc4567-wxyz123456789?branches=88d5192d-5cd1-47c6-a817-056e5968737c&heads=657a8ee9-1f30-49d4-bd9b-ceed02576d7e&testbeds=f3a5db46-a57e-4caf-b96e-f0c1111eaa67&benchmarks=1205e35a-c73b-4ff9-916c-40838a62ae0b&measures=775999d3-d705-482f-acd8-41947f8e0fbc&start_time=1741390156000&end_time=1743982156000&report=709d3476-51a4-4939-9584-75d9a2c04c54
Claim this project: https://localhost:3000/auth/signup?claim=d4b0cd5a-8422-40af-9872-8e18d5d062c4

이제 브라우저에서 각 벤치마크에 대한 결과를 확인할 수 있습니다. View results의 링크를 클릭하거나 복사하여 붙여넣으세요. 프로젝트를 클레임하려면, Claim this project 링크를 브라우저에 클릭하거나 복사하여 붙여넣으세요.



🐰 축하합니다! Bencher 셀프 호스팅으로 첫 번째 벤치마크 결과를 추적했습니다! 🎉


계속하기: 프로젝트 클레임 방법 ➡

🤖 이 문서는 OpenAI GPT-4에 의해 자동으로 생성되었습니다. 정확하지 않을 수도 있고 오류가 있을 수도 있습니다. 오류를 발견하면 GitHub에서 문제를 열어주세요.


Published: Sat, August 12, 2023 at 4:07:00 PM UTC | Last Updated: Sun, April 6, 2025 at 6:30:00 PM UTC