brunch

You can make anything
by writing

C.S.Lewis

by bart Jul 14. 2016

페이스북의 모바일 앱 테스트

The mobile device lab at the Prineville

The mobile device lab at the Prineville data center

Facebook의 Antoine Reversat라는 production engineering team에 소속된 분이 쓴 블로그 포스트를 요약 정리. 하드웨어 쪽은 많이 스킵 했습니다.


요약 + 조금 더 내용 붙인 기사는 

http://www.theverge.com/2016/7/13/12166824/facecbook-smartphone-testing-lab-battery-life-prineville-data-center 에서도 볼 수 있습니다.


배경

- 코드 변경이 앱의 성능에 끼치는 영향을 기기의 스펙 뿐만아니라 다양한 OS 등의 조건에서 측정 되어야 함.

- 페이스북은 매 주 수천여개의 코드 변경이 있으며 이로 인한 코드 복잡성 때문에 의도치 않은 데이터, 메모리, 베터리 사용량의 문제를 겪을 수 있음.


단일 디바이스에 대한 성능 측정

- 코드 변경에 따른 코드 성능을 측정하기 위해 CT-Scan이란 서비스를 개발했고 효과를 봤음.

- 저장소에 소스가 커밋되면 빌드 수행 후 cold, warm 스타트나 feed 스크롤 성능, 베터리 소모와 같은 성능 테스트를 수행함. 수행된 결과는 plotted(수행 순서 등이 주르륵 나열 되어 보여지는 듯) 되어있고 개발자들이 보고 문제를 확인 할 수 있음.


한계

- 초기에는 개발자가 자기 책상에서 자기 기기로 CT-Scan을 돌려 테스트 했음.

- 다양한 조건에서 테스트를 하고 싶었음.


지금은

- Mobile Device Lab에서 수천개의 기기에서 테스트 돌리고 있음.



도전의 역사

- 작은 Production Engineering 팀 조직.

- 시뮬레이터 vs 실기기, 실기기 win. 시뮬레이터에선 미묘한 성능 하락은 추적할 수가 없었음. 그래서 실기기 테스트(on-device testing)로 함.


첫 버전. "썰매"

- 금속 rack 안에 기기들을 올려 놓음. 이건 금속이 너무 많아 Wi-Fi가 안터져서 망함.



두번째 버전. "곤돌라"

- 플라스틱으로 rack을 만들고 100개 정도 디바이스를 넣어 놓았음. Wi-Fi는 터지는데 USB 케이블들이 짧아서 문제가 많았음.

- 선이 얽혀서 엉망이었음. 망함.



세번째 버전. "The Slatwall"

- 방 전체를 240개의 기기를 넣어서 구성했음.

- 2000개(목표 하는 수인데 이건 여러가지 factor를 고려해서 산출된 것임)를 넣기 위해선 9개 정도 필요했고 Menlo Park 본사에 만들려고 했는데

- 방 확보 실패함. 그래서 mobile device lab은 data center로 갔음. 쫒겨남



하드웨어: The Mobile Rack

- 각 rack 간 독립된 환경 구성. 일관된 환경을 제공하여 테스트들이 신뢰성있고 결과를 재현할 수 있또록.

- 각 rack은 8대의 맥미니나 4대의 안드로이드 테스트를 위한 OCP Leopard server를 수용할 수 있음.

- 여기에 테스트할 앱들이 설치되고 테스트되고 제거될 기기들이 장착 됨.

- 각 맥미니는 4대의 아이폰을 연결할 수 있고 OCP Leopard server는 8대의 안드로이드 기기, 즉 rack 당 32대의 기기를 연결할 수 있음.

- 기기들은 rack에 장치된 AP에 Wi-Fi로 연결. 각 기기들은 스크린이 잘 보이도록 장착된 카메라로 녹화할 수 있음.

- 엔지니어들은 원격으로 카메라에 접속하여 코드 변경에 따른 기기들의 앱 실행을 볼 수 있음.


Software challenges

- 많은 기기에서 테스트를 수행하려면 소프트웨어적으로 풀 것들이 있음.

- 기기들을 모니터링하고 비정상적인 조건에 대해 알람을 발생하고 문제를 수정하던지 Data center의 관리 팀에게 문제를 처리해달라고 요청할 수 있음.

- PE 팀이 합류하기 전에는 host에 다 수작업으로 함. 안좋음.

- Chef !

- 원래 서버쪽에서 쓰는건데 개발자들이 친숙해하고 좀 조사해보니깐 모바일 기기에도 적용할 수 있어보여서 Chef로 결정.



앞으로

- iOS에서는 Chef 지원이 잘 안되고 있는데 확장할 것임.

- iOS에서 테스트 구동 위해서는 20번의 절차를 거쳐야함. 앞으로 이걸 다이얼로그에서 한번 선택하는 것으로 줄이려고 함.

- 페이스 북 내 다양한 팀에서 실기기 테스트를 할 수 있는 범용적인 플랫폼을 제공해주고 싶음.

- 지금은 CT-Scan 프레임웤 쓰는 곳만 할 수 있음.

- Webdriver를 끼얹어보면 어떨까

- 모바일 기기를 위한 rack 설계나 기기 조작을 위한 Chef 레시피 등을 공개하여 다른 사람들이 쓰고 기여할 수 있도록 하기를 희망함.



오역 있을 수 있습니다.


작가의 이전글 Keddit - Part 2
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari