Architecture
앱의 구성 요소들의 역할과 책임을 분리하는 방법
목적
- 설계의 구조와 관점을 제공
- 일반적인 문제에 대한 일반적인 해결책을 제공 → 설계와 구현의 재사용을 촉진
- 성능, 확장성, 안정성, 보안 등과 같은 비기능적 요구 사항을 만족시키기 위한 가이드라인 제공 📌
- 시스템의 구조를 이해하고 변경 사항을 예측하게 도와, 유지 보수 과정 간소화 📌
- 시스템의 성장과 변화에 쉽게 대응할 수 있는 설계를 갖추게 함
- 협엽을 손쉽게 할 수 있게 함 📌
종류
- MVVM (Model - View - ViewModel)
- MVC (Model - View - Controller)
- VIPER (View - Interactor - Presenter - Entity - Routing)
- Ribs
MVC Architecture

Model
- 데이터를 처리하는 역할
→ 앱에서 사용되는 데이터를 다루는 영역
→ 데이터의 저장, 수정, 삭제 담당
→ 데이터의 상태 변경에 대한 알림을 View or Controller에 전달
View
- 사용자에게 보여줄 UI를 표시
→ 앱 사용자가 보게 되는 부분 담당
→ 데이터를 표시하고 사용자의 입력을 받아 처리
→ 데이터의 변경을 감지하여 변경된 내용을 화면에 반영
Controller
- Model 과 View 사이의 인터페이스 역할
→ Model 과 View 사이에서 데이터를 주고받음
→ View에서 발생하는 이벤트를 처리, Model을 업데이트
→ Model에서 변경된 내용을 View에 전달하여 화면 업데이트