토스의 디바이스 팜 만들기
차영훈 · 토스 · 토스 기술 블로그
소개
팀마다 맥북에 폰을 꽂던 시절을 끝내고, 실기기를 API 호출 한 번으로 여는 플랫폼을 만들며
AI 핵심 요약
팀마다 맥북이나 맥미니에 테스트용 폰을 연결해 운영하면서 기기 관리와 보안 대응이 반복되고 규모 확장도 어려웠던 문제를 해결하기 위해, 토스는 실기기를 API 한 번으로 점유하고 제어하는 중앙 디바이스 팜 네뷸라를 만들었습니다. Kafka 기반 테스트 실행과 기기 분산 락, 호스트 에이전트 구조를 갖추고, Appium의 속도·세션 한계를 줄이기 위해 Android는 ADB·UiAutomation, iOS는 Swift·XCTest를 활용한 자체 stateless 드라이버를 개발했습니다. 실시간 조작과 화면 공유를 위해 양 플랫폼의 H.264 미러링을 구현하고, 보안 기준과 무중단 운영 체계를 중앙에서 적용해 기기 15대에서 100대 이상 규모의 전사 공용 인프라로 확장했습니다. 하나의 공개 API를 기반으로 웹 콘솔·SDK·CLI·AI 에이전트 등 활용이 넓어졌으며, 다음 단계로 테스트 환경과 계정 상태를 빠르게 준비하는 기능을 계획하고 있습니다.
- 기기 점유·할당·해제를 분산 락으로 관리하면 여러 테스트가 같은 실기기를 동시에 사용해 충돌하는 일을 막을 수 있습니다.
- 상시 실행되는 컨트롤러에 stateless HTTP 요청을 보내면 세션 생성 비용과 세션 관리 부담을 줄일 수 있습니다.
- Android의 SurfaceControl·MediaCodec과 iOS의 macOS 캡처 기능을 활용해 H.264 미러링 경로를 통일했습니다.
- 중앙화된 인프라는 보안 기준을 모든 기기에 일괄 적용하고, 팀별 중복 운영을 줄이는 데 유리합니다.
- 실기기 팜은 케이블·전원 같은 하드웨어 장애와 프로세스 복구·무중단 배포까지 함께 설계해야 합니다.
비슷한 학습 자료
쉼 없이 도는 테스트, 사람이 어디까지 돌봐야 할까요? - 토스닥터(Toss Doctor)
강연신/안재은/한가영 · 토스 기술 블로그
토스의 속도와 품질, 상용 도구로 충분한가 — 토션(Tossion)
이정성 · 토스 기술 블로그
누군가는 토스를 테스트하는 동안, 우리는 테스트하는 법을 만듭니다.
토스 QA 플랫폼 팀 · 토스 기술 블로그
토스 팀은 점심 시간에 사용자를 만난다
서소희 · 토스 기술 블로그
문제의 근원을 해결 하기 위한 다양한 시도
정세희 · 토스 기술 블로그
크고 복잡한 제품, 과감하게 갈아엎기
이지윤 · 토스 기술 블로그