기술 스택 - siwonkim0/ios-project-manager GitHub Wiki
기술 스택
UI | 이벤트 처리 | 의존성 관리 도구 | Local DB | Remote DB |
---|---|---|---|---|
RxCocoa | RxSwift | CocoaPods | Realm | Firebase |
RxCocoa
Uikit에선 UI Components와 Datasource를 바인딩할 때 delegate 패턴을 사용하는데, RxCocoa를 도입하면 위같은 과정없이 간결한 코드로 바인딩을 할 수 있다는 장점을 보고 사용하였습니다.
RxSwift
비동기 코드를 비교적 깔끔하고 일관성있게 작성할 수 있고, Callback 지옥을 벗어날 수 있으며,
이번 프로젝트에서 적용할 MVVM 패턴과 같이 사용하면 의존도를 많이 낮출 수 있다는 장점을 보고 사용하였습니다.
FireBase, Realm
가장 대중적이라고 생각하였습니다.
이전 프로젝트에서 DropBox를 사용해보았는데 레퍼런스가 없어 문제 해결을 못하는 일이 변변치않게 발생하였는데, Realm, Firebase는 문제 발생시 해결에 도움이 되는 레퍼런스가 많다는 이유 하나만으로도 충분히 사용할 이유가 된다고 생각했습니다.
🐈 사용한 기술 스택에 대한 고민
1. 하위 버전 호환성에는 문제가 없는가?
Firebase | Realm |
---|---|
Firebase는 iOS 10, Realm은 iOS 9부터 지원하기 때문에 저희 프로젝트 최소 타깃인 iOS 13을 커버하기에 무리가 없다고 판단하였습니다.
2. 안정적으로 운용 가능한가?
- Google에서 제공하는 라이브러리이기 때문에 안정적이라고 생각했습니다.
3. 미래 지속가능성이 있는가?
- iOS, Android, 웹 등 다양한 플랫폼을 지원하기 때문에 향후에 확장이 용이하다고 생각하였습니다.
4. 리스크를 최소화 할 수 있는가? 알고있는 리스크는 무엇인가?
- 어떤 리스크가 있는지 잘 모르겠지만 검색해보니 속도가 느리고, 쿼리가 제한적이라고 합니다.
5. 어떤 의존성 관리도구를 사용하여 관리할 수 있는가?
Firebase와 Realm이 지원하는 의존성 관리도구에는 아래 세가지가 있습니다.
- CocoaPod
- Carthage
- SPM
이 중에서 저희는 CocoaPod을 사용하기로 결정했습니다.
6. 이 앱의 요구기능에 적절한 선택인가?
저장과 관련된 핵심 요구사항에 적합하다고 생각합니다.
- 로컬에 저장 - Realm
- 서버에 저장 및 동기화 - Firebase