알고케어 코드푸시 롤백 대응안

설명

배포 프로세스 현황

  • 알고케어에선 코드푸시로 mandatory 배포만 진행하며,
  • 백엔드와 1:1 버전으로 관리중이다.
  • 따라서 백엔드 기능 배포와 같이 배포되는 경우에는 번들에 문제가 있어서 설치가 실패하여 롤백한 경우에도 앱은 정상적으로 동작할 수 없다.

필요사항

  • 실패한 업데이트에 대해 재시도 할 수 없는 상황 자체가 존재해선 안된다.
  • 롤백과 별개로, 코드푸시로 잘못된 코드를 업로드해서 앱이 크래시 나는 경우에도 선제적으로 알 수 있는 방안도 필요하다.

대안

코드푸시 롤백 대응

  • 코드푸시 자바크스립트 코드 상으로만 존재하는 ignoreFailedUpdates 옵션을 false로 설정하여 재시도 횟수에 제약이 없도록 한다.
    • ⚠️
      로직이 정상적으로 동작하는지 검증 필요
      ⚠️
      만약 마이크로소프트 측에서 사용자가 해당 옵션을 설정할 수 없도록 코드를 수정하는 경우에는, 코드푸시 라이브러리를 fork 떠서 따로 관리한다.
  • 롤백 감지 방안
    • checkForUpdates
      를 호출하고 remotePackage.isFailedUpdate 값을 통해 “업데이트를 시도했으나 롤백된 업데이트인지 여부”를 알 수 있다.
  • 롤백 발생 시 대응안
    • checkForUpdates는 롤백횟수 초과와 상관없이 최신 버전 유무를 반환한다.
    • 롤백된 여부를 신경쓰지 않고 checkForUpdates 반환 결과, 업데이트할 패키지가 있다면 sync를 호출하여 재설치를 시도한다.
  • 롤백 발생 모니터링
    • checkForUpdates()로 반환되는 remotePackage.isFailedUpdate 값을 보고 롤백된 업데이트인지 여부를 알 수 있다. 롤백 발생 시 별도의 모니터링을 위한 로깅 작업이 추가되면 좋다.
    • 업데이트 설치 과정에 문제를 일으키는 번들인지 여부를 판단하기 위함이다.
  • 코드푸시 최신 업데이트를 마친 후에만 앱 정상 동작 보장
    • 이는 반대로 최신 업데이트 적용 실패 시에는 앱 이용 불가하도록 만들어서 달성한다.
    • 대신 재시도 로직이 있어야 한다.
    • b2bGroups 쿼리 등도 수정될 수 있으며 백엔드 수정 시에 이슈가 발생될 수 있으므로, 반드시 코드푸시 업데이트가 완료된 이후에 RootStack 스크린들이 실행되도록 보장한다.
  • API 실패 예외처리
    • 코드푸시 API 블락 에러
      • 일정 시간 안에 너무 많은 코드푸시 업데이트 시도가 있을 시, 일정 시간동안 API가 블락된다. 에러 코드를 잘 식별해서 재시도 가능한 시간에 대한 적절한 처리가 필요하다.
      • 블락된 잔여 시간을 코드푸시 화면상에 노출시킨다.
      • 블락된 시간 이후에 자동으로 재시도 하는 로직을 구현한다.
    • 기타 checkForUpdates(), sync() 메소드 실패 시
      • 마찬가지로 재시도 로직을 통해 주기적으로 다시 실행될 수 있도록 보장한다.

앱 크래시 별도 대응

  • 크래시 모니터링에 알람 기능을 엮어서, 코드푸시 번들 설치 이후 앱이 재시작 되면서 앱이 크래시 나는 경우에는 알고케어에 선제적으로 알림이 갈 수 있도록 모니터링 작업이 필요하다.