Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Architecture] 에 대한 설명 #23

Open
insub4067 opened this issue Sep 12, 2022 · 0 comments
Open

[Architecture] 에 대한 설명 #23

insub4067 opened this issue Sep 12, 2022 · 0 comments

Comments

@insub4067
Copy link
Member

insub4067 commented Sep 12, 2022

들어가며

본 Project 는 AsyncSwift Korea 가 User 들을 위해 행사용으로 제작한 App 입니다.
Architecture 를 선택함에 있어 추후에 유지보수가 쉬운 방향으로 고민하였습니다.

Framework

사용된 기술 : SwiftUI

이유 :

  1. 유지보수의 편의성을 생각했을 때 비교적 많은 사람들이 접근 할 수 있을꺼라 생각했습니다.
  2. 추후에 디자인이나 프로젝트를 크게 엎을 경우 스프린트로 빠르게 개발할 수 있기 때문입니다.
  3. min target : ios ver 15 로 설정 하였으며 AsycImage 등 최신 component 가 사용되었습니다.

Design Pattern

사용된 기술 : MVO ( Model, View, Observed) Pattern

이유 :

  1. SwiftUI에서 사용 가능한 보다 간결한 Pattern 을 고민 하였습니다.
  2. MVVM 이라는 네이밍 보다 보다 직관적으로 기능을 표현한다 생각했습니다.

JSON Storage

사용된 기술 : GitHub Pages

요구 조건 :

  1. json 의 내용이 수정되어도 항상 고정된 주소값을 갖는다.
  2. API 혹은 Backend Deploy 없이 손쉽게 사용할 수 있을 것.

이유 :

  1. json을 수정하고 동일한 파일명으로 다시 올려도 url은 변하지 않습니다.
  2. Github Gists 를 사용하지 않은 이유는 내용이 수정될 경우 URL이 바뀌기 때문입니다

url : https://async-swift.github.io/jsonstorage/asyncswift.json

Image Storage

사용된 기술 : Firebase Storage

이유 :

  1. Project 에 다양한 사람을 초대해서 접근 권한을 줄 수 있기 때문입니다.
  2. 비교적 손쉽게 다양한 사람들에게 익숙한 플랫폼이기 때문입니다.
  3. Firebase Cloud Messaging 이 Project 에 implement 되어있으며 한 플랫폼에서 모두 관리가 가능하기 때문입니다

Notification

사용된 기술 : Firebase Cloud Messaging

이유 :

  1. Image Storage 와 더불어 하나의 프로젝트에 여러 구글 계정을 초대해 프로젝트와 관련된 정보를 한 플랫폼에서 관리할 수 있기 때문입니다.
  2. 이미 다른 프로젝트에 적용해보며 사용법과 장단점을 파악하고 있기 때문입니다.
@insub4067 insub4067 changed the title [Project Architecture] 에 대한 설명 [Architecture] 에 대한 설명 Sep 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant