https://medium.com/@justfaceit/i-왜-모바일-앱-개발에서도-아키텍처가-중요한가-b6616d586575
최근 수년간 스마트폰 하드웨어 사양의 급격한 향상과 다양한 모바일 비즈니스의 출현으로 인해, 과거와는 비교하기 어려울 정도로 모바일 앱의 복잡도가 높아지게 되었다.
그런데 잘 생각해보면 아무리 모바일 개발이 복잡하다 한들, 백엔드 서버 시스템에 비해서 엄청난 코드량을 쓰지도 않는 것 같은데 왜 이렇게 다양한 아키텍처에 대한 요구가 생기게 된걸까?
1. 백엔드 프리젠테이션 로직이 단순해지고 있다 -> 프론트는 더 복잡해지고 있다.
모바일 실행환경의 성능 향상과 동시에 웹 프론트엔드도 Angular를 시작으로 소위 Single Page Application의 형태가 일반화 되면서 서버에서 프리젠테이션 로직을 처리할 필요가 없어지는 것이 현 추세이다.
단순한 데이터 저장 및 가공 정도 이상의 역할이 필요없는 경우도 많아서 Node.Js등으로 간단히 서버를 구현하거나 Firebase 등을 사용해서 서버를 직접 구현하지 않는 서버리스 형태로 백엔드를 구성하는 일도 많아졌다.
2. 백엔드 환경에서 잘 들어맞던 MVC 구조가 모바일에는 별로 큰 도움이 안된다.
Model View Controller
마치 레고 블럭처럼 비즈니스 로직의 부품을 제공한다.
많은 프레임웍이 이런 구조를 이용해서 대규모의 백엔드 시스템도 깔끔하게 만들 수 있게 해준다.
그런데 모바일 환경의 경우 애초에 플랫폼 자체에서 M-V-C 자체를 명확하게 구분해주지 않는다는 문제가 있다.
View - 안드로이드의 경우 XML 형태로, iOS의 경우 스토리보드 및 XIB로 화면정의를 제공하는게 전부. UI로직이 들어갈 여지가 별로 없다.
Controller - 뷰 레벨에서 제공하는 기능의 제약으로 인해 남은 역할은 컨트롤러가 모두 떠안는 구조가 되었다.
Model - 로컬 DB를 위해서 안드로이드는 SQLite와 함께 룸(Room)을, iOS는 SQLite와 함꼐 코어데이터(CoreData)를 공식적으로 제공하고 있다.
모델 레이어의 구분을 위한 별도의 구조를 제공하지는 않고 있고, 개발자의 재량에 맡겨두고있다.
3. 모바일 환경만의 독특한 특성들
모바일 환경 자체의 특성에서 오는 문제도 있다.
자원의 한계, 라이프 사이클 처리의 복잡함 등 많은 문제가 있으나 가장 큰 문제는, 프리젠테이션 로직 자체의 복잡도에 있다.
모바일 앱의 경유 뷰 상태가 매우 복잡하고 비동기 처리가 많은 특성이 있다.
일련의 순차적인 시간 흐름으로 뷰 로직을 처리하는 것이 불가능한 경우가 많기 때문에, 심플하게 코드를 짜는 것이 쉽지 않다.
이런 문제들로 인해 하나의 컨트롤러 파일이 수천줄을 넘는 경우가 흔해진데다, 하나의 컨트롤러 내의 로직의 흐름도 단선적이지 않기 때문에 코드를 이해하는 것 조차도 힘들어지는 비극이 흔히 일어나게 된다.
그래서 MVP와 MVVM 그리고 클린 아키텍처를 중심으로 나날히 비대해져 가는 모바일 앱 개발을 보다 효율적으로 할 수 있다.
인사이트
점점 더 혼잡해지는 모바일 앱 개발에서, MVP와 MVVM 아키텍처를 통해 좀 더 효율적으로 코드를 관리할 수 있고 좀 더 효율적인 코드를 작성할 수 있기 때문에 모바일 앱 개발에서도 아키텍처가 매우 중요한 것 같다.
'내일배움캠프 iOS 5기' 카테고리의 다른 글
개발자를 위한 정보검색 팁 (1) | 2024.09.19 |
---|---|
비전공자도 개발자로 취업할 수 있을까? (0) | 2024.09.13 |
개발자의 네가지 기본 소양 (0) | 2024.09.11 |
성장하고 싶은 사람이 해야하는 인지적 활동. (0) | 2024.09.10 |
내배캠 iOS 5기 스타터 노트 (3) | 2024.09.09 |
살아남는 iOS 개발자가 되기 위해 끊임없이 노력하고 있습니다.