Skip to content

서버리스 프로젝트, 이대로 괜찮은가 ?

yuncheol-AHN edited this page Nov 4, 2024 · 1 revision

서버리스 프로젝트, 이대로 괜찮은가 ?

문제 상황

  • 멀티 미디어를 저장할 서버없이 프로젝트 진행하는 것
  • 서버 도입 여부를 결정
    • 서버: Firebase, NAVER cloud(database, object storage), SupaBase

    • 안 쓰면 로컬 DB를 어떻게 쓸지

      로컬DB: Realm, Swift Data, Core Data, SQLite


문제 해결

1. 서버리스 + 로컬 DB를 활용하기

  • 로컬로 저장해보자 → Path를 이용해 볼 수 있지 않을까?

    1. 생각한 이유: 앱에도 저장하고 서버에도 저장하면 용량이 2배가 될 것같다.
    2. 그런데 앨범이 삭제되거나, 권한을 없애면 어떻게 할까?
    3. 앨범이 삭제되거나 권한이 없다고 사진을 안띄우면 좋지 않은 경험이 되지 않을까?

    그러나 위와 같은 의문이 들었다.

브레인스토밍: 서버 없이 로컬에 저장한다면 ?

사진이나 영상 자체를 저장

  • 로컬에 있는 Path만 저장한다.
    • (사진삭제, 접근권한 문제 → 중간에 바꾸면?)
    • 그 Path는 항상 유효함이 보장되는지?
    • 속도비교: 네트워크로 매번 저장 vs 로컬 DB로 저장했다가 한번에 저장
      • 매번 저장할 때 바뀐 부분만 저장하면 어떨까?

일기장에 사진을 저장(접근권한o) → 사용자가 설정에서 접근권한 없앰 → 일기장에 사진이 있는 페이지에 들어가면 다시 사진에 대한 접근권한 물어봄.

2. 서버리스 문제점

  1. 로컬 데이터베이스를 사용할 경우 디스크 사용량 문제
  2. 사진에 대한 Reference를 사용할 때 사진앱의 사진을 삭제 했을 때 문제
  3. 그래서, 서버 DB가 필요하다고 판단했고, Server Framework를 사용해 서버를 개발하고 Cloud Server에 올리는 건 많은 비용(시간적)이 든다고 판단

결론 ⇒ 서버를 사용하기로 함, FireBase vs Naver Cloud Platform

3. 로그인 활용

  1. 로그인 X + 서버 기기가 바뀌는 경우는 백업 식별자를 통해 백업가능
    • 유저가 백업 안 하고 앱 삭제하면 서버 관리는 어떻게 할거 ? (용량 낭비 문제)
  2. 로그인 +서버 + 백업X

결론 ⇒ 로그인 없는 서비스를 만든다. 대신 백업을 제공해줌

4. NaverCloud Object Storage 이용?

FireBase의 용량한계로 인해서 NaverCloud에서 제공하는 Object Storage를 이용하기로 함

  • 또한 백업기능의 경우 추후 추가 논의를 하기로 결정

Naver Cloud Platform: Object Storage 도입

결론

  • 로컬 DB에 저장해서 용량 2배 이벤트는 별로라 판단함
  • NCPObject Storage 도입하여 서버에 저장하는 것으로 결정
  • 로그인은 사용하지 않음, 대신 백업 기능을 추가하여 보완하고자 함

TO-DO

  • 백업 기능에 대한 이야기
  • 자동저장 기능에 대한 이야기
  • 유저가 앱 삭제해버리면 서버 용량 낭비 문제 해결
  • 디스크 캐싱 이야기
  • 캐싱-네트워킹 데이터 일관성 문제

참조 링크

https://github.com/boostcampwm-2021/iOS07-DoolDa

https://developer.apple.com/documentation/photokit/browsing_and_modifying_photo_albums

https://www.ncloud.com/guideCenter/guide/10

Clone this wiki locally