2013년에 출시된
뷰티플러스는
세계에서 가장 인기 있는 사진 편집 앱 중 하나로, 메이크업 아티스트, 사진작가 및
스마트폰을 사용해 사진을 촬영하는 일반인들이 사용합니다. 매달 약 5천만 명에
달하는 사람들이 이 앱을 사용해 셀카, 사진, 동영상을 편집하고 필터를
추가합니다. 중국의 Xiamen Meitu Technology Co., Ltd.에서 개발한 이 앱은 셀카 세트로 특히 유명하고 피부톤 수정, 웃는 얼굴 보정, 얼굴 갸름하게 만들기 기능, 잡티 없애기 등 거의 모든 작업에 사용되며 이 모든 작업을 드래그 및 클릭을 통해 간편하게 실행할 수 있습니다.
개발사가 앱을 자주 업데이트하는 관계로 많은 수의 개발자가
필요합니다. 하지만 시간이 지날수록 기본적인 아키텍처의 일관성과
명확성이 부족해졌습니다. 빠른 속도로 움직이는 팀에서는 협력 관계에
있는 개발자들에게 업무를 공유하면서 수명 주기 관리 작업을 단순화하고
비동기 UI 새로고침과 관련된 문제를 해결할 방법이 필요했습니다.
그림 1: 뷰티플러스의 사진 편집 세션 샘플
진행한 작업
Android 아키텍처 구성요소는 개발자가 앱의 코드를
간결하고 안정적이며 새로운 엔지니어가 팀에 합류할 때 읽기 쉽게 만드는 데
필요한 도구를 제공합니다.
뷰티플러스 개발자들이 사용하기 시작한 구성요소 중에는
ViewModel도 있었습니다. 이 구성요소는 활동 및 프래그먼트 업데이트의
논리 처리 과정을 간편하게 만들어 줍니다. ViewModel은 다른 앱 구성요소의
수명 주기를 고려하여 UI 관련 데이터를 저장하고 관리하도록
설계되었습니다.
뷰티플러스에서는 LiveData 구성요소도 활용했는데, 이는 수명 주기를 고려한 관찰 가능한 데이터 홀더 클래스로, UI가 데이터 상태와 일치하는지 확인하는 데 유용합니다. Android 아키텍처
구성요소는 아무런 문제도 일으키지 않았으며 사용하기도 간편했습니다. 또한
좋은 점 역시 빠르게 드러났습니다.
결과
Android 아키텍처 구성요소 덕분에 뷰티플러스 앱의 코드가 곧바로 5% 더
가벼워졌으며 가독성도 15% 더 높아졌습니다. 아키텍처 또한 더욱 통합되어
개발자들이 시간과 노력을 아낄 수 있었고 새로운 개발자들이 더
신속하게 작업에 투입될 수 있었습니다. 또한 메모리 누수가 적고, 데이터 새로고침이
간편해졌으며, 개발자들도 더 이상 비동기 UI 업데이트를 걱정하지
않아도 되었습니다.
선임 개발 관리자인 청송음은 "뷰티플러스에 ViewModel과 LiveData를 사용하자 코드가 간결해지고 가독성이 높아졌으며 코드 아키텍처도 통합되었습니다."라고 말합니다. "앱의 수명 주기 운영이 안전하게 관리되었고 안정성도 향상되었습니다."
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2018-05-05(UTC)
[null,null,["최종 업데이트: 2018-05-05(UTC)"],[],[],null,["# BeautyPlus app increases readability by 15% with Android Architecture Components\n\nIntroduced in 2013,\n[BeautyPlus](https://play.google.com/store/apps/details?id=com.commsource.beautyplus)\nis one of the world's most popular photo-editing apps, used by makeup artists,\nphotographers, and ordinary mobile phone snappers. About 50 million people use\nthe app every month to edit and add filters to their selfies, pictures, and\nvideos. Developed by China's Xiamen Meitu Technology Co., Ltd., the app (which\nis particularly popular with the selfie set) is used for everything from\ncorrecting skin tone and brightening smiles to slimming features and airbrushing\naway blemishes, all with a few simple drags and clicks.\n\nGiven the company makes frequent updates to the app, it requires a large number\nof developers. But, over time, the underlying architecture grew to lack\nuniformity and clarity. The fast-moving team needed a way to keep their\ncollaborating developers in the loop while simplifying lifecycle management and\nresolving issues related to refreshing the asynchronous UI. \n**Figure 1:** A sample photo-editing session in BeautyPlus\n\nWhat they did\n-------------\n\n[Android Architecture Components](/topic/libraries/architecture) provided the\ntools that the developers needed to make the app's code concise, stable, and\neasier for new engineers to read as they onboard.\n\nAmong the components the BeautyPlus developers began using is\n[`ViewModel`](/topic/libraries/architecture/viewmodel), which enables easier\nlogic processing with activity and fragment updates. `ViewModel` is designed to\nstore and manage UI-related data in a lifecycle-conscious way that respects the\nlifecycle of other app components.\n\nThey also leveraged the [`LiveData`](/topic/libraries/architecture/livedata)\ncomponent, an observable data-holder class that's also lifecycle-aware to help\nensure that the UI matches the data state. The team found these Android\nArchitecture Components easy to use without encountering any problems---and the\nbenefits were quickly noticeable.\n\nResults\n-------\n\nThanks to Android Architecture Components, the BeautyPlus app immediately had 5%\nleaner code and was 15% more readable. The architecture was also more unified,\nsaving developers time and effort, and making it easier for new developers to\nget up to speed quickly. In addition, there were fewer memory leaks, refreshing\ndata became easier, and developers no longer had to worry about updating the\nasynchronous UI.\n\u003e \"When we used ViewModel and LiveData for BeautyPlus, the code became more\n\u003e concise and readable, and the architecture of the code was unified,\" says\n\u003e Zheng Songyin, senior development manager. \"The operation of the lifecycle of\n\u003e the app was managed safely, and the stability improved, too.\"\n\nGet started\n-----------\n\nAndroid Architecture Components is open to all developers. [Get\nstarted with Android Architecture Components](/topic/libraries/architecture)."]]