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 도움말에서 앱 또는 게임에 강력하면서도 간단한 이미지 캡처 코드를 도입하는 방법을 알아보세요.