TCA가 무엇일까?

KANO·2023년 10월 1일

The Composable Architecture를 줄여서 TCA라고 불린다.

동작원리는 RxSwift기반의 Reactorkit과 비슷한 개념을 가지고 있다
다만 다른점이라면 TCA는 Combine 프레임워크를 기반으로 동작을 한다.
그래서 최소 iOS 13이상 지원하는 환경에서 사용할수가 있다.

TCA의 특징

상태(State) 관리
간단한 값 타입들로 어플리케이션의 상태를 관리하는 방법, 상태를 공유를 통해 화면에서 일어나는 변화(Mutation)를 다른 화면에서 즉시 관측(Observe)하는 방법을 제공합니다.

합성(Composition)
기능을 여러 개의 독립된 모듈로 추출하는 방법, 이 모듈을 다시 합쳐서 거대한 기능을 작은 컴포넌트의 집합으로 구성하는 방법을 제공합니다.

사이드 이펙트(Side Effects)
어플리케이션 바깥세상과 접촉하는 작업을 테스트할 수 있고 이해하기 쉽게 작성하는 방법을 제공합니다.

테스팅(Testing)
아키텍처 내부의 기능을 테스트하는 방법뿐만 아니라 여러 파트로 구성된 기능의 통합 테스트를 작성하는 방법, 사이드 이펙트가 어플리케이션에 끼치는 영향에 대해 전체 테스트를 작성하는 방법을 제공합니다. 이 테스트 방식은 여러분의 비즈니스 로직이 예상대로 잘 작동하는지에 대한 강한 보증도 제공합니다.

인체 공학(Ergonomics)
위의 내용을 가능한 한 적은 개념의 간단한 API로 이루는 방법을 제공합니다.

TCA 기본 구성

State
기능이 로직을 수행하고 UI를 렌더링 하기 위해 필요한 데이터 타입

Action
사용자 작업, 알림, 이벤트 소스 등 기능에서 발생할 수 있는 모든 타입

Environment
기능에서 API 클라이언트와 같이 사이드 이펙트를 동반하는 모든 디펜던시들을 가지고 있는 타입.
최신 버전에서는 사리진것 같다.

Reducer
주어진 Action으로 State를 업데이트 하기 위한 로직이 구현된 함수로, API 요청과 같이 실행해야 하는 모든 결과를

Effect
타입으로 반환해야 하는 책임을 수행.

Store
기능을 실제로 실행하는 런타임. 모든 사용자 작업을 Store로 전송하여 Store에서 Reducer와 Effect를 실행. State변화를 관찰하여 UI를 업데이트.

profile
개발자이에요

0개의 댓글