먼저 이번 글에서는 코드가 등장하지 않는다.
이번 오적용기가 나에겐 나름 Room을 제대로 사용해본 경험이라 작성해둔 코드가 아쉽기도 하다.
하지만, 언젠가는 갈아엎어야 될 코드가 되어버렸다.
왜 그렇게 됐을까?
현재 상황 파악의 중요성
내가 연동해야할 백엔드는 어떤 상황인가?를 너무 간과했다.
대부분 앱 서비스는 회사에서 서버를 두고 앱이 해당 서버와 통신하게 된다.
그리고 해당 백엔드에서 가져온 데이터로 로컬 DB를 구성해 앱에서 사용한다.
하지만, 나의 경우는 각각 지역의 로컬 서버가 존재하고
해당 서버에서 DB 파일을 다운로드받아 Room으로 사용하는 것이었다.
더욱 심화되는 문제와 해결 불가능한 상황까지
각 로컬 서버는 모두 같은 Table 버전을 갖고 있을 것이라 생각했었다.
하지만 로컬 서버들은 각자 다른 DB 버전을 가지고 있었다.
그래서 하나의 Entity를 선언해도 해당 Entity가 유효하지 않은 경우가 있었다.
그럼 Table 형식을 파악해서 Upgrade, Downgrade를 지원해주면 되잖아~
라고 생각했다.
근데 각각의 DB 버전 명세가 없었다.
그럼 모든 서버에 접속해서 Table 형식을 확인한 후 버전에 맞게 업다운그레이드를 지원하는 것이 가능한가?
현재 버전까지는 가능하긴 하다.
(엄청난 시간이 걸리겠지만 말이다.)
다음에 로컬 서버가 업데이트되면 또 다시 같은 상황이 반복된다.
그럼 앱 먼저 업데이트를 해야하나?
이건 사실 불가능하다.
과연 해결책은 무엇일까
이건 아직 실행하지 않은 내 머릿속으로 생각만하고 있는 해결책을 적어본 것이다.
일단 Room을 사용하지 않고 SQLiteOpenHelper로 매번 DB를 생성해서 특정 column 값을 가져와 사용한다.
이 때 발생하는 에러는 따로 처리가 필요할 듯하다.
되새김질을 하며
내가 개발하는 상황이 어떤 상황인지 파악하는 것도 중요하다는 생각이 들었다.
상황에 맞는 라이브러리 적용이 고려되어야 한다.
예전 FCM 관련 글에서도 백엔드 측 코드에 의해 포그라운드 푸시가 원하는 대로 동작하지 않는 경우가 있었다.
무조건 다른 사이드를 의심하라는 의미는 아니지만 조심해야할 이유는 충분하다.
'Android' 카테고리의 다른 글
Android Library Manifest Attributes Replace (0) | 2024.07.04 |
---|---|
Android Talkback Ordinal Number(ScreenReader 서수 읽기) (1) | 2024.07.03 |
Android AES-128 Encryption with Random IV in Java (0) | 2024.06.29 |
Android Progressbar not spinning(not animated) (0) | 2024.06.26 |
Android White Screen Before Splash Screen Resolved (0) | 2024.06.25 |