
모바일
Google Firebase
Google Cloud Platform의 모바일, 웹, 서버 개발에 사용되는 유연하고 확장 가능한 데이터베이스
사용 기업

클라썸

드라마앤컴퍼니

딜리셔스

에이블리

큐피스트

숨고

바로고

디셈버앤컴퍼니

당근

마이리얼트립

쏘카

매스프레소

비브로스

마이셀럽스

다노

힐링페이퍼

버드뷰

채널코퍼레이션
더 보기
당근
1주 1개 실험하는 프로덕트 팀이 되는 여정
안녕하세요 당근마켓 중고거래팀에서 데이터 분석가로 일하고 있는 매튜에요! 당근마켓에서 데이터 분석가는 프로덕트를 만드는 팀에서 실험을 설계하고 실험 결과를 분석하며 팀이 데이터를 기반으로 더 나은 의사결정을 하도록 돕는 일을 해요. 제가 처음 중고거래팀에서 데이터 분석가로 일할 때는 팀이 아직 실험을 잘 활용하지 못했어요. 이제 중고거래팀은 1주에 1개의 실험을 돌리고 수많은 의사결정에 실험을 활용하고 있어요. 이런 변화의 과정을 정리해서 공유하려고 해요. 당근마켓에서 실험이라고 하면 A/B 테스트를 이야기해요. A/B 테스트는 IT회사에서 일하는 분들이라면 모두 한 번씩은 들어보셨을 거예요. 최근에 중고거래팀에서 했던 실험을 통해 A/B 테스트가 무엇인지 설명할게요. 당근마켓에서는 거래를 하고 나면 후기를 남길 수 있어요. 이때, 상대방이 후기를 작성하면 푸시 알림을 통해 상대방의 후기를 볼 수 있어요. 더 따듯한 당근마켓이 되기 위해 후기를 받은 사용자도 후기를 남기도록 유도를 하면 좋다고 생각했어요. 따라서 후기를 받은 사용자를 (1) 랜덤하게 반으로 나눠서 (2) 대조군에게는 기존 화면을 보여주고 실험군에게는 새로운 화면을 보여줬어요. 일정 시간이 지나서 대조군과 실험군의 데이터를 비교하면 실제로 실험군의 사용자들이 후기를 더 작성했는지 알 수 있어요. 이런 실험 방법을 A/B 테스트라고 해요. 실험을 시작하게 된 시작점 실험을 1주에 1개씩 돌리게 된 여정을 생각하다보니 자연스레 처음에 어떻게 실험을 시작했는지 돌아보게 되었어요. 당근마켓은 상당히 초반부터 A/B 테스트를 활용하려고 노력해왔어요. 3년 전, 한 팀원이 검색 결과 화면에서 거래완료 게시글까지 디폴트로 모두 보여주면 어떨까?라는 말을 했어요. 사용자 분들이 게시글을 쓸 때 판매완료된 게시글을 검색을 통해 많이 둘러보지 않을까?라고 생각했던거죠. 검색 결과에서 거래완료 게시글까지 모두 보여주면 글 작성 관련 지표가 좋아질 것이라고 가설을 세워보고 파이어베이스 A/B 테스트 기능을 사용해서 실험을 했어요. 가설대로 실제 글 작성 관련 지표가 좋아졌어요. 실험을 통해 실제로 가설이 맞다는 걸 확인하니 실험이 재밌고 유용하다고 느꼈어요. 실험 결과를 토대로 지금까지도 검색 결과에서 디폴트로 거래가 완료된 게시글도 함께 보여주고 있어요. 사실, 이전까지는 주로 다음 도표에서 실험을 하지 않을 때의 흐름으로 프로덕트를 만들어왔어요. 실험을 하지 않을 때는 주로 일을 하다가 혹은 회의를 하다가 떠오르는 아이디어를 자유롭게 주변 팀원에게 말했어요. 그리고 괜찮다는 피드백이 많거나 아이디어를 낸 사람이 의지가 있다면 개발을 해서 배포를 했어요. 처음에 기능이 많지 않을 때 새로운 기능을 개발해서 배포하면 사용자 분들이 그 기능을 사용하는 것을 보면서 아이디어를 평가하곤 했어요. 하지만 기능을 더 좋게 개선하는 단계에 들어가니 이런 방식으로 판단하는 것이 어려워졌어요. 하지만 실험을 하니까 더 명확하게 가설을 확인하게 되고 의사결정도 단순 아이디어가 아닌 사실을 기반으로 할 수 있게
googlefirebase
드라마앤컴퍼니
Firebase Remote Config로 배포없이 운영하기
라이브로 운영하는 서비스는 항상 운영이슈가 존재합니다. 운영이슈는 사용자의 요구를 최대한 실시간으로 대응하여 불편함을 줄이고 만족도를 높이는 것을 의미합니다. 예를 들어 CS, 공지사항 부터 장애 모니터링 및 대응, 피드백 수집 후 개선까지도 모두 운영이슈로 볼 수 있습니다. 이 때 운영팀에서 가장 중요하게 생각하는 것은 실시간 입니다. 운영팀은 공지사항, 장애 등 이슈가 있을 때 원하는 시간에 바로바로 대응할 수 있는 시스템을 원합니다. 하지만 앱은 개발, 리뷰, 테스트, 스토어 업로드 등 여러 과정을 거쳐야 하므로 변경사항을 바로 반영하기가 힘듭니다. 이는 운영팀이 원하는 실시간과 거리가 멉니다. 운영팀이 원하는 것은 다음과 같습니다. 개발자를 통하지 않고 스스로 변경 가능하다. 코드를 손대지 않고 안전하게 변경한다. 배포하지 않고 변경사항을 적용한다. 원하는 사용자에게만 변경사항을 적용한다. 어떻게 운영팀이 원하는 이것을 이룰 수 있을까요? 리모트 컨피그는 사용자가 앱 업데이트를 통하지 않고 동작을 변경할 수 있는 실시간 클라우드 서비스 입니다. 사용 시나리오는 다음과 같습니다. Firebase에 앱의 동작을 제어하는 값을 정의한다. 앱에서 Firebase에 정의된 값을 가져와 적용한다. 배포 없이 업데이트 된 새로운 동작을 확인하다. 2,3번의 작업을 미리 앱에 배포해 놓으면, 운영팀에서 1번의 작업을 통해 배포 없이 자동으로 앱 업데이트가 가능합니다. 그러면 이제 사용법을 익혀봅시다. 1. Firebase, 리모트 컨피그 설치하기 Gradle에 의존성을 정의하고, Firebase Console에서 google-services.json을 받아와 app module에 추가합니다. dependencies { classpath 'com.google.gms:google-services:3.0.0' } dependencies { compile 'com.google.firebase:firebase-core:10.2.0' compile 'com.google.firebase:firebase-config:10.2.0' } // Add this at the bottom of build.gradle in app module apply plugin: 'com.google.gms.google-services' 2. 구글 플레이 서비스 설치 체크 리모트 컨피그는 구글 플레이 서비스가 기기에 설치되어 있어야 사용 가능합니다. 앱을 시작할 때 구글 플레이 서비스 설치 여부를 확인하고, 안되어있다면 사용자에게 설치를 유도할 수 있도록 에러 팝업을 띄어줍니다. private void checkGooglePlayServices() { GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance(); int status = googleApiAvailability.isGooglePlayServicesAvailable(context); if (status != Co
googlefirebase
연관 기술 스택

Realm