TCA는 The Composable Architecture의 약자로, 값 타입에 기반하여 각 객체를 모듈화하고 애플리케이션 전체의 상태를 일관적으로 관리할 수 있게 표준을 제안합니다. TCA의 기본 아이디어를 캐치하고 간단하게 카운팅 앱을 구현해보겠습니다.
TCA의 구조도를 보면 아래와 같습니다.

출처: ‣
데이터의 흐름을 추적하면 View → Store → Model → View로 순환하는 구조입니다. 즉, 단방향 아키텍처입니다. UIKit의 Reactorkit을 사용해보신 분이라면, 매우 익숙한 아키텍처입니다.
다만, TCA에서는 Effect라는 도메인이 눈에 띕니다. 외부의 서비스가 필요할 경우, Reducer는 Effect를 리턴합니다. 예를 들어, 네트워크 통신과 같은 비동기 Task가 이에 해당합니다. Effect는 실패와 성공의 케이스로 분기될 수 있습니다. 각 케이스에 맞게 다시 Action을 선택해 State를 변경합니다. 이는 추후 개별적으로 설명드리겠습니다.
공식 문서에 따르면, 아래의 4가지 도메인을 정의합니다.
Effect 값을 반환합니다.