You are here: Home - Studies∞ - GDC Day-3 Class 3

GDC Day-3 Class 3

GDC Day-3 Class 3

A Two-Part Technique for Efficiently Scaling Build and Test
Room 2022, West Hall, 2nd Fl
Josh Nixdorf(Electronic Arts)

빌드 과정과 테스트 과정은 개발 과정의 필수 요소들 중 일부입니다.
개발을 하다보면 이 과정이 중요하다는 생각을 잊게 될 때가 종종 있습니다.
회사에서도 이전에는 빌드, 테스트 과정이 그렇게 큰 portion을 차지하지 않았습니다.
이전의 개발 제품들은 앱의 사이즈가 작았기 때문입니다.
하지만 iOS 플랫폼에서 본격적으로 상용 제품을 출시하면서 개발 사이즈가 급격히 커지게 되었고,
이와 비례해서 빌드와 테스트에 들어가는 코스트도 상당히 커지게 되었습니다.
앱스토어 시장에 본격적으로 진출하면서부터 회사에서 제가 빌드 쪽 업무를 본격적으로 맡아 처리하게 되었는데, 어떻게 하면 빌드 관련 업무의 코스트를 줄일 수 있을지 회사 내에서 항상 이야기가 자주 있었습니다. 그래서 이번 강연에는 제가 참석하게 되었습니다.

강연자가 초반에 이야기한 이 수업의 방향도 다행히 제가 참석하게 된 것에 부합했습니다.
강연자는 빌드 및 테스트의 오토메이션이 왜 필요한가를 정의하면서 강연의 목적을 이야기했습니다.

빌드, 오토메이션이 필요한 이유
- 테스트가 게임을 즐기기 위한 시간으로 변질되는 경우가 있기 때문에
- 개발자가 개발에 집중할 수 있게 하자
- 개발자가 집에 제 때 들어가게 만들자

강연자도 역시 빌드와 테스트에 과도하게 코스트가 들어가 어려움을 겪었기에 이에 들어가는 코스트를 줄이고자 빌드 & 테스트 오토메이션이 필요하다고 했습니다.
소스코드, 리소스의 commit 이후부터 통합, 빌드, 기타 등등 테스트까지 상당히 많은 단계가 있을텐데, 우선은 이 과정을 automation 하여 commit 이후에 테스트까지의 과정을 빌드 & 테스트의 단 two step으로 줄여버렸다고 합니다.
(사실 이 과정이 어떻게 이루어지는지에 대한 노하우가 관심사였는데, 이 과정보다는 더 나아간 과정에 포커스가 맞춰진 과정이어서 아쉬움이 남는 강연이었습니다.)

그래서 이 과정이 단축되어 코스트가 많이 줄었지만 강연자는 여기서 더 코스트를 줄이기 위한 방안에 대해 고민했습니다.
이렇게 줄인 과정조차도 여러 종류의 다양한 테스트가 필요해질 경우, 빌드 & 테스트의 과정을 여러 차례 순차적으로 이루어져야 하는 단점이 생기기 때문입니다.
이미 모든 과정을 오토로 동작하도록 만들었는데, 어떻게 코스트를 줄이느냐면, 그것은 바로 parallel, 병렬처리입니다. 빌드&테스트의 실행 셋트가 여러 번 필요할 때 각 단계를 여러 대의 기기들을 이용해 parallel로 돌리면 전체적으로 소요되는 시간을 줄일 수 있겠지요.
이제는 정말 줄일대로 줄인 것 같은데, 강연자는 여기서 마지막으로 다시 한 번 비용이 발생한다고 합니다. 바로 기기를 여러 대 사용할 경우 하드웨어에 투자되는 비용이지요. 결국 강연자가 최종적으로 제안하는 것은 빌드&테스트를 진행하는 virtual machine과 virtual storage를 만들고, 이 빌드&테스팅을 위한 VM을 여러 개의 인스턴스로 실행할 수 있도록 independent하게 구현한 다음, 여러 개의 VM 인스턴스를 하나의 기기에서 동시에 실행하는 것입니다.
이렇게 소프트웨어를 이용해 virtual machine을 이용할 경우 생기는 장점은 빌드&테스트 환경으 scalinig이 쉽고(전체 빌드&테스트 규모를 탄력적으로 변경하는 것을 의미합니다), 빌드 환경을 캡슐화하여 노출을 최소화시키는 것, 하드웨어 스펙을 다양하게 설정해볼 수 있는 장점들이 생긴다고 합니다.

확실히 강연 내용은 강연자가 말한대로 빌드&테스트가 반복적, 순차적으로 이루어져야 할 경우에 효과적인 내용이 맞습니다. 하지만 강연 내용에서 다양한 기기들에 대해 어떻게 빌드&테스트 환경을 제공하는지에 대해 듣지 못한 점은 아쉬웠습니다. 아무래도 저희 회사가 직접 보유한 미들웨어 엔진을 이용해 개발을 하고 있기 때문에 엔진개발 측면에서도, 사용자 측면에서도 다른 회사는 어떻게 이 부분을 다룰지가 가장 관심있는 이슈였는데 말이지요. 그리고 강연자의 말대로 모든 비용을 최적화하는 것은 좋지만, Virtual Machine, Virtual Drive를 사용하는 것이 과연 좋은가는 의문이 들었습니다. 정확히 세팅된 디바이스 환경에서 빌드&테스트가 이루어지는 것이 맞을텐데, 테스트의 어느 단계까지 VM을 이용하는지 궁금했습니다. 그리고 VM은 어떤 것을 이용하는지는 잘 모르겠지만, VM을 직접 구현하여 사용하는 것이라면 빌드&테스트 과정에 결함이 발생할 수 있을텐데 이에 관한 문제들을 어떻게 해결하는지에 대한 이슈에서도 궁금함이 남았습니다.
총평을 하자면, 목표했던 내용에 대해서는 상세한 내용을 들을 수는 없었지만, 회사에서 관리해야 하는 프로젝트의 규모가 커질 경우 빌드와 테스트의 자동화 수준을 어느 선까지 끌어올리는지를 들을 수 있었던 데 의의를 두어야겠습니다.

by Jake Noah

Leave a Reply

Back to top