Zillow는 Android 아키텍처 구성요소를 사용해 새롭게 명확한 코드를 작성합니다
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Zillow는 최고의 온라인 부동산 마켓플레이스이며, 고객에게
주택 구매, 임대, 판매 시 필요한 목록, 데이터, 계산기 기능을
제공합니다. 또한 Zillow는 사용자와 현지 대리인, 주택 담보
대출 제공업체, 주택 설계자를 연결해 줍니다.
2006년에 창립되었으며 시애틀에 본사를 두고 있는 Zillow는 1억 1천만
개가 넘는 미국 주택의 데이터베이스를 관리하고 있습니다. 또한 20개가 넘는
모바일 부동산 앱을 운영하고 있기도 합니다. 2017년 7월 Android 모바일
앱 코드에 관한 대대적인 수정 작업을 시작한 Zillow는 새로운 팀원이
이해하기 쉽도록 코드를 가독성이 높고 알기 쉽게 변경해 개발자들을
돕고자 했습니다.
시행한 작업
Zillow에서는 Android 아키텍처
구성요소를 사용해 코드를 개선했습니다.
Zillow의 소프트웨어 엔지니어인 아유쉬 라지의 설명입니다. "다양한 아키텍처를 살펴보고 있었습니다. 아키텍처 구성요소를 사용함으로써 수명 주기를 인식할 수 있게 되어 코드 관리가 훨씬 쉬워졌습니다."
ViewModel을 사용하면 화면 회전과 같이
구성을 변경할 때도 데이터를 유지할 수 있으며
LiveData는 관찰 가능한 데이터 홀더
클래스입니다. Zillow에서는 이 두 가지 클래스를 모두 사용하여
MVVM(Model-View-ViewModel)을 구현할 강력한 템플릿을 마련했습니다. 라지는 "코드 테스트가 훨씬 쉬워졌습니다."라고 말합니다. Room
지속성 라이브러리 또한 로컬 캐시 레이어를 쉽게 개발하는 데
도움을 주었습니다. 그 결과 Zillow 앱이 네트워크에서 데이터를
불러와야 하는 빈도수가 줄어들어 '성능 및 사용자 환경이 개선'되었습니다.
결과
라지는 데이터 업데이트용 코드 중 많은 부분을 활동에서
ViewModels로 옮기는 작업이
전체 코드베이스의 가독성을 개선하는 데 "확실히 도움"을 주었다고 말합니다.
개발자들이 전체 앱을 아직 ViewModel로 변환하지는 않았지만 ViewModel을 사용하는 구성요소에는 수명 주기 관련 버그가 발생하지 않았습니다. 데이터 업데이트를
활동 및 프래그먼트에 전달하는 과정도 효과적으로 작동하고 있습니다.
Zillow의 선임 소프트웨어 개발 엔지니어인 수미란 프라드한은 "Android 아키텍처 구성요소를 사용하면 개발자의 생산성이 확실히 향상됩니다."라고 말합니다.
아키텍처 구성요소는 코드를 처음 작성할 때 지침을 제공하지만
기존의 코드베이스에도 유용하게 사용할 수 있습니다. 프라드한의 말입니다. "새로운 개발자가
ViewModel에 있는 로직을 이해하고 나면
모두 ViewModel을 좋아합니다."
시작하기
Android 아키텍처 구성요소는 Android Jetpack의
일부이며 모든 개발자에게 공개되어 있습니다. Android 아키텍처 구성요소를
사용해 보세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2018-05-03(UTC)
[null,null,["최종 업데이트: 2018-05-03(UTC)"],[],[],null,["# Zillow builds clear new code with Android Architecture Components\n\nZillow is a top online real estate marketplace that provides consumers with\nthe listings, data, and calculators they need to help them buy, rent, or sell\na home. The site also connects users with local agents, mortgage providers,\nand home designers.\n\nLaunched in 2006 and headquartered in Seattle, Zillow maintains a database\nof more than 110 million U.S. homes. They also operate a popular suite of\nover two dozen mobile real estate apps. When they began a major overhaul of\ntheir code in their Android mobile app in July 2017, Zillow wanted to simplify\ntheir developers' lives by making the code more readable and easier for\nnew team members to understand.\n\nWhat they did\n-------------\n\nZillow revamped their code using\n[Android Architecture Components](/topic/libraries/architecture).\n\"We were investigating different kinds of architecture,\" says Aayush Raj,\nZillow software engineer. \"Architecture Components had the added advantage of\nlifecycle awareness, which made code much easier to manage.\"\n\n[ViewModel](/topic/libraries/architecture/viewmodel) allows data to\nsurvive configuration changes (such as screen rotations), while\n[LiveData](/topic/libraries/architecture/livedata) is an observable\ndata-holder class. Both were used by Zillow, and together, they provided a\npowerful template for implementing Model-View-ViewModel (MVVM). \"It helped make\nour code more testable,\" Raj says. The\n[Room](/topic/libraries/architecture/room) persistency library also\nmade it easy to build a local cache layer, so the app didn't have to pull data\nfrom the network as often, \"improving performance and the user experience.\"\n\nResults\n-------\n\nMoving lots of code for data updates from activities to\n[ViewModels](/topic/libraries/architecture/viewmodel) has\n\"definitely helped\" make the whole code base more readable, Raj adds.\nThey haven't yet converted the whole app to\n[ViewModel](/topic/libraries/architecture/viewmodel),\nbut components that are using\n[ViewModel](/topic/libraries/architecture/viewmodel)\nhaven't had any lifecycle-related bugs. Communicating\ndata updates to activities and fragments also works very well.\n\n\"Developers are absolutely more productive using Android Architecture\nComponents,\" says Sumiran Pradhan, Zillow senior software development engineer.\nArchitecture Components gives them guidance when starting from scratch,\nbut is also useful in the existing code base. \"Once new developers\nunderstand where the logic lives in the\n[ViewModel](/topic/libraries/architecture/viewmodel), they love it,\"\nPradhan adds.\n\nGet started\n-----------\n\nAndroid Architecture Components is open to all developers as part of\n[Android Jetpack](/jetpack). Get\nstarted with [Android Architecture Components](/jetpack/arch)."]]