본문 바로가기
🍎iOS프로그래밍/오늘의 공부

에어비앤비 - 거대한 iOS앱의 생산성을 위해 바꾼 것들(1)

by 둥둥동동# 2023. 8. 30.
728x90

 

거대한 iOS앱의 생산성을 위해 바꾼 것들

 

한 에어비앤비 개발자가 medium에 올린 글을 번역, 요약하여 포스팅합니다.

 

 

대규모 iOS 앱 개발의 어려움

 

2010년 6월 16일, 한 인턴 개발자의 첫 iOS개발 코드가 커밋되었습니다. 이 코드가 2022년 2월에는 150만줄의 코드로 업그레이드 되었습니다. 현재(2022년 2월)에 iOS팀에 75명의 개발자가 있으며 지구상 대부분의 나라에게 62개의 언어로 서비스하는 앱을 매주 업데이트 합니다. 

 

최근까지는 /lib 라는 최상위 디렉토리안에서 여러 모듈로 나눈 형태였습니다. 코드 계층과 카테고리가 부족했기 때문에 여러 개발자가 공통으로 사용하는 기능의 기존 코드를 찾는데 오랜 시간이 필요했습니다. 우리는 동일한 기능을 담당하는 중복된 코드를 찾아냈고 이는 앱 파일 크기를 키우는 문제 중 하나였습니다. 단순히 중복이라는 문제를 넘어, 제대된 관리하에 구현된 코드보다 품질이 떨어지는 문제가 많았습니다.

 

Xcode는 iOS엔지니에어게 가장 편리하게 개발할 수 있는 도구이지만, 우리의 프로젝트를 수용하기엔 부족했습니다. Xcode 프로젝트는 PR시 코드를 검토하기 어려웠으며, 더 거대한 엔지니어팀이 코드를 빠르게 업데이트 함에 따라 충돌이 빈번하게 발생했습니다. 심지어 Xcode에서 프로젝트를 여는 것조차 오랜 시간이 걸렸습니다. 1여년 전에는 워크스페이스에 로드되는데 까지 1-2분정도 걸리는것을 측정했습니다.

 

 

iOS 엔지니어들은 오랜 빌드시간에 좌절했습니다. 한 창의적인 엔지니어는 외부모니터의 플러그를 제거하면 노트북 빌드속도가 더 빨리진다는 사실을 발견하기도 했습니다. 많은 엔지니어가 발열로 인한 성능저하를 막기 위해 USB-C 충전케이블을 맥북 프로 오른쪽에 연결하는 방법을 숙련했습니다. 코드가 50만 라인 이전에는 더 강력한 하드웨어로 교체해 해결할 수 있었지만 어느덧 한계에 다다랐습니다. 느린 빌드시간으로 많은 시간을 낭비하며 최선을 다해 일한다고 느낄 수 없게 되었습니다.

 

 이러한 문제는 갈수록 커져갔습니다. 소규모 프로젝트를 진행해온 신규채용 개발자들은 너무 커져버린 코드의 빌드속도에 익숙하지 않았고, 인프라 요구사항의 우선순위를 지정하는 방법?에 대해 피드백을 제공했습니다. 우리는 세계 최고수준의 iOS애플리케이션을 계속 출시하려면 무언가 변화가 필요하다는 것을 알고 있었습니다. 

 

 

우리가 채택한 솔루션

 

다음글

https://admd13.tistory.com/433

 

 

원문

https://medium.com/airbnb-engineering/designing-for-productivity-in-a-large-scale-ios-application-9376a430a0bf

 

728x90

댓글