클린 아키텍처를 쓰는 이유

왜 이렇게 채용공고 우대사항에 클린 아키텍처가 있을까? | 2025-05-03

이전에 티스토리에서 클린 아키텍처가 반드시 필요한가에 대해 작성했어요.
해당 게시글에 너무 간단하게 설명을 하고 있어서 이를 더 구체적으로 설명하려고 해요.


클린 아키텍처가 무엇인가요?


클린 아키텍처(Clean Architecture)는 다음과 같아요.

생략한 내용이 굉장히 많지만 여러 상황에 따라 쉽게 변경하기 위한 설계 방식이라고 정리할 수 있어요.




모바일에서의 클린 아키텍처


일반적으로 얘기하는 클린 아키텍처와 모바일의 클린 아키텍처는 차이가 있어요.

Dependeny Rule을 보시면 외부에서 내부로 의존성이 향하고 있어요. (반대 X)
즉, 가장 내부에 있는 Entities는 모든 것을 알지 못해요.

Domain 레이어는 비즈니스 규칙으로 잘 변경되지 않아요.
반면에 DataPresentation 레이어는 변경이 잦아요.

클린 아키텍처에 자세한 내용은 출처를 확인해주세요! (클린 아키텍처)




왜 채용공고에 클린 아키텍처에 대한 언급이 많을까?


일단 클린 아키텍처는 대충 알겠는데 왜 채용공고에 언급이 많을까요?

1. 독립적이다.

모바일 개발자는 개발할 때 선행되어야 하는 2가지 조건이 있어요.

  1. 디자인
  2. API

위 작업이 모두 끝나야 모바일 개발이 완료 될 수 있어요.
그러면 위 작업이 끝나기 전까지 아무 작업도 하지 못할까요?

비즈니스 로직은 언제나 작성할 수 있어요. (기획 또는 와이어프레임이 있는 한)
디자인이 완성 되었다면, 서버 응답 없이 유즈 케이스와 엔티티를 통해 UI를 그릴 수 있어요.

이처럼 각 레이어가 독립적이여서 작업을 독립적으로 진행할 수 있어요.

2. 의존성에 대해 반드시 알아야 한다.

클린 아키텍처를 알고 있다는 것은 의존성에 대해 잘 안다는 것이에요.
이는 iOS 개발자에게는 프로토콜 지향 프로그래밍도 어느정도 안다는 것을 의미해요.
또한 테스트 가능한 코드에 대해서도 잘 알고 있다는 것을 의미해요.

3. 모듈화도 반드시 알아야 한다.

만약 단일 모듈로 클린 아키텍처를 하고 있다면 의존성 규칙이 어긋날 수 있어요.
DomainDataPresentation 레이어에 대해 알 수 없어야 해요.
그러나 단일 모듈이라면 private으로 선언하지 않은 이상 Data/Presentation 레이어를 모두 알 수 있어요.

따라서 우리는 모듈화를 통해 물리적으로 분리 시켜야 해요.




요약하자면


클린 아키텍처는 굉장히 좋은 설계라고 생각해요.
단순히 디렉토리만 나누는 것이 아닌 여러 좋은 패턴이 합쳐진 설계에요.
모듈화, 의존성 주입, 테스트 가능한 코드 등 여러 내용을 합친 것이 클린 아키텍처에요.
우대사항에 이것 하나만 넣어도 면접에서 질문거리가 굉장히 많을 거에요.