실록⑥: 멈춰 있던 Android 앱을 AI로 되살리다

AI 도입 사례

“앱은 돌아갑니다. 다만 알림만 몇 년째 오지 않습니다.” 상담은 그렇게 시작됐습니다. 회원제 B2C 서비스용 Android 앱이었습니다. 스토어에 공개돼 있고 실행도 되는데, 공지 푸시 알림만 어느새 한 통도 나가지 않고 있었습니다. 이번에는 만든 사람도 자료도 없는 “손댈 수 없는 모바일 앱”을, 회원 자산과 서명 키를 하나도 빠짐없이 그대로 이어받은 채 AI로 다시 만든 기록입니다.

가장 무서운 레거시는 죽는 앱이 아닙니다.
죽지 않은 채, 중요한 기능만 조용히 멈춰 있는 앱입니다.

“돌아가고는 있다”의 아래에서, 알림은 몇 년 전에 멈춰 있었습니다.

이 앱의 정체는 네이티브 껍데기 안에서 기존 웹 서비스를 표시하는 WebView 래퍼+푸시 알림이라는 구성이었습니다. 화면은 기존 웹 자산을 재사용하므로 살아 있었습니다. 문제는 알림이었습니다. 발송 구조가 구세대 배포 기반에 의존하고 있었고, 그 기반이 서비스 종료된 시점에 경로 자체가 사라져 있었습니다. 데이터베이스에는 새 방식의 토큰을 저장할 열만 추가돼 있고 거기에는 아무것도 기록되지 않은 채 — 배선이 도중에 끊긴 상태로 방치돼 있었습니다.

약 14,000등록 단말(전체)
약 3,200Android 단말
2016년기존 서명 키 발급 연도
1회필요한 재배포

“손댈 수 없다”의 8할은 사실 “다시 만드는 것에 대한 두려움”이었습니다.

실제로 부딪힌 벽은 코드의 난이도보다 “이어받는 것에 대한 두려움”이었습니다. 특히 Android는 한 번 잘못하면 기존 사용자가 업데이트할 수 없는 다른 앱이 되어 버립니다.

알림 발송 기반이 세대째 사라져 있었다통신 경로구세대 배포 서비스가 종료돼 보내는 쪽 경로가 존재하지 않았습니다. 먼저 “현대의 경로”로 옮겨 싣는 것에서부터 시작해야 했습니다.
만든 사람도, 설계 자료도 없다애플리케이션남아 있는 것은 낡은 소스뿐이었습니다. AI 에이전트로 구조를 읽어내고 “껍데기+WebView+알림”이라는 뼈대를 파악한 뒤 재설계했습니다. 제로에서가 아니라, 실물을 이해하고 다시 만드는 방식입니다.
서명 키를 이어받지 못하면 모든 사용자가 업데이트할 수 없다애플리케이션Android는 같은 서명 키로 서명한 것만이 “업데이트”로 전달됩니다. 약 10년 전인 2016년에 발급된 키를 찾아내 계승하고, 인증서 지문이 완전히 일치하는 것을 확인했습니다. 신규 설치가 아니라 업데이트로 배포할 수 있는 상태를 확보했습니다.
등록 API가 암호화 통신을 필수로 하고 있었다통신 경로구 서버는 평문 접속을 막는 설정이었습니다. 단말 등록이 통과되지 않는 원인의 대부분이 여기에 있었습니다. 검증을 무효화해 우회하지 않고, 앱 쪽을 암호화 통신 전제로 통일해 해결했습니다.
빌드 환경이 현행 스토어 요건을 따라가지 못했다애플리케이션낡은 실행 환경은 스토어가 받아주지 않습니다. 빌드 기반(빌드 도구·언어·실행 환경)을 최신으로 끌어올려 서명된 배포 형식으로 출력할 수 있는 지점까지 재정비했습니다.

남길 것과 다시 만들 것을 분명히 나눴습니다.

할 일은 “전부를 새것으로 만드는 것”이 아닙니다. 살릴 수 있는 자산은 그대로 살린다. 분해하면 이렇게 됩니다.

항목이전재구축 후
알림 경로구세대 배포 기반
(서비스 종료·발송 불가)
현행 배포 기반(FCM)으로 이전
앱 껍데기세대가 오래된 네이티브 구현최신 네이티브 구현으로 재생성
화면(내용)기존 웹 서비스를 표시그대로 유지(회원 자산 보존)
서명 키2016년 발급동일한 키를 계승(업데이트로 배포)
회원·단말 데이터약 14,000대 단말이 등록 완료그대로 인계

재구축 자체는 AI 에이전트로 단숨에 진행했습니다. 다시 만든 앱은 가상 단말에서 알림 토큰 취득 → 서버 등록 → 실제로 알림 도착까지의 일련의 흐름을 끝까지 통과시켜 왕복이 성립하는 것을 확인했습니다. 산출물은 그대로 배포할 수 있는 서명된 형식입니다.

“재구축”과 “재배포”는 최소로 설계합니다.알림의 부활은 사실 서버 쪽 이전만으로도 점화할 수 있도록 준비했습니다. 앱 재배포는 한 번으로 끝내고, 이후에는 단말을 건드리지 않고 알림을 운용으로 되돌릴 수 있습니다 — “사용자에게 몇 번이고 업데이트를 부탁하지 않는다”는 점은 회원 수가 많은 서비스일수록 효과가 큽니다.

돌아가지 않는다고 하는 앱의 대부분은 전손이 아닙니다. 멈춰 있는 일부 배선과 이어받아야 할 키만 확보하면, 실물을 살린 채 현대의 기반으로 되돌릴 수 있습니다. iOS 편(실록⑦)에서는 회원의 다수를 차지하는 다른 한쪽 플랫폼과, 두 OS 공통의 “낡은 서버를 그대로 두고 알림을 현대화한” 이야기를 씁니다.

※ 본 기사는 실제 프로젝트를 바탕으로 기업·서비스를 특정할 수 없는 범위에서 일반화해 기술했습니다. 수치는 2026년 8월 시점의 실측에 근거한 개략값입니다. 소요 기간·작업 내용은 앱의 구성에 따라 다릅니다.

카테고리:

태그:

🌐 한국어