CameraX를 통해 코드 행을 9,000개 이상 줄이고 등록 취소율을 5배 개선한 Monzo
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
Monzo는 디지털 및 모바일 전용 금융 서비스를 제공하는 은행 서비스 및 앱으로 모든 사람이 돈을 효과적으로 활용할 수 있도록 돕는 것을 사명으로 삼고 있습니다. Monzo 앱은 신규 고객이 가입할 때 여권, 운전면허증, 신분증과 같은 신원 확인용 서류 이미지를 캡처한 다음 이 서류가 신청자 본인의 것이 맞는지 확인할 수 있도록 셀카 동영상을 촬영합니다.
진행한 작업
Monzo 앱의 초기 버전은 camera2 API를 사용했습니다. 하지만 일부 기기에서 무작위적인 비정상 종료 및 이상 동작이 발생하면서 잠재고객 중 25%가 신원 확인 서류 캡처 및 셀카 동영상 촬영 단계 다음 절차를 진행하지 않았습니다.
Monzo는 이러한 문제를 해결하기 위해 간편한 카메라 앱 개발용 Jetpack 지원 라이브러리인 CameraX를 기반으로 이미지 및 동영상 캡처 요구사항을 구현했습니다. CameraController
를 사용해 takePicture()
메서드로 신원 확인용 서류 이미지 캡처 기능을 구현한 것입니다. 셀카 동영상에서는 startRecording()
및 stopRecording()
메서드를 사용했습니다. 가입 절차의 디자인을 변경하고자 했던 Monzo는 디자인 유연성을 확보할 수 있게 좀 더 직관적인 카메라 라이브러리를 원했습니다.
결과
CameraX 도입을 통해 코드가 단순해지면서 유지하기가 쉬워졌고, 개발 과정을 간소화하는 데도 도움을 주었습니다. 또한 CameraX로 전환한 후 비정상 종료도 크게 줄어들었으며 카메라 플래시가 무작위로 켜지는 현상도 더 이상 발생하지 않았습니다. 이러한 요인들 덕분에 가입 과정에서의 감소율이 줄어들었고 사용자 의견도 개선되었습니다.
CameraX 구현으로 인한 코드 간소화를 통해 거의 9,000개에 달하는 코드 행이 줄어들었는데, 이중 6,000개는 UI 코드였습니다. CameraX를 사용하면서 코드 유지가 쉬워지고 개발 과정도 단순해졌으며 단위 테스트에서의 코드 적용 범위도 한층 개선되었습니다.
무엇보다도 가입 과정이 크게 개선되었다는 점이 중요합니다. CameraX가 도입되고 과정 디자인 변경이 더욱 쉬워지면서 신원 확인용 이미지 캡처 및 셀카 동영상 녹화 단계에서의 이탈률이 25%에서 5% 정도까지 줄어들었습니다.
"CameraX 덕분에 안전성을 확보할 수 있었습니다. 개발자들도 어렵지 않게 CameraX를 통합할 수 있었고요. 간편하게 사진과 동영상을 촬영하고자 했던 Monzo에 있어서 정말 안성맞춤인 라이브러리였습니다. CameraX로 인해 사진과 동영상을 손쉽게 촬영할 수 있게 되었을 뿐 아니라 코드도 단순해졌고 사용자 환경도 개선되었습니다." 아나스타시오스 모르포포울로스, Monzo Android 개발자
시작하기
CameraX 도움말에서 앱 또는 게임에 강력하면서도 간단한 이미지 캡처 코드를 도입하는 방법을 알아보세요.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[null,null,["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Monzo reduced over 9,000 lines of code and improved registration dropout by 5x with CameraX\n\nMonzo is a banking service and app offering digital and mobile-only financial\nservices. Their mission is to make money work for everyone. To sign up new\ncustomers, the Monzo app captures images of an identification document (such as\npassport, driving license, or ID card) and takes a selfie video to prove that\nthe identification documents are for the applicant.\n\nWhat they did\n-------------\n\nEarly versions of the\n[Monzo](https://play.google.com/store/apps/details?id=co.uk.getmondo)\napp used camera2 APIs. Random crashes and odd behaviors on some devices led to\n25% of potential customers not proceeding beyond the identification capture and\nselfie video steps.\n\nTo address these challenges, Monzo turned to CameraX, a Jetpack support library\ndesigned to make camera app development easier, to implement their image and\nvideo capture requirements. Using\n[`CameraController`](/reference/androidx/camera/view/CameraController), Monzo implemented\nthe identification document image capture using the\n[`takePicture()`](/reference/androidx/camera/view/CameraController#takePicture(androidx.camera.core.ImageCapture.OutputFileOptions,%20java.util.concurrent.Executor,%20androidx.camera.core.ImageCapture.OnImageSavedCallback))\nmethod. For the selfie video, they used the\n[`startRecording()`](/reference/androidx/camera/view/CameraController#startRecording(androidx.camera.view.video.OutputFileOptions,%20java.util.concurrent.Executor,%20androidx.camera.view.video.OnVideoSavedCallback))\nand\n[`stopRecording()`](/reference/androidx/camera/view/CameraController#stopRecording())\nmethods. They wanted to make design changes to the sign-up flow and wanted a\nmore straightforward camera library that would give them more design\nflexibility.\n\nResults\n-------\n\nIntroducing CameraX enabled Monzo to simplify their code, making it more\nmaintainable, and has helped simplify development. The move to CameraX has\ngreatly reduced crashes and they are no longer seeing random activations of the\ncamera flash. All of this has contributed to a reduction in the drop-off rate in\nthe sign-up flow and has improved user feedback.\n\nThe simplification in code resulting from implementing CameraX reduced almost\n9,000 lines of code, including 6,000 lines of UI code. In addition to making\nthe code easier to maintain and simplifying development, CameraX also led to\nbetter code coverage in unit tests.\n\nImportantly, the impact on the sign-up flow was significant. With the\nintroduction of CameraX and the simplified flow design changes, the dropout rate\nfrom identification image capture and selfie video recording dropped from 25% to\naround 5%.\n\n\"For us, CameraX was all about stability and having an easy integration\nexperience for our developers. It was the perfect library for us---we just\nwanted a simple way to take pictures and videos. CameraX has given us that, plus\nour code is simpler and the user experience better.\" *Anastasios\nMorfopoulos---Android developer, Monzo*\n\nGet started\n-----------\n\nCheck out the [CameraX documentation](/training/camerax) to learn how to\nintroduce more robust and simplified image capture code to your app or game."]]