브리프유 브리프유 로그인
자청의 유튜브 추출기

유튜브 영상의 자막과 AI요약을 추출해보세요

AI 채팅

BETA

클린 아키텍처, 진짜 왜 필요할까? MVC/MVVM 개발 고민 해결!

게시일: 작성자: 자청의 유튜브 추출기

아키텍처, 왜 써야 할까? (중학생 눈높이 설명)

개발할 때 코드들을 잘 정리하고 구조화하는 걸 '아키텍처'라고 해. 이걸 잘 쓰면 코드를 나중에 고치기도 쉽고, 테스트하기도 좋고, 다른 데서 다시 쓰기도 좋고, 기능을 추가하기도 쉬워져. 그래서 개발자들은 아키텍처를 열심히 공부하는 거야. 취업에도 중요하고!

근데 말이야, 아키텍처를 쓴다고 해서 무조건 좋은 건 아니래. 잘못 쓰면 오히려 아무 쓸모가 없다는 거지.

MVC, MVVM... 뭐가 문제였을까?

대표적인 아키텍처인 MVC를 생각해 보자.

  • MVC (Model-View-Controller): 사용자가 뭘 누르면(Controller) 데이터(Model)가 바뀌고, 바뀐 데이터를 화면(View)에 보여주는 방식이야. 이론적으로는 깔끔해 보이지?
  • 현실은? 막상 코드를 짜다 보면 Controller가 너무 많은 일을 하게 돼서 '뚱뚱해지는' 경우가 많아. 이걸 'Massive View Controller'라고 부르기도 해.

그래서 등장한 게 MVVM이야.

  • MVVM (Model-View-ViewModel): 사용자가 뭘 하면(View) ViewModel한테 알려주고, ViewModel이 데이터를 바꾸고, 바뀐 데이터를 View가 알아서 보여주는 방식이야. Controller보다 ViewModel이 하는 일이 줄어들어서 코드가 더 깔끔해진다고 생각했지.

그런데 말이야, MVVM도 쓰다 보면 ViewModel이 또 뚱뚱해지는 경우가 생긴대. 😅

그래서 뭘 해야 할까? 바로 '클린 아키텍처'!

우리가 아키텍처를 쓰는 이유는 코드를 구조화하고, 유지보수하기 쉽게 만들고, 테스트하기 쉽게 만들고, 확장하기 쉽게 만들기 위해서였잖아? 근데 현실은 기대와 다르게 생산성이 떨어지고, 작은 변경에도 앱 전체가 흔들리는 경우가 많아.

이게 아키텍처 자체의 문제는 아니래. 우리가 '클린 아키텍처'라는 걸 제대로 쓰지 않아서 그렇다는 거지. 클린 아키텍처는 코드를 더 극단적으로 분리시켜서 이런 문제들을 해결해 주는 친구야.

클린 아키텍처, 어떻게 쓰는 걸까?

클린 아키텍처는 그림으로 보면 동심원처럼 생겼어. 이걸 계층이라고 부르는데, 안쪽으로 갈수록 중요하고 잘 변하지 않는 것들이 있고, 바깥쪽으로 갈수록 자주 변하는 것들이 있어.

예를 들어, 아주 간단한 대출 앱을 만든다고 생각해 보자.

  1. 프레젠테이션 레이어 (바깥쪽): 사용자가 보는 화면(UI)이랑, 버튼을 눌렀을 때 어떤 동작을 할지 정해주는 컨트롤러 같은 것들이 여기에 있어. 이건 자주 바뀔 수 있지. 버튼 모양이 바뀌거나, 화면 디자인이 바뀌는 것처럼 말이야.
  2. 도메인 레이어 (안쪽): 앱의 핵심 기능, 즉 '대출한다' 같은 비즈니스 규칙들이 여기에 담겨 있어. 이건 절대 쉽게 바뀌면 안 되는 중요한 부분이야.
  3. 데이터 레이어 (가장 안쪽): 데이터를 저장하는 곳이야. 서버에 저장할 수도 있고, 핸드폰 안에 저장할 수도 있지. 이것도 자주 바뀔 수 있는 부분이야.

핵심은 이거야:

  • 관심사 분리: 각 계층은 자기 할 일만 해. 화면은 화면만 신경 쓰고, 핵심 기능은 핵심 기능만 신경 쓰는 거지.
  • 의존성 방향: 바깥쪽 계층은 안쪽 계층을 신경 쓸 수 있지만, 안쪽 계층은 바깥쪽 계층이 뭘 하는지 전혀 몰라도 돼. 마치 네가 친구가 뭘 하는지 몰라도 너는 너 할 일을 하는 것처럼 말이야.

이렇게 계층을 나누고 관심사를 분리하면 뭐가 좋냐고?

  • 코드 파악 쉬움: 어디에 어떤 코드가 있는지 명확하게 알 수 있어.
  • 수정 용이: 특정 부분을 고쳐도 다른 부분에 영향을 덜 줘.
  • 테스트 쉬움: 각 부분을 따로따로 테스트하기가 편해.
  • 생산성 UP!: 결국 이런 것들이 모여서 개발 생산성을 높여주고, 시간이 지나도 생산성이 떨어지지 않게 해줘.

그래서 왜 클린 아키텍처를 써야 할까?

결론적으로, 더 높은 생산성을 바탕으로 사용자에게 더 빠르고 안전하게 가치를 전달하기 위해서 클린 아키텍처를 써야 해. 이게 프로덕트 메이커로서 개발자가 해야 할 일이니까!

클린 아키텍처는 처음에는 좀 어렵게 느껴질 수 있지만, 이걸 잘 쓰면 앞으로 개발하는 데 있어서 정말 큰 도움이 될 거야. 앞으로도 클린 아키텍처에 대해 더 자세히 알아보자!

최근 검색 기록