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 설치하기
이 튜토리얼에서 UI와 API 서버를 실행하려면 docker
가 설치되어 있어야 합니다.
docker
가 설치되어 있는지 확인해 보세요.
다음을 실행: docker --version
다음과 같은 것을 볼 수 있어야 합니다:
버전 번호가 다르다 하더라도 괜찮습니다. 중요한 것은 이 명령어가 동작한다는 것입니다.
그렇지 않다면 docker
설치 지침을 따르세요.
bencher
CLI 설치하기
Linux, Mac, & Unix
Linux, Mac, 그리고 Unix-like 시스템은 터미널에서 다음을 실행하세요:
Windows
Windows 시스템에서는 PowerShell 터미널에서 다음을 실행하세요:
🐰 만약
running scripts is disabled on this system
이라는 오류 메세지가 나타나면:
관리자 권한으로 Powershell 열기
- Run:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- Enter:
Y
- 이 스크립트를 다시 실행하세요
추가 설치 옵션은 bencher
CLI 설치 방법에서 확인하실 수 있습니다.
이제 우리가 bencher
CLI를 설치했는지 테스트해봅시다.
다음을 실행하세요: bencher --version
이러한 내용을 보실 수 있습니다:
Bencher UI 및 API 서버 실행
docker
가 설치되어 있다면 이제 UI 및 API 서버를 실행할 수 있습니다.
실행하세요: bencher up
아래와 같은 내용을 볼 수 있어야 합니다:
출력 내용이 달라도 문제없습니다. 중요한 것은 이 명령어가 작동하는지 여부입니다.
🐰 만약
ghcr.io
로부터 다음과 같은 오류 메시지가 나온다면:"authentication required"
다음을 실행하세요:docker logout ghcr.io
🐰 Windows에서, 아래와 같은 오류 메시지가 나온다면:
image operating system "linux" cannot be used on this platform: operating system is not supported
다음을 실행하세요:& 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchLinuxEngine
Bencher API 서버 로그
아직 API 서버에서 이메일/SMTP를 설정하지 않았기 때문에,
이 튜토리얼 후반부에서 받게 될 확인 코드들이 위에서 보여진 것처럼 서버 로그에 나타날 것입니다.
즉, 인증 자격증명서는 bencher up
의 출력 내용에 표시될 것입니다.
벤처 호스트 설정
bencher
CLI의 기본 호스트는 Bencher Cloud입니다(예: https://api.bencher.dev).
따라서 당신의 호스트네임을 설정해야 합니다. BENCHER_HOST
환경 변수를 이용하는 것이 가장 쉬운 방법입니다.
새로운 터미널 창을 엽니다.
Linux, Mac, 그리고 다른 Unix 계열 시스템에서는: export BENCHER_HOST=http://localhost:61016
를 실행하세요.
Windows에서는: $env:BENCHER_HOST = "http://localhost:61016"
를 실행하세요.
그 후 echo $BENCHER_HOST
혹은 Write-Output $env:BENCHER_HOST
를 각각 실행하세요.
다음과 같이 보여야 합니다:
Bencher Self-Hosted 계정 생성
Bencher Self-Hosted에 가입하기
다음 주소로 이동하여 로컬 Bencher Self-Hosted 인스턴스에 계정을 생성합니다: http://localhost:3000/auth/signup
계정을 생성한 후, bencher up
을 실행한 터미널 창으로 돌아가십시오.
다음과 같은 내용을 볼 수 있어야 합니다:
브라우저에서 Confirm Email
링크로 이동하거나 Confirmation Token
을 다음 주소의 Confirm Token
필드에 복사하십시오: http://localhost:3000/auth/confirm
그 후에, Bencher Self-Hosted 계정에 로그인 되어 있어야 합니다!
API 토큰 생성하기
Bencher API를 사용하려면 API 토큰을 생성해야 합니다.
Bencher Console로 이동하세요.
오른쪽 상단에 있는 성함 부분에 마우스를 올려놓으세요.
드롭다운 메뉴가 나타날 것입니다. 토큰들
을 선택하세요.
API 토큰 페이지에 도착하면, ➕ 추가
버튼을 클릭하세요.
API 토큰 추가하기
새로운 API 토큰을 생성하면, 클립보드에 복사해야 합니다. 작업할 터미널에서 API 토큰을 환경 변수로 내보냅니다.
Linux, Mac 그리고 Unix 계열의 시스템에서 실행하세요: export BENCHER_API_TOKEN=YOUR_TOKEN
Windows에서 실행하세요: $env:BENCHER_API_TOKEN = "YOUR_TOKEN"
그 다음 echo $BENCHER_API_TOKEN
또는 Write-Output $env:BENCHER_API_TOKEN
을 실행하세요.
다음을 볼 수 있을 것입니다:
🐰 참고: 다른 터미널로 이동하면 API 토큰을 다시 내보내야 합니다.
프로젝트 생성
이제 사용자 계정과 API 토큰이 있으므로 프로젝트를 생성할 수 있습니다. 먼저 새 프로젝트가 속할 조직을 알아야 합니다.
실행: bencher org list
다음과 같은 내용이 나와야 합니다:
당신의 출력 결과는 위의 출력 결과와 약간 다르게 나올 것입니다:
uuid
는 의사무작위입니다name
와slug
는 이름에 기반합니다created
와modified
타임스탬프는 당신이 방금 가입했을 때부터 시작됩니다
이제 조직 내에 새 프로젝트를 생성할 수 있습니다.
아래 명령에서 조직의 slug
를 organization
인수로 대체합니다 (예: YOUR_ORG_SLUG
).
실행: bencher project create YOUR_ORG_SLUG --name "Save Walter White" --url http://www.savewalterwhite.com
다음과 같은 내용이 나와야 합니다:
다시 한 번, 당신의 출력 결과는 위의 출력 결과와 약간 다르게 나올 것입니다.
이 명령이 작동하는 것이 중요합니다.
프로젝트의 slug
필드 (예: save-walter-white-1234abcd
)를 기억해두세요.
보고서 실행
드디어 벤치마크 정보를 수집할 준비가 되었습니다! 이 튜토리얼에서는 간단하게 하기 위해 가짜 데이터를 사용하겠습니다.
실행: bencher mock
다음과 같은 내용이 나와야 합니다:
당신의 출력 결과는 위의 출력 결과와 약간 다르게 나올 것입니다, 데이터는 의사무작위입니다. 이 명령이 작동하는 것이 중요합니다.
이제 가짜 벤치마크 메트릭 데이터를 사용하여 보고서를 실행해 보겠습니다.
아래 명령에서 프로젝트의 slug
를 --project
인수로 대체합니다 (예: YOUR_PROJECT_SLUG
).
실행: bencher run --project YOUR_PROJECT_SLUG "bencher mock"
다음과 같은 내용이 나와야 합니다:
이제 각 벤치마크의 결과를 브라우저에서 볼 수 있습니다.
View results
링크를 클릭하거나 복사해서 붙여넣기하세요.
각 벤치마크에 대해서는 단일 데이터 점만 있으므로, 데이터를 더 추가합시다!
먼저 프로젝트 슬러그를 환경 변수로 설정하여, 모든 실행에서 --project
를 제공하지 않아도 되도록 합시다.
실행: export BENCHER_PROJECT=save-walter-white-1234abcd
그런 다음 다음을 실행하면: echo $BENCHER_PROJECT
다음을 볼 수 있어야 합니다:
다시 한번 --project
없이 동일한 명령을 실행하여 더 많은 데이터를 생성하겠습니다.
실행: bencher run "bencher mock"
이번에는 결과를 bencher run
으로 파이프하여 더 많은 데이터를 생성해 보겠습니다.
실행: bencher mock | bencher run
가끔 결과를 파일에 저장하고 bencher run
이 결과를 가져오게 하고 싶을 수도 있습니다.
실행: bencher run --file results.json "bencher mock > results.json"
또한 다른 프로세스가 벤치마크를 실행하고 결과를 파일에 저장하도록 하고, bencher run
이 그 결과를 가져오도록 만들 수도 있습니다.
실행: bencher mock > results.json && bencher run --file results.json
마지막으로, bencher run
의 --iter
인수를 사용하여 많은 데이터를 생성합시다.
실행: bencher run --iter 16 "bencher mock"
🐰 팁:
bencher run
CLI 서브커맨드 문서에서bencher run
이 할 수 있는 모든 것에 대한 전체 개요를 확인하세요!
알림 생성
이제 벤치마크에 대한 히스토리 데이터가 있으니, 알림을 생성해 봅시다! 알림은 벤치마크 결과가 성능 성하위로 판단되었을 때 생성됩니다. 그럼 성능 성하위를 시뮬레이션해봅시다!
실행: bencher run "bencher mock --pow 8"
출력 결과의 끝 부분에 새로운 섹션인 View alerts
가 있어야 합니다:
이제 각 벤치마크의 알림을 브라우저에서 볼 수 있습니다.
View alerts
링크를 클릭하거나 복사해서 붙여넣기하세요.
🐰 팁: 성능 성하위가 어떻게 검출되는지에 대한 전체 개요를 보려면 임계값 & 알림 문서를 확인하세요!
🐰 축하합니다! 첫 번째 성능 성하위를 잡았습니다! 🎉