[5]사전퀘스트_왜 모바일 앱 개발에서도 아키텍처가 중요한가?

동그라미·2024년 10월 14일
1
post-custom-banner

주제

왜 모바일 앱 개발에서도 아키텍처가 중요한가?
링크텍스트


목록

  • 백엔드 프리젠테이션 로직이 단순해지고 있다, 프론트는 더 복잡해지고 있다.
  • 백엔드 환경에서 잘 들어맞던 MVC구조가 모바일에는 별로 큰 도움이 안된다.
  • 모바일 환경만의 독특한 특성들

아티클 요약

백엔드 프리젠테이션 로직 단순화, 프론트엔드 복잡화

  • 웹 프론트엔드는 SPA(Single Page Application) 형태로 발전하여 프리젠테이션 로직을 서버에서 처리할 필요가 줄어들었다. JavaScript 프레임워크를 사용해 클라이언트에서 앱처럼 동작하며, 서버는 데이터를 저장하고 가공하는 역할만 남았다.
  • 서버리스(Serverless) 아키텍처와 Node.js, Firebase와 같은 도구들이 백엔드를 간소화하고 있다.

백엔드 MVC 구조의 한계

  • MVC(Model-View-Controller) 구조는 전통적인 백엔드 개발에서는 유용하지만, 모바일 환경에서는 여러 문제점이 있다.
  • 모바일 플랫폼(안드로이드, iOS)은 MVC를 명확하게 구분하지 않으며, UI 정의와 로직 처리에서 제약이 많다.
    - 뷰(View): 안드로이드는 XML, iOS는 스토리보드나 XIB로 화면을 정의하는 정도이며, UI 로직이 제한적이다.
    - 컨트롤러(Controller): 대부분의 로직을 컨트롤러가 맡고 있어, 안드로이드의 액티비티(Activity)나 iOS의 뷰컨트롤러(ViewController)는 앱의 주요 역할을 수행한다.
    - 모델(Model): 데이터 처리는 로컬 DB를 이용해 SQLite, 룸(Room), 코어 데이터(CoreData) 등을 사용하지만, 모델 계층의 구분이 불명확하여, 개발자의 판단에 따라 복잡한 코드가 만들어진다. 이로 인해 코드 중복이 발생하거나 모델과 뷰, 도메인 로직이 혼합되는 문제가 발생한다.

모바일 환경의 특성

  • 모바일 앱 개발은 자원 제약과 복잡한 라이프 사이클 관리 외에도, 프리젠테이션 로직의 복잡성이 가장 큰 문제
  • 모바일 앱에서는 뷰 상태가 복잡하고 비동기 처리가 많기 때문에, 순차적이고 간단한 코드 작성이 어려워진다. 이로 인해 컨트롤러(액티비티, 뷰컨트롤러) 파일이 수천 줄에 달하는 경우가 많고, 복잡한 로직 흐름 때문에 코드 이해가 힘들어진다.

해결책: MVP, MVVM, 클린 아키텍처(Clean Architecture)

  • MVP(Model-View-Presenter), MVVM(Model-View-ViewModel), 클린 아키텍처는 이러한 문제를 해결하기 위한 구조적 접근 방식 이를 통해 다음과 같은 장점이 기대된다.
    - 개발 속도: 코드 작성 속도가 빨라진다.
    - 유지보수성: 1년 뒤에도 코드를 쉽게 이해하고 수정 가능하다.
    - 확장성: 기능 추가 시 두려움 없이 대처할 수 있다.
    - 코드 품질: 다른 엔지니어와 코드 공유 시 자부심을 느낄 수 있다.
    - 가독성: 프로젝트 구조가 명확해 다른 엔지니어가 쉽게 이해하고 작업을 넘길 수 있다.
    더 짧게 요약하자면, 모바일 앱 개발에서 MVP, MVVM, 클린 아키텍처 같은 패턴을 적용함으로써 유지보수성과 확장성을 개선하고, 복잡한 로직을 보다 효율적으로 관리할 수 있다는 점을 강조한다. 이를 통해 비대해지는 모바일 앱의 개발 과정을 보다 원활하게 할 수 있다는 메시지를 전달하고 있다.

인사이드

어떤 일이든 장점이 있다면, 단점도 같이 공존한다고 생각한다.
모바일 앱 개발 과정을 보다 원활하게 할 수 있다는 소식은 개발자가 될, 개발자인 분들에게 마냥 긍정적인 소리만은 아닐 것 같다.
누군가에 의해 달라지는 긍정적인 소리가 아닌 나에게 긍정적인 측면으로 닿을 수 있는 날이 있을때까지 열심히 해야겠다.

profile
맨날 최선을 다하지는 마러라. 피곤해서 못산다.
post-custom-banner

0개의 댓글