반복 설정 개발은 미루게 됐습니다.
이번에 새로운 기능으로 반복 트랜잭션을 개발하고 있었는데 난관에 부딪혔습니다.
- 반복 로직이 동작하는 시점에 대한 고민
- 여러 기기 동기화 시 반복 로직이 중복 작동할 경우에 대한 처리
- 공유된 공간에서의 반복 로직 처리
단순히 기기에만 저장되는 앱이라면 간단할 수 있는데, 현재 돈머니는 iCloud 동기화와 공유를 지원하기 때문에 이에 대한 처리가 생각할수록 복잡했습니다. 기본적인 로직과 UI는 만들었지만 안정적인 서비스를 위해 좀 더 고민이 필요하고 높은 기술이 요구된다 판단이 되었고 우선 순위에서 미루기로 했습니다.
좀 더 자세히 어떤 문제점이 생겼는지 이야기 해보려고 합니다.
우선 개발하려는 기능은 흔히 사용하는 할일앱의 반복 기능과 같다고 생각하면 됩니다.
반복 로직이 동작하는 시점
저는 반복 설정을 관리하는 Recurring이라는 모델을 만들고 startDate, endDate, nextDate 속성을 추가했습니다. 그리고 매일, 매주, 매달 등 필요 로직에 따라 nextDate를 업데이트 해가며 트랜잭션을 추가해야 하는지 여부를 판별하게 됩니다. 문제는 자동화를 위해 이 과정을 특정 시점에 처리해야하는데, “하루에 한번 앱실행시” 라든지 효율적으로 처리할 수 있는 시점에 대해 고민이 됩니다.
여러 기기 동기화 시 반복 로직이 중복 작동할 경우에 대한 처리
반복 설정을 하고 특정 시점에 트랜잭션이 추가 된다는 가정 하에 동기화 처리에 대한 문제가 생기게 됩니다.
- 아이폰에서 설정된 반복 로직에 따라 트랜잭션이 추가됨
- 아이패드에서도 동일한 반복 로직에 따라 트랜잭션이 추가되고, 아이폰에서 추가한 데이터와 동기화가 완료되면 중복된 트랜잭션이 생성될 수 있음
- 이 밖에도 동기화로 인한 여러가지 이슈가 발생할 수 있음
공유된 공간에서의 반복 로직 처리
공유된 공간에서의 반복도 일단 동기화와 비슷한 문제가 발생합니다. 그리고 반복 설정은 공간의 소유자만 가능하게 하는건 어떨가? 라는 생각도 들었어요.
그리고 이와 비슷한 패턴(트랜잭션을 자동으로 추가)의 기능을 추가할 경우 동기화에 따른 중복 데이터 처리에 대한 이슈는 항상 발생할 것이기에 그에 대한 고려를 충분히 해야겠더라구요. 예를 들어 이월기능 같은 경우도 매월 시작일에 자동으로 이월된 금액을 트랜잭션으로 추가해주어야 하는데 이 역시 중복 데이터 이슈가 발생할 수 있습니다.
이러한 중복 데이터 처리를 위해 iCloud 동기화 API에 대해 좀 더 알아보고 테스트도 많이 해봐야 할 것 같습니다. 또 해결만 된다면 비슷한 패턴의 다른 기능들에 대한 개발 속도는 한층 더 빨라질 수 있을것으로 기대합니다.
마지막으로 반복 처리 로직과 동기화 이슈에 대해 팁이나 인사이트가 있다면 알려주시면 감사하겠습니다. 개발 지식 공유해주세요~ ㅎㅎ
심플한 공유 가계부
댓글
로그인 후 댓글을 남길 수 있습니다.
아직 댓글이 없습니다.