토스 네뷸라 디바이스 팜, Appium을 버리고 자체 드라이버를 만든 이유
팀마다 각자 폰을 꽂고 테스트를 돌려야 했던 문제를 토스가 네뷸라라는 디바이스 팜으로 푼 과정을 읽고 정리한 기술 블로그 리뷰. Client/Server/Agent/기기 4계층 구조, Appium 대신 자체 드라이버를 만든 이유, Android/iOS 실시간 미러링을 자체 구현한 방식까지.
팀마다 각자 폰을 꽂고 테스트를 돌려야 했던 문제를 토스가 네뷸라라는 디바이스 팜으로 푼 과정을 읽고 정리한 기술 블로그 리뷰. Client/Server/Agent/기기 4계층 구조, Appium 대신 자체 드라이버를 만든 이유, Android/iOS 실시간 미러링을 자체 구현한 방식까지.
전위/중위/후위 순회를 재귀로 구현하며 결과 배열을 함수 밖에 두는 대신 중첩 함수로 감싸는 방법부터, 이진 트리 구조 자체는 탐색 성능을 보장하지 않는다는 것, 균형이 무너지면 O(log n)이 O(n)이 되는 이유, 캐시 지역성 때문에 DB가 이진 트리 대신 B+트리를 쓰는 이유까지.
seglist의 크기 클래스에 물리적 제약을 더한 버디 시스템 — 반으로 쪼개고, XOR 한 번으로 O(1)에 짝을 찾아 병합하고, 그 대가로 최대 50%까지 내부 단편화를 감수하는 구조를 seglist와 비교하며 정리.