iOS 앱 개발 부트캠프/퀘스트

앱 개발에서 아키텍처가 중요한 이유는?

iosstudyletsgo 2024. 9. 19. 18:14

[선정 아티클]

https://medium.com/@justfaceit/i-왜-모바일-앱-개발에서도-아키텍처가-중요한가-b6616d586575

 

I. 왜 모바일 앱 개발에서도 아키텍처가 중요한가?

최근 수년간 스마트폰 하드웨어 사양의 급격한 향상과 다양한 모바일 비즈니스의 출현으로 인해, 과거와는 비교하기 어려울 정도로 모바일 앱의 복잡도가 높아지게 되었습니다. 이로 인해 자연

medium.com

 

[주제]

  • 모바일 앱 개발에서 아키텍처의 중요성

[요약]

  1. 백엔드 프리젠테이션 로직이 단순해지고 있다 → 프론트는 더 복잡해지고 있다
    • 웹 프론트엔드가 Single Page Application(전체 웹 사이트가 JavaScript framework를 이용해서 하나의 앱처럼 동작하는 구조)의 형태가 일반화 되면서 서버에서 프리젠테이션 로직을 처리할 필요가 없어지는 추세이다.
    • 단순 데이터 저장 및 가공 정도 이상의 역할이 필요 없는 경우도 많아서 Node.js 등으로 간단히 서버를 구현하거나 아예 Firebase 등을 써서 서버를 직접 구현하지 않는 서버리스 형태로 백엔드를 구성하는 일도 많아졌다.
  2. 백엔드 환경에서 잘 들어맞는 MVC구조가 모바일에는 별로 큰 도움이 안된다
    • MVC구조(Model - View - Controller구조)에서는 보통 모델 및 도메인 계층에서 대부분의 구현이 이루어지고 뷰의 경우 외부에 보여줄 부분에 대해서 단순하게 정의를 하며 컨트롤러는 양측의 가교 역할을 하게 된다. Spring, Ruby on Rails등 많은 프레임웍이 이런 구조를 사용해 대규모의 백엔드 시스템도 깔끔하게 만들 수 있게 해준다.
    • 하지만 모바일의 경우 플랫폼 자체에서 M-V-C를 명확하게 구분해주지 않는다는 문제가 있다. 뷰의 경우 화면 정의만 제공하는 게 전부이고 UI 로직이 들어갈 여지가 별로 없고, 모델도 레이어 구분을 위한 별도의 구조를 제공하지 않고 개발자 재량에 맡기고 있는 등 컨트롤러가 대부분의 역할을 떠안는다.
  3. 모바일 환경만의 독특한 특성들
    • 모바일 앱의 경우 뷰 상태가 매우 복잡하고 비동기 처리(프로세스의 완료를 기다리지 않고 동시에 다른 작업을 처리하는 방식)가 많은 특성이 있다.
    • 순차적인 시간 흐름으로 뷰 로직을 처리하는 것이 불가능한 경우가 많아 심플하게 코드를 짜기 어렵다. 이 때문에 잘 구조화되지 않은 형태로 계속 코드를 짜게 되면 어느 순간 본인이 짠 코드조차도 바로 알아보기 힘든 경우가 생긴다.
    • 이런 문제들로 인해 하나의 컨트롤러 파일이 수천줄을 넘는 경우가 흔해진데다 하나의 컨트롤러 내 로직의 흐름도 단순하지 않기 때문에 코드를 이해하는 것조차 힘들어지는 일이 흔히 일어나게 된다.

따라서 모바일 아키텍처를 사용하면 다음과 같은 효능을 기대할 수 있다.

  • 개발 속도 : 몇 배는 빨라진다.
  • 유지보수성 : 1년 뒤에 다시 코드를 봐도 즉시 어디를 고쳐야 하는지 알아차릴 수 있고 앱 전체에 영향을 줄 수 있는 기능도 쉽게 대응 가능하다.
  • 확장성 : 기능 확장에 대한 두려움이 거의 없어진다. 기획자가 급격한 사양 변경을 요청해도 대처할 수 있다.
  • 코드 품질 : 다른 엔지니어에게 코드를 보여줘도 창피하지 않는다.
  • 가독성 : 별 문서 없이도 금방 프로젝트 구조의 이해가 가능하다. 일이 많아지면 언제라도 다른 엔지니어에게 일을 넘길 수 있다.

[인사이트]

코드를 짜다보면 무슨 코드인지 본인도 헷갈려서 주석을 많이 달곤 하는데 주석만 가지고는 오류를 찾고 유지보수 하기가 어려운데다가 새로운 기능을 추가하기도 어렵기 때문에, 혼자서 아주 간단한 코드를 짤 때면 몰라도 팀 단위로 프로젝트를 수행하기 위해선 아키텍처 구조에 대해 잘 이해할 필요가 있는 것 같다.