개발자

앱 배포시 백엔드 서버와의 간극 해결방법

6월 15일조회 80

안녕하세요! 장고로 백엔드 서버를 개발하고 RN로 프론트엔드 앱을 개발하고 있습니다..! 프로젝트 초반이라 요구 사항이 자주 변경되어서 테이블을 재설계하거나 api 응답 스키마(serializer)를 수정하는 상황이 빈번하게 발생하고 있습니다. 백엔드 서버는 배포시에 바로 반영이 되지만, 앱 배포의 경우 앱스토어의 심사 + 자동 업데이트로 인해 2~3일 정도의 간극이 발생합니다. 이로 인해 백엔드 응답 스키마가 앱의 old 버전과 일치하지 않아 문제가 발생합니다 ㅠㅠ 현업에서는 이런 문제를 사전에 어떻게 방지하는지, 배포 파이프라인을 어떻게 구성하는지 궁금합니다..! 제가 조사한 바로는 base_url에 버전을 표시하거나 (../api/v1/…), http header에 버전을 명시해서 라우팅을 해주는 것으로 알고 있는데요. 요구사항에 대한 변화가 잦다 보니 더 좋은 방법이 있을까 싶어거 여쭤봅니다..! 읽어주셔서 감사합니다😆

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

문정동개발자님의 프로필 사진

현실적으로 쉬운 방법은 호환이 안될정도로 스키마 차이가 많이날 정도의 업데이트라면 강제 업데이트를 진행하는게 가장 좋아보입니다. api response에 current version이랑 force update 프래그 넣어서 app current version이랑 다르면 강제업데이트 모달 띄워서 업데이트 시켜주면 됩니다. UX가 중요하다면 말씀해주신대로 api version을 올려서 진행하시거나 front쪽에서 핸들링을 해주고 백로그로 남겨서 추후에 대부분의 사용자가 앱을 업데이트 했다면 제거해주셔도 됩니다.

성대규님의 프로필 사진

성대규

작성자

카이스트 전산학부6월 16일

답변 감사합니다..!🙏 혹시 앱 심사중에 생기는 간극에 대한 해결 방법은 있을까요..? 앱이 심사 완료되면 백엔드를 배포하는게 가장 쉬운 방법 같은데, 저희가 크로스플랫폼이라 앱스토어와 플레이스토어 심사 기간이 다를 수 있어서요!

문정동개발자님의 프로필 사진

문정동개발자

프론트엔드6월 18일

앱스토어 / 구글플레이 모두 심사 끝나면 자동으로 배포하는게 아닌 개발자가 출시 버튼을 클릭해서 배포하는 기능을 수동배포 기능을 제공합니다.

성대규님의 프로필 사진

성대규

작성자

카이스트 전산학부6월 18일

그렇군요 force update와 수동 배포면 해결될 것 같습니다 감사합니다..!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

6월 15일

안녕하세요! 문의주신 내용에 대해 답변드리겠습니다. 초기 개발 단계에서는 요구사항이나 스키마 변경이 빈번하게 일어나는 것이 자연스러운 상황입니다. 1. API Versioning: 말씀하신대로 버전 관리를 통해 이 문제를 해결할 수 있습니다. URL 또는 헤더에 버전을 포함시킬 수 있으며, 스키마가 바뀌더라도 기존 앱 버전에서는 그대로 작동하도록 하기 위한 방법입니다. 2. Backward Compatibility: 가능한 한 스키마 변경 시 이전 버전과 호환되도록 유지하는 것 입니다. 예를 들어 새 필드를 추가하는 경우, 해당 필드가 없어도 앱이 문제 없이 작동하도록 처리합니다. 3. Feature Flagging: '피처 플래그' 또는 '피처 토글' 등으로 알려져 있으며, 이는 새로운 기능을 비활성화 하거나 활성화 할 수 있는 기능을 의미합니다. 백엔드에서 새로운 API 구현시 추출 가능한 특징인 feature flagging은 해당 API가 완료되지 않으면 사용하지 않게 할 수 있습니다. 4. Graceful Degradation: 최신 서버 버전과 호환이 되지 않는 앱 버전에 대해 가장 최근에 호환되는 상태로 제한하는 방법입니다. 5. Blue/Green Deployment: 이는 두 개의 동일한 프로덕션 환경을 유지하면서 한 환경에서 모든 트래픽을 처리하게 하고, 다른 환경에서는 새로운 버전을 배포 및 테스트합니다. 문제가 없다면 트래픽을 새 환경으로 전환합니다. 6. Canary Release: Canary release(카나리아 릴리즈)란 새 버전의 코드를 일부 사용자에게만 제공함으로써 버그 및 이슈를 식별하고 문제를 해결하는 전략적인 방법입니다. 어느 방법이 가장 좋다고 단정짓기 어려운데, 프로젝트의 요구사항과 팀원들의 스킬셋에 따라 선택하는 것이 중요하겠습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!