클린아키텍처를 만든 사람은? 밥아저씨...
라고 하면 다들 뭔소리를 하는것인가 할수 있지만 진짜 밥아저씨다. 왜냐🤫
에자일의 창시자 중 한명이자 클린 아키텍처의 창시자인 로브트.C.마틴님의 벌명이 Uncle Bob이기 때문이다.
관심사를 분리한다는 것은 무엇일까? 바로 책임을 분리한다는 것이다 각 Layer별로 해야하는 책임이 다른 것이다
CleanArchitecture를 찾아본다면 가장 쉽게 찾을 수 있는 그림은 바로 아래의 그림이다

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

엥 화면을 담당하는 레이어인데 View Model이 왜있지..?
== View Model은 화면에 필요한 데이터에 집중하기 때문! 즉 View에 그려질 데이터를 만든다
최대한 변경이 없어야 한다 == 그래프의 가장 안쪽에 위치한 부분이다!
즉 바깥쪽은 전혀 모르고 있으며, 다른 객체를 의존하지 않는 계층이다. 그 말은 결국
== 다른 레이어의 어떤 것도 포함시키면 안된다!
여기서 주의깊게 봐야하는 부분은 Repository Interface는 Domain Layer에 속한다는 것!
해당 구조를 사용한다면??
서버, DB ← Entity → Repo(접근 역할) ← Entity → UseCase(BL) ← Model → Present
Clean Architecture를 사용한다면 역할분리를 더 구체적으로 하여 테스트와 유지보수가 용이하다는 것을알게 되었다.
하지만 아직 Repository가 정확히 무엇을 의미하는지 Entity가 정확히 어떤 것인지는 예제 코드를 확인하며 다시 학습해야 할 것 같다는 생각이 들었다. 아마 그래서 다음 포스트는 해당 내용에 대한 한습 후 작성하게 될 것 같다!😎