왜 이렇게 채용공고 우대사항에 클린 아키텍처가 있을까? | 2025-05-03
이전에 티스토리에서 클린 아키텍처가 반드시 필요한가에 대해 작성했어요.
해당 게시글에 너무 간단하게 설명을 하고 있어서 이를 더 구체적으로 설명하려고 해요.
클린 아키텍처(Clean Architecture)는 다음과 같아요.
생략한 내용이 굉장히 많지만 여러 상황에 따라 쉽게 변경하기 위한 설계 방식
이라고 정리할 수 있어요.
일반적으로 얘기하는 클린 아키텍처와 모바일의 클린 아키텍처는 차이가 있어요.
Dependeny Rule
을 보시면 외부에서 내부로 의존성이 향하고 있어요. (반대 X)
즉, 가장 내부에 있는 Entities
는 모든 것을 알지 못해요.
Domain
레이어는 비즈니스 규칙으로 잘 변경되지 않아요.
반면에 Data
와 Presentation
레이어는 변경이 잦아요.
클린 아키텍처에 자세한 내용은 출처를 확인해주세요! (클린 아키텍처)
일단 클린 아키텍처는 대충 알겠는데 왜 채용공고에 언급이 많을까요?
모바일 개발자는 개발할 때 선행되어야 하는 2가지 조건이 있어요.
위 작업이 모두 끝나야 모바일 개발이 완료 될 수 있어요.
그러면 위 작업이 끝나기 전까지 아무 작업도 하지 못할까요?
비즈니스 로직은 언제나 작성할 수 있어요. (기획 또는 와이어프레임이 있는 한)
디자인이 완성 되었다면, 서버 응답 없이 유즈 케이스와 엔티티를 통해 UI를 그릴 수 있어요.
이처럼 각 레이어가 독립적이여서 작업을 독립적으로 진행할 수 있어요.
클린 아키텍처를 알고 있다는 것은 의존성에 대해 잘 안다는 것이에요.
이는 iOS 개발자에게는 프로토콜 지향 프로그래밍도 어느정도 안다는 것을 의미해요.
또한 테스트 가능한 코드에 대해서도 잘 알고 있다는 것을 의미해요.
만약 단일 모듈로 클린 아키텍처를 하고 있다면 의존성 규칙이 어긋날 수 있어요.
Domain
은 Data
와 Presentation
레이어에 대해 알 수 없어야 해요.
그러나 단일 모듈이라면 private
으로 선언하지 않은 이상 Data/Presentation
레이어를 모두 알 수 있어요.
따라서 우리는 모듈화를 통해 물리적으로 분리 시켜야 해요.
클린 아키텍처는 굉장히 좋은 설계라고 생각해요.
단순히 디렉토리만 나누는 것이 아닌 여러 좋은 패턴이 합쳐진 설계에요.
모듈화, 의존성 주입, 테스트 가능한 코드 등 여러 내용을 합친 것이 클린 아키텍처에요.
우대사항에 이것 하나만 넣어도 면접에서 질문거리가 굉장히 많을 거에요.