본문 바로가기

개발/Swift(IOS)

Clean Architecture + MVVM(ReactorKit) - 1

반응형

그 동안 길다면 길고 짧다면 짧은 시간동안 조금 더 유연한 소프트웨어를 만들기 위해

여러가지 구조들을 경험하게 되었습니다.

 

MVC -> MVVM -> MVVM-C?(내마음대로 Coordinator) -> ReactorKit

 

구조를 변경하면서 UI의 변경에 대하여 유지보수가 수월해지는 느낌은 있었으나

아직 비지니스 로직 부분에서의 변경과 확장성에 있어서 많은 불편함이 있는 것 같아

Clean Architecture를 공부하고 적용해 보기로 마음을 먹었어요. :)

 

클린 아키텍처란?

클린 아키텍처는 로버트.C.마틴(aka.밥 아저씨)가 2012년 8월에 블로그에 클린 아키텍처라는

제목으로 글을 기재하면서 알려지게 되었는데요

로버트 마틴에 대하여 설명하자면 우리가 알고 있는 수많은 개발 방법론들을 창시한 분이라고 보시면 돼요.

로버트 마틴의 저서들 <- 해당 링크로 이동하면 로버트 마틴의 저서들을 확인 할 수 있어요

 

 

 

아키텍처를 찾아본 사람이라면 한 번 쯤은 봤을 법한 이미지 일 거에요.

출처 - https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

원이 그려져 있네요 ㅎㅎ

무슨 소리인지 원.....

 

너무 겁먹지 말고 이제부터 하나하나 알아가보도록 합시다.

 

Dependency Rule

  • 종속성(의존성)은 화살표 방향대로 원의 바깥에서 안쪽으로만 향한다.
  • 안쪽의 원은 바깥원에 대하여 알지 못 한다

 

1. Entities

  • 엔티티는 그 어떠한 상위 계층에 대해서도 알지 못해야 된다.
  • 엔티티는 비지니스의 근간이 되는 규칙들을 정의하는 부분입니다.
  • 가장 높은 수준의 규칙들이 정의 되는 부분으로써 웬만해서는 변동성이 없는 부분입니다.

2. Use Cases

  • 어플리케이션별 규칙들이 정의 돼 있는 곳 입니다.
  • 어플리케이션(시스템)에서 사용되는 모든 비지니스 로직들을 캡슐화하고 정의한다.

3. Interface Adapters(Presentation Layer)

  • Entities, Use Cases애 가장 알맞은 포맷 형태에서 DB등과 같은 외부 프레임워크에 가장 알맞은 포맷으로 변환 되는 곳
  • 계층에는 외부의 어떠한(외부 서비스) 형식에서 유스케이스와 엔티티에서 사용될 수 있는 내부 형식으로 데이터를 변환하기 위해 필요한 기타 모든 어댑터도 둘 수 있다.

4. Frameworks & Drivers

  • Database, Framework(Web Framework, App Framework)
  • 안쪽의 원과 통신할 연결 코드 이외에는 별다른 코드 작성을 하지 않는다.

 

5. Crossing boundaries(각 경계간의 교차)

해당 다이어그램의 분홍선을 보게되면 UseCase가 Presenter를 호출을 할 수도 있는데

Dependency Rule에 따르면 Use Case는 Presenter를 알아서는 안 된다.

그래서 Output이라는 인터페이스를 만들고 Presenter는 해당 인터페이스를 구현하며

Use Case는 이 인터페이스를 호출 하는 형태로 구현을 하게 된다.

 

 

클린 아키텍처의 기본적인 개념은 이러합니다.

해당 내용은 모바일 어플리케이션에 곧바로 적용하기에는

조금 어려울 수도 있다

 

다음 장에서는 아키텍처가 iOS에서 어떤 식으로 쓰일지 구현을 해보며

알아가 보도록 해요 :)

 

 

 

참고

https://medium.com/@justfaceit/clean-architecture%EB%8A%94-%EB%AA%A8%EB%B0%94%EC%9D%BC-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8F%84%EC%99%80%EC%A3%BC%EB%8A%94%EA%B0%80-1-%EA%B2%BD%EA%B3%84%EC%84%A0-%EA%B3%84%EC%B8%B5%EC%9D%84-%EC%A0%95%EC%9D%98%ED%95%B4%EC%A4%80%EB%8B%A4-b77496744616

 

Clean Architecture는 모바일 개발을 어떻게 도와주는가? - (1) 경계선: 계층 나누기

How Clean Architecture Assists Mobile Development - Part 1. Boudaries: Defining Layers

medium.com

https://zeddios.tistory.com/1065

 

Clean Architecture

안녕하세요 :) Zedd입니다. Zedd신곡 나왔는데...엄청 좋아요 갓제드ㅠ 이거들으면서 쓰는 중 오늘은..클린 아키텍쳐 + MVVM에 대해서 공부를 해보려고 합니다! 클린 아키텍쳐는 한번쯤은 들어보셨을

zeddios.tistory.com

https://blog.coderifleman.com/2017/12/18/the-clean-architecture/

 

The Clean Architecture

이 문서는 로버트 C. 마틴의 The Clean Architecture를 한국어로 번역한 문서입니다. 그의 좋은 의도와 생각이 널리 전파되길 바랍니다

blog.coderifleman.com

 

반응형