항상 켜져 있는 태블릿 앱에 Shorebird 적용 후기
Shorebird, Flutter code push
회사에서 플러터 앱을 개발하고 있습니다.
현재는 플러터 앱의 업데이트가 필요하면 스토어에 apk를 제출하고 심사를 받아서 업데이트가 적용되게 됩니다. 그렇기 때문에 업데이트가 필요할 때마다 심사를 받아야 해서 며칠이 더 걸리는 페인포인트가 있습니다. 그러한 상황에서 업데이트를 조금 더 빠르게 도와줄 수 있는 것이 Shorebird입니다.
이번에 사내에서 두 번째 앱으로 태블릿 전용 앱을 만들었고 간단하게 실험적 차원에서 선구적으로 도입해 봤습니다.
1. 구조
Shorebird를 통해 업데이트가 반영되는 구조를 간략하게 그려봤습니다.
앱을 업데이트한 후 Shorebird 명령어를 터미널에 입력하면 유저는 클라우드를 통해서 업데이트된 내용을 확인하고 백그라운드에서 설치를 진행합니다.
설치가 완료되면 앱이 재시작되었을 때 업데이트된 내용이 적용되게 됩니다.
2. 앱 업데이트
patch와 release에 대해서 설명을 드리자면
- Patch
- dart code 변경(app code, generated code)
- native code를 포함하지 않는 dependency 변경
위와 같은 상황일 때 Patch 명령어를 사용하여 유저가 스토어를 거치지 않고 업데이트를 진행할 수 있습니다.
2. Release
- Asset files(images, fonts, etc) — 추후 patch에서 지원 예정
- Native code
- Flutter engine chagnes (플러터 버전 번경)
위와 같은 상황일 때 release 명령어를 사용하여 유저가 스토어를 통해 업데이트해야 하고 심사도 받아야 합니다.
3. IOS에서 Shorebird release, patch적용하기
이미 App Store에 앱이 배포가 된 상황에서 Shorebird를 준비하는 과정입니다.
shorebird release ios 명령어를 터미널에 입력합니다. 이제 빌드된 파일이 나오게 되는데요.
그 다음에 Xcode로 해당 파일의 경로에 접근해서 Open을 누릅니다.
Distribute App을 누른 다음 이 과정을 진행하면 release가 완료됩니다!
아이폰으로 해당 앱을 다운로드 받은후 patch를 통해서 초록색 버튼을 파란색 버튼으로 바꾸는 업데이트를 진행해 보겠습니다.
shorebird patch를 터미널에 입력하면 간단하게 완료됩니다!
*Asset 파일 변경과 같은 상황에서는 release를 진행해야 하는데 patch 명령어를 사용할 경우 아래 이미지와 같이 경고 문구가 나타나서 알 수 있습니다.
Shorebird에서 제공하는 Shorebird Console에서 얼마나 많은 유저가 patch와 release를 받았는지 확인할 수 있습니다.
앱을 재실행하니 녹색 버튼에서 파란색 버튼으로 변경된 모습입니다.
4. 업데이트 전략
patch 업데이트 전략이 총 3가지가 있는데요. 각각에 대해서 알아보겠습니다.
- 기본
- 백그라운드에서 다운로드 받고 앱을 실행할 때 업데이트 받은 앱을 실행한다.
위의 gif에서 보신 방법과 동일합니다. 앱을 재실행하면 업데이트가 적용됩니다.
2. 수작업(Manual)
- 내가 원하는 방식으로 다운받고 앱을 실행하게 한다
shorebird_code_push 패키지를 설치해서 개발자가 코드를 작성하여 특정 조건에서 업데이트된 patch를 다운로드를 받게할 수 있고 업데이트 알림창을 띄어서 강제 재실행하게 할 수도 있습니다. 마찬가지로 앱을 재실행해야 업데이트가 적용됩니다.
3. Notification
- Firebase Cloud Messaging (FCM)을 활용하여 notification 클릭으로 업데이트를 진행하게 할수 있습니다.
5. (거의) 항상 켜져있는 AOS 앱에 Shorebird 적용하기
거치형 태블릿 앱 특성상 원거리에 있고 관리를 개인이 하는 것이 아닌 회사에서 진행해야 합니다. 이러한 상황에서 앱에 업데이트가 되어야 할 경우 사원이 방문하여 업데이트해야 하는데요.
Shorebird를 적용하여 앱 업데이트를 자동으로 진행할 수 있었습니다. 다만, 편의상 Play Store의 계정을 하나의 공용 계정으로 진행했는데 영업팀이 계정에 이중 인증을 도입하여 다른 태블릿의 로그인이 풀리기도 하였고 구글 정책상 15일이 지나면 로그인이 자동으로 풀리게 되는 불편 사항이 발생하기도 했습니다.
태블릿 앱이 아침에는 항시 켜져 있다가 밤에는 꺼져있기 때문에 다음 날 아침에는 보통 앱이 자동으로 종료가 되어(AOS 메모리 관리) patch의 경우에는 이슈가 없는 것으로 보이나 release의 경우에는 Play Store 로그인이 풀려서 release 업데이트가 반영되지 않는 문제가 발생하는 단점이 있습니다. 추후 업체별로 개인 구글 계정을 도입하는 것도 고민해 봤으나 영업팀과 논의해 봤을 때 관리 차원에서 좋은 방향은 아닌 것 같습니다. 좀 더 고민해 봐야겠지만 이러한 상황에서 Shorebird보다는 Play Store를 통하지 않고 업데이트를 할 수 있는 방향을 알아봐야 할 것으로 보입니다.