한달 전 앱을 론칭해 운영중에있다.
초기 서비스인 만큼 많은
굉장히 짧은 주기로 버전 업데이트를 진행하고있다.
문제는
1. 사용자들이 배포된 업데이트를 진행할것인가?
2. 코드 푸시는 만능일까?
3. 어떤게 최선의 방법이지?
문제 1. 사용자들이 배포된 업데이트를 진행할것인가?
사용자들이 와이파이를 환경에서
자동업데이트를 하는게 아니라면
직접 업데이트를 진행하는 경우는 매우 드물었다.
따라서, 사용자들 간에 다른 버전을 쓰는 경우가
많아지기 시작했다.
문제 2. 코드 푸시는 만능일까?
우리는 사용자가 업데이트를
잘 하지 않는다는것을 확인하고
코드 푸시를 통해 업데이트를 진행하기 시작했다.
아주 만족스럽게도
업데이트 내용을 대다수의 사용자에게
온전히 제공할 수 있었다.
문제는 다른곳에서 발생했다.
코드 푸시는 앱 버전 단위로 진행되게 되는데,
한 버전에서 많은(3회 이상) 푸시를 하고나니
업데이트를 내려 받는 속도가 굉장히 느려졌다.
또한, ms appcenter의 서버가
해외에 있다보니 업데이트 체크 및 진행 속도가
들쭉날쭉 해졌다.
결국 업데이트에 3-5분이상
소요되어버리는 지경에 이르렀다.
해결책. 버전관리 전략 수립 및 배포전략 수립
간혹 보면 상용 서비스에서
앱 업데이트를 강제하는 경우가있다.
거기에는 다 이유가 있었다.
더 질 좋은 서비스를 잘 만들어 놨는데
사용자가 쓰지를 않는다면...
혹은, 문제점을 개선해서 배포를 했는데
사용자가 구버전에서 계속 에러리포트를 한다면...
우리 개발자들은 현타가 올것이다.
따라서, 우리는 버전관리와 배포전략을 통해
위와 같은 문제들을 해결하기로 했다.
앱 버전은 a.b.c로 구성된다.
a: 주요 업데이트 (스토어에서 배포)
b: 서브기능 추가 (스토어에서 배포)
c: 핫픽스, 워딩 수정 (code push후 버전 올려서 스토어에서 배포)
가장 작은 단위의 수정인 c부터 보면
간혹 미흡한 예외처리나 오타를 위해
수정 배포해야되는 경우가 있다.
이때는 코드푸시를 통해 버전의 문제를 즉시 처리하고,
앱 버전 c 를 하나 올려 빌드해 스토어에 배포한다.
이렇게 하면 기존 버전 사용자도 문제 수정이 진행되고
새 버전 다운로드 사용자도 문제 수정 버전을 설치하게된다.
앱의 큰 축의 변화는 아니지만
list만 되던 부분이 추가/수정도 가능하게 된다는지 등의 기능 업데이트가 발생하면
b를 하나 올려 빌드해 스토어에 배포한다.
업데이트 심사의 경우 앱스토어/플레이스토어 모두
1 영업일 (길게는 2영업일) 이내면 처리되기 때문에
앱 버전 관리를 배포를 통해 하더라도
크게 답답할 일이 없다.
다만, 위해서 언급한것처럼 사용자들은
앱 업데이트를 잘 진행하지 않는다.
그렇기에 우리는 강제 업데이트 (필수 업데이트)
기능을 추가해둘 필요가 있다.
a단위로 강제 업데이트를 할지
b단위로 강제 업데이트를 할지는
회사 내규 운영방책을 정해서 진행하면 될듯하다.
우리는 프리미엄 서비스 + 소수의 사용자를
타겟으로 하고있어, b단위로 강제업데이트를 진행한다.
강제 업데이트를 하는 방식은
1) 서버에 현재 배포된 각 플랫폼의 최신 버전을 응답하는 api추가
2) 앱이 켜질때 앱 버전과 서버에서 응답한 버전을 비교
3) 앱 버전이 서버에서 응답 받은 최신버전 보다 구 버전이라면 강제 업데이트 진행
4) 강제 업데이트는 Alert + Redirect(store로 linking) 을 통해 진행했다.
5) 주의 사항은 지속적으로 서버 버전을 잘 관리해야된다는 것
+ 새 버전으로 서버 버전을 올릴때 새 버전이 스토어에 반영됐는지 꼭 확인할것
(앱 심사가 통과되더라도 새 버전이 스토어에 반영되기까지 어느정도 시간이 소요되기 때문)