뚝딱뚝딱 모바일

[Flutter] Code Push를 해보라고요? (1) - 지피지기 본문

실무 이야기

[Flutter] Code Push를 해보라고요? (1) - 지피지기

규석 2024. 11. 22. 16:24

오늘도 열심히 앱을 개발하고, QA를 거치고, 구글 플레이 스토어와 애플 앱스토어 심사를 거친 후 앱을 업데이트했습니다.어?? 앱 배포 후 미처 발견 못한 오류를 발견하였습니다.큰일 났습니다. 유저의 컴플레인과 이탈이 우려되는 상황 속에서 후다닥 수정하고 스토어 심사를 올려두었습니다.

이미지 출처 : https://v.daum.net/v/20240703180038080

개발자 : 언제쯤 심사 끝날까요 ㅠㅠ 빨리 업데이트해야 됩니다 ㅠㅠ
구글 : 내일 승인해 줄 건데? ㅋㅋ
애플 : 8시간 뒤에 Reject하고, 그거 수정해 오면 12시간 뒤에 승인해 줄게 ㅋㅋ

무조건 스토어 심사를 거치고 스토어의 승인이 떨어져야, 새로운 버전을 스토어에 올릴 수 있게 됩니다.

 

위 심사 과정은 짧게는 1시간, 길게는 3일이 걸리며, Reject이 발생하여 추가적인 시간이 들기도 합니다.

(추수감사절이 포함되면 더더욱 늦어지기도 합니다...)

 

핫픽스를 배포하는 입장에선, 정말 속이 터질 수밖에 없습니다.

물론 이러한 크리티컬 한 이슈가 안 생기게 하는 것이 우선이지만, 개발을 하다 보면 어쩔 수 없이 만나게 되는 세금 같은 존재입니다.

 

저희 회사에서는 인력이 적어 이런 핫픽스 배포를 자주 진행했고, 심사를 기다리는 시간 동안 유저들에게 불편을 주게 되는 점이 문제가 되어, 심사 과정을 스킵하고 바로 배포할 수 있는 Code Push를 도입하기로 하였습니다. 

 

솔직히 설렘 반 두려움 반이였습니다. 베타 출시 때부터 매우 큰 관심을 가졌던 라이브러리고, 이런 기능을 도입해보면 좋겠다 생각은 하였지만 막상 시작하려니 잘 만들 수 있을까란 생각이였습니다. 하지만 이왕 할 거 재밌게 해보자 하면 시작하게 되었습니다.

Code Push란?

이미지 출처 : https://blog.keyvalue.systems/microsoft-appcenter-direct-deployment-with-codepush/

일반적인 앱은 업데이트가 발생하면 스토어 앱에서 기존 앱의 업데이트를 받아야 합니다.

Code Push는 이와 달리, 개발자가 코드를 수정하고 이를 적용하는 명령어를 실행시키면, 유저는 앱을 껐다 켜기만 하면 업데이트가 적용되는 이름 그대로 코드를 앱으로 밀어 넣는 것입니다.

Shorebird

이러한 Code Push 기능을 Flutter에서도 사용할 수 있도록 하는 라이브러리가 있습니다.

바로 Shorebird라는 라이브러리입니다.

 

Shorebird

Use code push for Flutter to deliver instant updates to all devices. Patch issues in your iOS or Android Flutter apps instantly.

shorebird.dev

이 Shorebird는 전직 Flutter 개발진들이 모여 만든 라이브러리로, 2024년 4월에 iOS Code Push를 포함하여 1.0 버전이 릴리즈 되었습니다. 

 

https://docs.shorebird.dev/flutter-version/

Android는 Flutter 3.10.0 이후, iOS는 Flutter 3.24.0 이후 버전을 지원한다고 합니다.
(저는 1.0 버전을 기준으로 설치해서 Flutter 3.22.2 버전을 사용 중입니다. 그땐 저게 최신이어서...)

 

또한 Shorebird는 각 스토어의 기준을 어기지 않는 선에서 적용될 것이라고 합니다.

이게 정확히 뭔 뜻인지는 모르겠으나 편법이 아니다라는 것을 말하는 것 같기도 합니다.

실제로 iOS 심사에서 Reject 당하지 않았으니 말이죠.

 

그리고 Shorebird를 통해 수정할 수 있는 범위는 Dart 파일에 한정되어 있습니다. 그렇기에 asset을 변경했다거나, 다른 라이브러리를 추가하여 yaml 파일이 달라졌다면, 이는 적용이 되지 않습니다.

Shorebird 설치

 

Getting Started

The official documentation site for Shorebird.

docs.shorebird.dev

먼저, Shorebird를 설치해 주었습니다. 설치가 완료되어 zshrc 파일에 shorebird 명령어를 추가해 주었습니다.

export PATH="/Users/[Your Directory]/.shorebird/bin:$PATH"

파일을 저장해 준 후, source ~/.zshrc 명령어까지 입력해 주면 shorebird 명령어를 사용할 수 있게 됩니다.

 

터미널에서 프로젝트 루트 경로로 이동해 shorebird login:ci를 입력해 주고 나오는 링크를 통해 회사 계정을 로그인해 주었습니다.

그리고 여기서 나오는 토큰은 소중히 간직하도록 합시다.

 

이제 shorebird를 프로젝트에 주입할 차례입니다. shorebird init을 실행하여 줍니다. 

프로젝트에 shorebird.yaml이 추가된 것을 보실 수 있습니다. 또한, Shorebird 콘솔에 접속하면 프로젝트가 생성된 것을 보실 수 있습니다. 야호!

 

저희 앱은 기존에 Codemagic을 통해 CI/CD를 구축해 두었기에, Shorebird를 여기에 추가하여야 했습니다.

이제 Codemagic과 섞어서 배포 자동화만 만들어주면 되겠다!!라고 생각하고 잔뜩 신이 난 상태였습니다.

그러나 신이 난 상태에서는 늘 일을 그르치더라고요...

과거의 나를 저주하는 덜 과거의 나

다음 글에서 계속

 

[Flutter] Code Push를 해보라고요? (2) - 맨땅에 헤딩하는 법

[Flutter] Code Push를 해보라고요? (1) - 지피지기오늘도 열심히 앱을 개발하고, QA를 거치고, 구글 플레이 스토어와 애플 앱스토어 심사를 거친 후 앱을 업데이트했습니다.어?? 앱 배포 후 미처 발견

nkstar-ios.tistory.com