클린 아키텍처(Swift)

GomHyeok·2024년 5월 25일

회고록

목록 보기
10/18

클린아키텍처를 만든 사람은? 밥아저씨...
라고 하면 다들 뭔소리를 하는것인가 할수 있지만 진짜 밥아저씨다. 왜냐🤫
에자일의 창시자 중 한명이자 클린 아키텍처의 창시자인 로브트.C.마틴님의 벌명이 Uncle Bob이기 때문이다.

📙 CleanArchitecture

  • SW의 구조를 Layer(계층)* 로 나눠서 관심사를 분리한 구조
  • CleanArchitecture가 가능하기 위해서는 의존규칙이 만족되어야 한다.

관심사를 분리한다는 것은 무엇일까? 바로 책임을 분리한다는 것이다 각 Layer별로 해야하는 책임이 다른 것이다

CleanArchitecture를 찾아본다면 가장 쉽게 찾을 수 있는 그림은 바로 아래의 그림이다

해당 그림의 원에서 각 층이 바로 Layer가 되는 것이다.
밖의 원이 저수준의 컴포넌트,내부가 고수준 컴포넌트를 의미한다. 여기서 중요한 것이 바로
안쪽의 계층은 바깥 쪽의 계층에 대하여 알만 안된다는 것이다!
== 안쪽에서 바깥쪽으로 의존하면 안된다! 즉 내부일수록 변화가 없어야 한다는 의미!

📚 CleanArchitecture의 구조

  1. Presentation Layer(Domain Layer를 의존)
  • 화면에 보이는 영역을담당하는 레이어
  • MVVM에서의 View와 View Model이 여기에 해당한다. + 사용자 이벤트 처리!

엥 화면을 담당하는 레이어인데 View Model이 왜있지..?
== View Model은 화면에 필요한 데이터에 집중하기 때문! 즉 View에 그려질 데이터를 만든다

  1. Domain Layer
  • Business Logic이 담겨있는 Layer -> 최대한 변경이 없어야하는 Layer
  • Entities, UseCases, Repository Interface가 해당한다.

최대한 변경이 없어야 한다 == 그래프의 가장 안쪽에 위치한 부분이다!
즉 바깥쪽은 전혀 모르고 있으며, 다른 객체를 의존하지 않는 계층이다. 그 말은 결국
== 다른 레이어의 어떤 것도 포함시키면 안된다!

  1. Data Layer(Domain Layer를 의존)
  • Repository Implementation과 하나 이상의 Data Source
  • API, Persistence DB가 속한다.

여기서 주의깊게 봐야하는 부분은 Repository Interface는 Domain Layer에 속한다는 것!

해당 구조를 사용한다면??
서버, DB ← Entity → Repo(접근 역할) ← Entity → UseCase(BL) ← Model → Present


Clean Architecture를 사용한다면 역할분리를 더 구체적으로 하여 테스트와 유지보수가 용이하다는 것을알게 되었다.
하지만 아직 Repository가 정확히 무엇을 의미하는지 Entity가 정확히 어떤 것인지는 예제 코드를 확인하며 다시 학습해야 할 것 같다는 생각이 들었다. 아마 그래서 다음 포스트는 해당 내용에 대한 한습 후 작성하게 될 것 같다!😎

profile
github : https://github.com/GomHyeok/

0개의 댓글